記事一覧ページへ移動

Keyball44を使い始めて2ヶ月が経過した

2024-10-20
2024-10-05

タイトル通りですが、Keyball44を2024-08-08から使い始めており、おおよそ2ヶ月くらいが経過しました。

というわけで、使ってみた感想とかを雑に書いてみたいと思います。本当は1ヶ月くらい経過した時点で書きたかったんですが、モチベがなかったので……。

作成

所有していたはんだこてが使い物にならないほど劣化してしまい、はんだが一切溶けなかったので、学校ではんだこてを借りて、研究室で作りました。キーソケットのはんだ付けが特に大変で、はんだが上手くパッド1に乗らず、押しても反応しないキーが大量に発生してしまいました。

当然かも知れませんが、はんだ付け以外は特に難しくありませんでした。というか、はんだ付けも難しかったのはダイオードとキーソケットだけでした。

完成までに3日くらいかかりました。キーソケットの不具合修正に1日くらいかけてしまいました。はんだ付けって丁寧にやったほうが良いらしいです。

外観

上に貼ったツイートの後にキーキャップを変えました。ホームポジションに突起が欲しかったからです。Keyballを組む前に使っていた、RazerのDeathStalker V2 Proとかいうキーボードから拝借しています。

キーボード間を接続しているTRRSケーブルは遊舎工房の店舗で買いました。たぶん0.3mだったと思います。L字かつもう少し長いものを買えばよかったと後悔しています。まあ店舗2にそんなものないんですけどね。

キーマップ

コンセプトは「なるべくUS配列と揃える」です。せっかくの自作キーボードなのに奇抜なキーマップに挑戦していないのですが、学校とかで普通のQWERTYキーボードに触れる機会がまだ多いので、切り替え時になるべく負荷がかからないで欲しいと思ったため、このようなコンセプトを掲げています。

Layer 0

最も基本的なレイヤーです。

Layer 0のキーマップ

左手の下部中央にPauseが配置されているのは、Windowsで使っているCLaunch(アプリケーションランチャー)を起動するホットキーがこれだからです。キーひとつ押すだけでランチャーを起動したかったので、システムやソフトウェアに影響を及ぼさないキーとして選んだ記憶があります。

左手の親指部分については、` が置かれているのはCtrl + ` でIMEの状態を切り替えるためです。Altは右手の右端に置かれているTabと組み合わせて使います。

Layer 1

記号を入力するためのレイヤーです。Layer 0で右手の親指部分にあるEnterを長押しするとこのレイヤーになります。

Layer 1のキーマップ

US配列に寄せただけで、特に面白みがないですね。ちなみに右手の左端にある「?」はあんまり使っていません。なんで置いたんだっけ?

Layer 2

矢印キー、マウス、F1~F12などを使うためのレイヤーです。Layer 0で左手の親指部分にあるSpace、あるいは右手の下部にあるキーを長押しするとこのレイヤーになります。特に後者による切り替えは便利で、このキーを右手の小指で抑えながらマウスクリックをするという行動をしょっちゅう行っています。

Layer 2のキーマップ

矢印キーは hjkl に割り当てています。マウスボタンは、左クリックをホームポジションである j の真下において、あとは実際のマウスと同じ位置関係になるようにホイールクリックと右クリックを並べています。

あと左手部分にHome/Endを置いたりしています。左手の右下にSpaceがあるのは、Space長押しを要求するソフトウェアがあったからです。Layer 0に置かれているSpaceは、長押しするとLayer 2に切り替わるので、Space長押し判定にはならないんですよね。

Layer 3

数字入力とシステム操作系です。Layer 0で左手の親指部分にある ` を長押しするとこのレイヤーになります。

Layer 3のキーマップ

数字は右手部分にテンキーっぽく並べています。キーボードを自作するに当たって、数字は絶対にテンキーっぽく配置するぞと思っていたので、そのようにしました。

ホームポジションである 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/.buildkeyball_keyball44_via.hex というファイルが作成されます。まあ名前は違うかも知れませんが、とにかく生成された .hex ファイルを、以下のサイトからキーボードの左右両方のマイコンに書き込めば終わりです。

右上のメモリみたいなアイコンをクリックして、指示に従うだけでOKです。OLEDの下に付いてるリセットボタンを素早く2回連打すれば書き込み先として認識されると思います。

というわけで、追記が長くなってしまいましたが、ファームウェア改変の方法とレイヤー切り替え問題の対策でした。

Footnotes

  1. 基板にある、部品の足が乗る金属みたいな部分のことです。今までこの部分のことランドって呼ぶんだと思ってました。ランドは部品の足を刺すために基板に開けられている穴のことを指すらしいです

  2. いま確認したけどオンラインショップにもありませんでした(もしかしてオンラインでも店舗でも品揃えは一緒?)

  3. ifディレクティブの中とかじゃなければどこでも良いと思いますが

  4. どうもキーコードの上位8bitに、切り替え先となるレイヤーが格納されるらしいんですけど、上位8bitってほんとうにレイヤーのためだけに使われてるんですかね


Comments

Powered by Giscus