kbigwheelのプログラミング・ソフトウェア技術系ブログ

プログラミング・ソフトウェア技術系のことを書きます

Universal Keymapシリーズ⑧ 分割型40%キーボード用のsensibleキーマップを設計する

今回は 前回作成した最大公約数的キーマップ① 多彩な自作キーボードを使う上でのキーマップの問題 で上げた要件を組み込んで万人が受け入れられるsensibleキーマップを設計していきます。

目次

できたもの

レイヤー 最大公約数的キーマップ sensibleキーマップ
BASE f:id:den8:20201011163616p:plain:w360 BASE PC
f:id:den8:20201018182155p:plain:w360
BASE Mac
f:id:den8:20201018182151p:plain:w360
LOWER f:id:den8:20201011163612p:plain:w360 f:id:den8:20201018182146p:plain:w360
RAISE f:id:den8:20201011163608p:plain:w360 f:id:den8:20201018182142p:plain:w360
ADJUST f:id:den8:20201011163604p:plain:w360 f:id:den8:20201018182842p:plain:w360

qmk configurator用JSON定義ファイル: crkbd_rev1_common_layout_split_3x6_3_sensible.json · GitHub

変更点

1. 日本語入力系キーの追加

① 多彩な自作キーボードを使う上でのキーマップの問題で述べた通り、MO に変えて LT を使うことで 無変換 変換 英数 かな キーを配置しています。この2キーの余裕というのは他の言語用としても調べる限り十分ですので日本語以外のキーボードにも対応できます。

2. BASEレイヤーをBASE PCとBASE Macの2種類用意

Mac用のキーボードはPC(Windows/Linux)用のキーボードとは一部のキーの配置が異なります。 Swap GUI/Altキーはそれに対応するためのキーで、これにより配置の違いの一つである Alt キーと GUI キーの違いに対応できます。 英字(ANSI)キーボードであればこれだけで対応できるのですが、日本語キーボードの場合この違いに加えて 変換 無変換かな 英数 キーの違いがあります。そのためこのSwapキーだけでは対応できません。 これら3キーを切り替えるのに一番簡単な方法は複数のデフォルトレイヤーを用意してDFで切り替えることです。そのため2種類のデフォルトレイヤー(BASEにあるレイヤー0, レイヤー1)を用意してADJUSTレイヤーの DF(0)DF(1) で切り替えられるようにしました。

3. LOWER / RAISE / ADJUSTレイヤーの親指周辺を透過(KC_TRANS)化

上記の変更により親指周辺の GUI Alt のキーのどちらが右か/左かはデフォルトレイヤーによるようになりました。 しかし、以前のキーマップですとBASEレイヤー以外でも左手側に GUI 右手側に Alt と固定されています。 このままだとデフォルトレイヤーをBASE Macに切り替えたあとで更にレイヤーを切り替えると GUIAlt がまたswapしてしまうので混乱します。そこでBASEレイヤー以外の親指付近は透過(KC_TRANS)にすることでBASEレイヤーの GUI Alt 配置を尊重するようにしました。

4. 使用頻度は極めて低いが使用する可能性がありそうなキーをADJUSTレイヤーに追加

PrintScreen Scroll Lock Pause 半角/全角 カタカナひらがな Insert Menu などのキーです。 これらのキーは通常の利用ですとまったく使用しないか使用頻度が極めて低いキーたちですが、まったく使わないというわけではなく例えば PrintScreenInsert などは一部のショートカットキーなどに割り当てられることもあります。 これらがいざ必要となったとき、別のキーボードを用意したりバーチャルキーボード機能を呼び出すことも手間ですし、幸いqmk firmwareを使用すればレイヤーの数だけキーを割り当てられるので比較的空いていたADJUSTレイヤーの右手へ追加しました。 性質上もっとも使用頻度が低く配置もどうでもよいキー群ですのでニーズによって位置をずらしたり更に別のレイヤーへ割り当てても良いと思います。 (ちなみにNumLockキーは流石に使わないだろうと思って割り当てていませんが、これらと一緒に並べても良いと思います)。

(オプション) ユーザビリティの改善

以上で基本的に完了ですが、追加で以下の改善があります。

  1. set_single_persistent_default_layer(layer)を使用してUSB給電が切れてもデフォルトレイヤーの変更が保存されるようにする
  2. LT(X) キーの挙動改善(QMK Firmware で Raise/Lower と変換/無変換を同じキーに割り当てる - Okapies' Archive)

NEXT ACTION

以上により、当初目標としていたsensibleキーマップのCorne Cherry用設計例ができました。 しかし、sensibleキーマップの主目的は様々なキーボードに最小の変更で対応できることです。 1つのキーボードのみではその効果はあまりありません。

そこで、次はCorne Cherry以外のキーボードでSensibleキーマップを設計してみようと思います。