自作キーボード

自作キーボード 部品購入ガイド

12月ですね。
この記事は、「自作キーボード Advent Calendar 2017」1日目の記事としてお送りします。

自作キーボードとは?

言葉通り、既製の完成品ではなく自分で作ったキーボードです。
大きく分けて次の2つのタイプがあります。

1.基板設計から全て作り上げるタイプ

(設計→部品の発注・購入→組み立てる→ファームウェアでキーマップなどの設定を書き込む)

2.既存のキットを購入し、組み立てるタイプ

(部品の購入→組み立てる→ファームウェアでキーマップなどの設定を書き込む)

まずは2から始めてみると良いでしょう。組み立ては手順どおりに半田付けするだけと言っても良いくらいで、難しいことはありません。

キットは種類豊富にあります。
一体型はもちろんのこと、既製品では選択肢の限られる左右分離型、キー数や配置など、好みに合わせて選べます。

(参考)レツプリ他自作キーボードまとめ – yhara.jp

どこに売ってるの?

全部入りのキットはなかなか売っていないので、複数のECサイトやお店から必要な部品を買い集めます。

もしかすると、ここが一番のネックかもしれませんね。
慣れてくると楽しい作業なのですが。

日本では入手困難だったり選択肢が限られる部品も多いので、思いきって海外通販に慣れてみるとより楽しめます。

必要なパーツの集め方

必要な部品をあえて分類すると、下記の2カテゴリに分けられます。
最初は「1.コアの部分」の大部分がセットになっているキットをベースに、不足部品を買い足す方針で進めると良いでしょう。

1.コアの部分

  • PCB
  • コントローラ(Pro Microなど)
  • ダイオードや抵抗など
  • (分割タイプの場合)左右をつなぐケーブルやソケット

など。

2.好みでカスタマイズできる部分

  • キースイッチ
  • ケース
  • キーキャップ

など。

部品の入手先

国内のお店を中心にまとめました。ご参考まで。

総合的に色々買える

  • TALP KEYBOARD(国内)
    自作キーボードに特化したECサイトです。キーキャップ、キースイッチ、電子部品類と色々揃っているようです。
    国内のサイトなので、急ぎで買い足したい部品がある時重宝しそうです。

電子部品関連

  • チップワンストップ(国内)
    分離式キーボードの左右をつなぐためのジャックや、Holtiteソケット化のための部品など、手に入りにくいパーツが揃っています。
  • マルツオンライン(国内)
    掲載されていない商品もお取り寄せできることがあります。海外から取り寄せようにも送料が悩ましい時は検討してみてはどうでしょう。店頭受け取りもできるので、お近くの方ならさらに便利ですね。
  • 秋月電子通商(国内)
    千石電商(国内)
    一般的な電気工作部品が取り揃えられています。Pro Micro(廉価版ではないもの)、ダイオードや抵抗、ハンダ関連など。
  • aitendo(国内)
    こちらも一般的な電気工作部品が取り揃えられています。国内で廉価版のPro Microが購入できる貴重なお店です。
  • DigiKey Electronics
    チップワンストップさんに近い品揃えのようです。

キースイッチ

他、キーボードキットのオプションで選択できたり、同じサイトで購入できる場合もあります。
基本的にはMX系のスイッチを選ぶことが多いでしょう。

余談ですが、キースイッチの端子はピッチが異なる上にコマのような脚もあるのでユニバーサル基板にはまりません。専用の基板か、さもなければ空中配線になります。
MX系スイッチの他、スイッチ高を抑えた「ロープロファイル」と呼ばれるMLスイッチなどもありますが、それぞれに端子の位置が異なります。PCBが対応していなければ使用できませんのでご注意ください。

4極ケーブル

4極は一般の電気店ではまずみかけません。(一般的なイヤホンなどは3極)
Amazon」さんや、「千石電商」さんでどうぞ。

キーキャップ

Amazon」さんや「TSUKUMO」さんで「キーキャップ」で検索すると、交換用キーキャップのセットがいくつかヒットすると思います。
あとは、既存のキーボードでMX系キースイッチのものがあればそこから抜いても良いでしょう。

国内では選択肢がほとんどありませんので、正直なところを言えば海外通販がおすすめです。

ケース

比較的、PCBを販売しているのと同じサイトで入手できることが多いようです。

