Keyball44を使い始めて2ヶ月が経過した
タイトル通りですが、Keyball44 を 2024-08-08 から使い始めており、おおよそ 2 ヶ月くらいが経過しました。
ツイートを読み込み中...
というわけで、使ってみた感想とかを雑に書いてみたいと思います。本当は 1 ヶ月くらい経過した時点で書きたかったんですが、モチベがなかったので……。
作成
所有していたはんだこてが使い物にならないほど劣化してしまい、はんだが一切溶けなかったので、学校ではんだこてを借りて、研究室で作りました。キーソケットのはんだ付けが特に大変で、はんだが上手くパッド1に乗らず、押しても反応しないキーが大量に発生してしまいました。
当然かも知れませんが、はんだ付け以外は特に難しくありませんでした。というか、はんだ付けも難しかったのはダイオードとキーソケットだけでした。
完成までに 3 日くらいかかりました。キーソケットの不具合修正に 1 日くらいかけてしまいました。はんだ付けって丁寧にやったほうが良いらしいです。
外観
上に貼ったツイートの後にキーキャップを変えました。ホームポジションに突起が欲しかったからです。Keyball を組む前に使っていた、Razer の DeathStalker V2 Pro とかいうキーボードから拝借しています。
ツイートを読み込み中...
キーボード間を接続している TRRS ケーブルは遊舎工房の店舗で買いました。たぶん 0.3m だったと思います。L 字かつもう少し長いものを買えばよかったと後悔しています。まあ店舗2にそんなものないんですけどね。
キーマップ
コンセプトは「なるべく US 配列と揃える」です。せっかくの自作キーボードなのに奇抜なキーマップに挑戦していないのですが、学校とかで普通の QWERTY キーボードに触れる機会がまだ多いので、切り替え時になるべく負荷がかからないで欲しいと思ったため、このようなコンセプトを掲げています。
Layer 0
最も基本的なレイヤーです。
左手の下部中央に Pause が配置されているのは、Windows で使っている CLaunch(アプリケーションランチャー)を起動するホットキーがこれだからです。キーひとつ押すだけでランチャーを起動したかったので、システムやソフトウェアに影響を及ぼさないキーとして選んだ記憶があります。
左手の親指部分については、` が置かれているのは Ctrl + ` で IME の状態を切り替えるためです。Alt は右手の右端に置かれている Tab と組み合わせて使います。
Layer 1
記号を入力するためのレイヤーです。Layer 0 で右手の親指部分にある Enter を長押しするとこのレイヤーになります。
US 配列に寄せただけで、特に面白みがないですね。ちなみに右手の左端にある「?」はあんまり使っていません。なんで置いたんだっけ?
Layer 2
矢印キー、マウス、F1 ~ F12 などを使うためのレイヤーです。Layer 0 で左手の親指部分にある Space、あるいは右手の下部にあるキーを長押しするとこのレイヤーになります。特に後者による切り替えは便利で、このキーを右手の小指で抑えながらマウスクリックをするという行動をしょっちゅう行っています。
矢印キーは hjkl に割り当てています。マウスボタンは、左クリックをホームポジションである j の真下において、あとは実際のマウスと同じ位置関係になるようにホイールクリックと右クリックを並べています。
あと左手部分に Home/End を置いたりしています。左手の右下に Space があるのは、Space 長押しを要求するソフトウェアがあったからです。Layer 0 に置かれている Space は、長押しすると Layer 2 に切り替わるので、Space 長押し判定にはならないんですよね。
Layer 3
数字入力とシステム操作系です。Layer 0 で左手の親指部分にある ` を長押しするとこのレイヤーになります。
数字は右手部分にテンキーっぽく並べています。キーボードを自作するに当たって、数字は絶対にテンキーっぽく配置するぞと思っていたので、そのようにしました。
ホームポジションである j の真下が 1 なので、指を動かさずともテンキーのホームポジションに指が置かれていることになります。ただし、通常テンキーは 5 の部分に突起があるのに対し、この並びにすると 4 の部分に突起が来てしまうので、いざテンキーを打つときに混乱しないか心配です。実際、以前は 5 に突起が来るような配列にしていました。指を動かしてホームポジションに移行するほうが面倒なのでやめましたが。
左手部分はシステム操作系です。kb なんちゃらはトラックボールの感度とかを操作するやつだったと思いますが、マジで使わないのでどのキーが何に対応しているのか忘れました。
個人的に気に入っている部分はメディアコントロール部分です。音量の増減を割り当てているキーの真上に Play(実際は再生・停止の切り替え)を置いて、その左右に Previous(前の曲に戻る)と Next(次の曲に行く)を配置しています。
2024-10-20 追記:Keyball において、おそらくメディアコントロールはファームウェアをいじらないと使えないと思います。後述します
所感
実は最初 Keyball を買うつもりはなく、Corne Cherry Light を買う予定でした。自作キーボードを買うにあたっての条件としては以下の通りでした:
- 左右分離かつ 3 段である
- 親指部分にキーがたくさんある
- OLED があると、うれしい
Keyball も Corne Cherry Light も、これらを全て満たすものです。ただ、僕は遊舎工房に行って Keyball を見るまで、Keyball に親指キーがあることも OLED があることも知りませんでした。Keyball の存在は知っていましたが、なんとなくトラックボールが邪魔そうだなあと思って検討していなかったからです。
実際に買って使ってみると、トラックボールはマジでなくてはならない存在だなと思うようになりました。やっぱりキーボードから手を離さずにカーソルを動かすことが出来るのはシンプルに強いですね。別にタイピング時にトラックボールが邪魔になることもなく、非常に快適です。
ただし、不満もいくつかあります。まず、Keyball はかなり四角い?レイアウトをしているという点です。よくあるキーボードだと、Q→A→Z と進むにつれてちょっとずつ右にズレているんですよね。Keyball にはそのようなズレは存在しません。おかげで初めはめちゃくちゃ苦労したし、せっかく配列を US 配列に寄せても、キーの位置が物理的に違うせいで、結局ふつうのキーボードを使うときに上手く打てなくなってしまいました。いつかモチベとお金と設備が揃ったら、自分で基盤とかをいじって、実際のキーボードっぽい配置にしてみたいです。
次に、たまにレイヤー切り替えに失敗することです。例えば数字の 1 を入力するために、レイヤー切り替えキーである ` を押しながら m を入力して離す……という行為を高速に行うと、`m という入力になってしまうことがあります。まあこれは正直しょうがないと思うのですが、改善できるならしたいです。設定とかで出来るんでしょうか?
2024-10-20 追記:ファームウェアの力でなんとかなるらしいです。後述します
それから、OLED の向きが違うのも少しだけ不満です。OLED は縦向きというか、打鍵者の身体に対して垂直に配置されている(?)のですが、表示される文字は横向きなので、キーボードを 90 度回転させないと表示されている文字が読めないんですよね。まあそもそも読む機会がそんなに無いのでそこまでの不満ではないのですが……。なんとか OLED を活用したい気持ちはあります。レイヤーとかもうちょっとわかりやすく表示したい気持ちがあります。
おわりに
ちょっとした不満もあるものの、全体としてはかなり満足です。2 ヶ月も使えば配列にもだいぶ慣れてくるので、それも相まってかなり良い体験が得られていると思います。とはいえ、主に記号入力など、まだ若干慣れていない部分もあるので、これからも使い続けて習熟度を上げていきたいと思っています。
この記事は Keyball44 によって書かれました。
ファームウェアの改変とビルド(2024-10-20 追記)
執筆時点で完全に忘れていましたが、僕は自前ビルドしたファームウェアを使っています。前述しましたが、メディアコントロールに関するキーが、デフォルトのファームウェアだと動かなかったからです。
また、Twitter で有識者の方に教えてもらいましたが、レイヤー切り替えに失敗する問題についても、ファームウェアをいじることで解決できるらしいです。
ツイートを読み込み中...
というわけで、やっていきましょう。といっても keyball のリポジトリにある qmk_firmware/keyboards/keyball/readme.md
に書いてある通りだし、僕がセットアップしたのは 2 ヶ月前なので記憶が曖昧になっています。上手くいかなかったら各自がんばってください。
前準備
まず任意のディレクトリで Git リポジトリをふたつクローンします。
$ git clone https://github.com/Yowkees/keyball.git keyball
$ git clone https://github.com/qmk/qmk_firmware.git --depth 1 --recurse-submodules --shallow-submodules -b 0.22.14 qmk
特に -b
の後とかは変わる可能性があるので、README を確認してください。これを実行すると、 keyball
ディレクトリと qmk
ディレクトリの 2 つが作られていると思います。
そうしたら qmk/keyboards
ディレクトリに移動して、keyball のリポジトリを指すシンボリックリンクを作ります。
$ cd qmk/keyboards
$ ln -s ../../keyball/qmk_firmware/keyboards/keyball keyball
これで準備は完了です。
ソースコードの編集
keyball
ディレクトリにあるソースコードを編集します。ちなみに keyball44 向けの解説ですが、ファイルパスを変えるだけで他のバージョンにも適用できると思います。
メディアコントロールを有効にしたい人は、qmk_firmware/keyboards/keyball/keyball44/rules.mk
を開き、 EXTRAKEY_ENABLE = no
と書いてある行を探して、この no を yes に変更すれば良いです。
レイヤー変更を高速化する場合、編集すべきファイルは 2 つあります。
まず、qmk_firmware/keyboards/keyball/keyball44/config.h
の一番下3に #define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
を追記します。
そしたら、qmk_firmware/keyboards/keyball/lib/keyball/keyball.c
を開き、一番下3に以下の関数を追加します。
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
const uint16_t layer = QK_LAYER_TAP_GET_LAYER(keycode);
return layer != 0;
}
「タップすると文字、長押しするとレイヤー切り替え」というキーが押されている場合に他のキーが押された時、長押しと判定する時間を無視して長押しされていることにする、みたいな感じの処理をしてるんだと思います。たぶん。判定が本当に layer != 0
で良いのかは謎です4。
以上で変更は終わりです。
ビルドと書き込み
qmk
フォルダに移動して make します。
$ make SKIP_GIT=yes keyball/keyball44:via
qmk/.build
に keyball_keyball44_via.hex
というファイルが作成されます。まあ名前は違うかも知れませんが、とにかく生成された .hex
ファイルを、以下のサイトからキーボードの左右両方のマイコンに書き込めば終わりです。
右上のメモリみたいなアイコンをクリックして、指示に従うだけで OK です。OLED の下に付いてるリセットボタンを素早く 2 回連打すれば書き込み先として認識されると思います。
というわけで、追記が長くなってしまいましたが、ファームウェア改変の方法とレイヤー切り替え問題の対策でした。
Footnotes
Comments
Powered by Giscus