データが公開されているならそれを元に「Ponoko」さんや「はざいや(国内)」さんなどに発注、もしくはfab施設のレーザーカッターで切ってくるなどしてもよいでしょう。
アクリル製ケースは、天板と底板で基板を挟んでネジで止める「サンドイッチ型」、これに中間層を加えた「積層型」のデータが一般的です。
レーザーカット用のデータはAdobe Illustlatorで作れます。
より自分好みのケースを作りたい人はチャレンジしてみては。

また、有志が3Dプリンタ用データを配布していることもあります。

ケース用のネジは、秋葉原にある「西川電子部品」さんが品揃え豊富でおすすめです。

おすすめのキットは?

観点1. 部品の揃えやすさ

Keebio」さんのキットがわかりやすくて良いのではないでしょうか。

商品説明の「Items needed for build」が必要なパーツの一覧です。
「(included with this item)」と表記のある部品がキットに含まれますので、それ以外を別途購入します。
( 「Optional – 」とあるものはオプションですので、なくても大丈夫です。)

リンクの張ってあるものはKeebio内で一緒に買えます。ありがたいことに、在庫さえあればKeebioだけで部品を揃えることもできそうです。

観点2. 日本語情報の豊富さ

2017年12月現在は、「Let’s split」(通称「レツプリ」)でしょう。

Let’s Split Kit

2017年夏に国内の共同購入で盛り上がったこともあってか、組み立てから設定、活用まで知見の持ち主を多く見かけます。
日本語の参考記事もおそらくは自作キーボード最多レベルで公開されていますので、何かトラブルが起こった場合の解決策も得やすいです。

冒頭でご紹介したまとめ記事を繰り返しますが、この一覧を見ても情報の多さはおわかりいただけると思います。
(参考)レツプリ他自作キーボードまとめ – yhara.jp

けれど、結局は欲しいもの、作りたいものを作るのが一番ですからね。

レツプリではキー数が心もとないなら「Nyquist」「Viterbi」も良いでしょうし、
親指を活用したいなら「Iris Keyboard」も楽しいと思います。
レツプリと同じキー数で一体型の「Planck」はキーキャップセットの選択肢も多く、着せ替えても楽しめる1台です。


この記事はARCHISS ProgresTouch RETRO 静音赤軸で書きました。
明日の自作キーボードアドベントカレンダー2日目は@kmtokiさんです。

環境構築

【Keyboard Maestro】マクロ同期ファイルを同一Mac内の複数アカウントでGit管理してみた

Keyboard Maestro、複数端末でマクロを同期させる機能があったんですね。
クラウド経由で同期用のファイル(例えばmacros.kmsync)を同期させる想定のようです。

これを利用して、同一PC内の複数アカウント間でGit管理してみることにしました。
概念図がこちらです。

クラウド自動同期は便利だけど、履歴の管理がしにくいのが難点。
なので、Git管理したい。
自分用の設定ファイルをGitHubとか外部リポジトリで管理するのは抵抗がある。
なので、PC内にリモートリポジトリを作成する。
といった事情です。

以下、手順です。

1. 最初に。

まずはバックアップを。
同期設定をした場合、すべてのマクロデータが一瞬で置き換わります。
泣かない前のバックアップを。

2. 親となる、アカウントA側の設定をする

2-1. 同期用ファイルを作成する

「Keyboard Maestro」→「Preferences」で「Sync Macros」のチェックを入れます。

ダイアログが表示されるので、「Create New」で適宜名前をつけてkmsyncファイルを生成します。今回はmacros.kmsyncとします。

この時、専用のフォルダを作成してその中に格納してください。このフォルダがAのローカルリポジトリになります。
今後、マクロを編集する度に随時macros.kmsyncに反映されるようになりました。
git init してコミットしておきましょう。

2-2. A内にリモートリポジトリを作る

任意の場所にリモートリポジトリ用のディレクトリを作り、ターミナルでこのコマンドを叩きます。

git init –bare –share

–bareでリモートリポジトリ作成、–shareでグループアクセスのためのパーミッション付与になります。

2-3. Aのローカルリポジトリから、AのリモートリポジトリにPUSH

リポジトリの準備ができたのでPUSHしてみます。
今回、リモートリポジトリは同一アカウント内なのでLocalプロトコルで指定できます。

/Users/(ユーザー名)/(リモートリポジトリまでのパス)/(リモートリポジトリのディレクトリ)

アカウントが「account_a」、リモートリポジトリのディレクトリが「sync_km_config.git」、そこまでのパスが「書類」→「dir_repository」だったなら、下記のコマンドになります。

git push /Users/account_a/Documents/dir_repository/sync_km_config.git

うまくいったでしょうか?

2-4. リモートログインを設定する

BからAにSSH接続させるため、リモートログインを設定します。
「システム環境設定」→「共有」と移動し、「リモートログイン」のチェックを入れます。

ログイン先の情報(ssh アカウント名@xxx.xxx.xx.xx の形式。xは数字が入ります。)をメモしておきます。これは、Bから接続するときに使います。

Aの作業はここまで。Aからログアウトし、Bでログインします。

3. 子となる、アカウントB側の設定をする

3-1. SSH接続の鍵認証

初回の接続時、鍵認証をキャッシュします。
ターミナルを開き、2-4でメモしてあった情報を打ち込みます。
これで、BからAのアカウントにSSHで接続を試みたことになります。

ssh アカウント名@xxx.xxx.xx.xx

すると下記のようなメッセージが表示されると思います。

公開鍵が表示され、接続を続けるか聞かれるので、yesで。

これで公開鍵がキャッシュされました。パスワードを聞かれるのでAのログインパスワードを入力します。

ログイン時間とプロンプトが表示されたなら接続完了です。
このターミナル窓はexitして閉じてしまって構いません。

3-2. リポジトリをCloneする

リポジトリをCloneし、Bのローカルリポジトリを作成します。ローカルリポジトリ用のディレクトリを作成し、下記コマンドを打ちます。

git clone ssh://アカウント名@xxx.xxx.xx.xx/(リモートリポジトリまでのパス)/(リモートリポジトリのディレクトリ)

2-3の情報を踏襲するならこうなりますね。

git clone ssh://account_a@xxx.xxx.xx.xx/Documents/dir_repository/sync_km_config.git

ところが、私の環境では上記書式だと接続できませんでした。(sierraだからでしょうか。)
下記書式でならできましたのでご参考まで。

git clone account_a@xxx.xxx.xx.xx:Documents/dir_repository/sync_km_config.git

3-3. 同期用ファイルを読み込み、同期させる

もう一度言います。必ずバックアップをとってください。
この設定をすると、B環境のマクロがまるっとAからCloneしてきたものに置き換わります。バックアップが無い場合、戻すこともできなくなってしまいます。

「Keyboard Maestro」→「Preferences」で「Sync Macros」のチェックを入れます。
表示されるダイアログで「Open Existing」を選択、Cloneしてきたローカルリポジトリのmacros.kmsyncを指定します。
Bの環境でのKeyboard Maestroのマクロが、Aの環境からPushしてあった時点のものに置き換わるはずです。

あとはお好きにコミットしたりPullしたりPushしたりしてください!

4. 運用でカバーしたい部分

懸念点がありまして。これは運用でカバーせざるを得ないのかな、と。

4-1. ログイン時にkmsyncファイルが更新されてしまうので、変更を破棄する。

バイト数が変わらないので、自動生成の乱数かログイン日時か、桁数の変わらない何かを書き変えているのではないかと思います。
通常のクラウド同期で運用していれば上書きしあっていたわけですし、諦めて破棄してしまってよいでしょう。

4-2. コンフリクトしたら破棄して履歴から復活する

これが結構、致命的なのですが。
kmsyncファイル、文書形式が謎でしてテキストファイルとしての編集が難しいかもしれません。
エディタでテキストファイルとして開くと激しく文字化けしますし、SourceTreeでも差分どころかプレビューすらできません。

よって、コンフリクトした場合、通常は行う手作業での編集が困難です。
画像ファイルの類だと思って諦めて、破棄して履歴から復活した方が良いでしょう。

個人の複数アカウント間で運用してコンフリクトするとしたら、ログアウト前にPushし忘れたコミットがあったなどでしょうか。
KMで解決できそうな気もしますね。
まぁ、追い追いで。

参考

4.1 Git サーバー – プロトコル
https://git-scm.com/book/ja/v1/Git-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB

【Git】ローカル環境にリモートリポジトリを置く方法 (Mac)
http://qiita.com/konweb/items/1c8417584b5937a21fd4

gitで共有リポジトリを作るときに気をつけたいこと
http://yashigani.hatenablog.com/entry/2013/03/21/224251