⌨️

キーマップの試行について〜2022年版〜

2022/12/15に公開

https://adventar.org/calendars/7529
この記事は キーボード #1 Advent Calendar 2022 の14日目の記事です。

お久しぶりです、タツタニコブです。
前回のAdventCalendarの記事からちょうど1年経ってしまいました。
なかなか書き続けるというのは習慣化が難しいですね。

昨日はびあっこさんの、Ergo42 が Remap に対応しました🎉 (予定) と Remap / VIA の QMK breaking changes の話 でした。
https://biacco42.hatenablog.com/entry/2022/12/14/093000
QMKとRemapに起こったことについて、分かりやすくまとめられているので、Remapをお使いの方は非常に参考になると思います。

さて、今回は去年に引き続き、キーマップの変遷についてまとめようと思います。振り返ってみると色々とやってはいたのですが、進捗として出せることがあまりなく、昨年よりもボリュームは少なめです。

去年の振り返り

去年の12月までの試行錯誤についてはこちらの記事にまとめてあります。忘れた頃にフォローやハートがやってきて、未だにビビってます。
https://zenn.dev/tatsutanicov/articles/286f3d0f262f59

  • ネタバレ→結局38キー使いになったよ!
  • 親指クラスタにエンター、スペースなど頻繁に使うものを集約
  • 基本的に全てのModキーはMod/Tapにしている(Ctrl/Tabは至高!)
  • 左手にテンキーレイヤーを用意
  • 右手にアローキー&その他の記号レイヤーを用意
  • 左手テンキーに合わせる形でファンクションレイヤーを用意

使用しているキーボードについて

いくつかキーボードが増えましたが、メインで使用しているのは相変わらず7sProです。自作に挑戦しようとしましたが、理想の配列を探す旅に出て迷子になりました。(cocot46plusに手を出してトラックボール付きがマストになりつつある)
今回も7sProの配列を元にお話していこうと思います。

今年のキーマップの変遷

アルファキーのHold設定の調整

大岡俊彦さん(キーマップと言えばこの方)の記事を拝見していると、片手の指で連打する場合は「外から内側が押しやすい」と目にしました。私はアルファキーにもHold/Tapでレイヤー移動を設定して、人差指→中指と連打すると、DelやEscを打てるようにしていました。(f→dでDelete:fでレイヤ3に移動してdの位置に設定したDeleteを押す)あまり不便には感じていなかったのですが、試しに中指から人差指へ連打するように設定すると確かに打ちやすくなりました。また、去年の試行錯誤の途中でやめてしまった中指と薬指の連打も、薬指から連打するように設定したら違和感なく打てるようになってきました。些細なことなのに大きな効果があってびっくりです。

アローキーの裏側

SMKJのkey-mapチャンネルにてアローキーの裏側(別レイヤー)にHomem,End,PageUp,PageDownを仕込むと言うテクニックを知りました。確かに、ノートPCだとFn+アローキーで打てる仕様になっているものもあります。直感的で覚えやすそうなので採用しましてみました。

レイヤー1

レイヤー2

ちと使いずらい

採用したのはいいものの、私の使用シーンだどレイヤーを切り替えるのが億劫に感じました。カーソル移動等が主なので、そこにワンアクション入ると思考に割り込みが入るというか、ワンテンポ遅れる感じがして、違和感が拭えなかったです。

そもそも自分、Homeとか使えてる?

よくよく考えるとこの4つのキー、元から活用できていませんでした。自キ活前はゲームでたまに使用する程度で、習熟度が足りていませんでした。最近は普段使いできるように訓練していますが、キーの配置場所は元の位置に戻してしまいました。

むしろCtrl+PageUp,Ctrl+PageDownのほうが使ってる

レイヤー2の裏側の配置ですが、余らせるのは勿体無いので活用法を少し考えてみました。(個人的にデフォルト含めてレイヤー2枚に収めるのが理想的という考えですが、さすがに1年近く使い込んでいるともう一枚くらい増やしても大丈夫になってきました)すると、PageUpなどのキーはタブの移動やExcelのシート移動など、単独で使うよりもCtrlと合わせたショートカットの方がよく使うことを思い出したので、思い切ってCtrl付きで配置しました。3キー同時押しの操作が2キーで済むようになったのでキーボードでの操作感が良くなった気がします。

レイヤー2

←←←←、→→→→

大岡俊彦さんが考案された薙刀式にも採用されている1打鍵でアローキーを4回入力するマクロです。ソースコードではインデントをスペース4つで表すことが多く、Tabを使わない傾向にあります。見る側の環境で見え方が変わる等の理由があるのですが、カーソル移動がめんどくさくなります。このマクロだとTabを移動する要領でカーソル移動することができてとても便利になりました。もちろん、文字の選択時などにも使えて、アローキーを打つ回数を大幅に減らすことができました。エディタの機能として似たようなことができるかもしれませんが、キーボードだけで完結できるほうがスマートなのがイイですね。ただ、どこに配置するか現在試行錯誤中です。上記のPageUpなどの経験から、カーソル移動系は一つにまとめたいのですが、そのレイヤーがいっぱいいっぱいなので中々大変です。まあその悩む時間も楽しいんですけどね!

RemapだとMACRO機能で簡単に実装できます

やるか・・・・・・コンボ

key-mapチャンネルに定期的にコンボを推してくる方がいらっしゃったので重い腰を上げて挑戦しました。格ゲーの同時押しが死ぬほど苦手で倦厭していたのですが、色々思うところもあり血反吐を吐きながら練習しました(誇張あり)。ちなみにこの機能はQMKのファームウェアの書き換えが必要で下記の通り設定します。

COMBO_ENABLE = yes

また、ファームウェアのファイルサイズが書き込み領域の容量を超えてしまったので、LEDライトの制御機能をオフにしました。(すげー大雑把にやってくスタイル)

RGBLIGHT_ENABLE = no

これで準備完了です。

頻繁に使うキーで特訓する

似たような操作から入れば習得が早いかと思い、d→fでDeleteのような連打で入力していた操作をコンボに持ってきました。お仕事でも頻繁に使うので、訓練にはもってこいです。また、fg同時押しでLang1(英語)hj同時押しでLang2(日本語)を打てるようにしました。これまた大岡俊彦さんの薙刀式から拝借したアイデアです。

唐突な例の問題の解決

さて、ほかにコンボで何かできないかと探していたところ、Home,Endが打ちにくい問題を思い出しました。アローキーと同じレイヤに欲しいけど、置く場所がない!そんな悩みに散々刷り込まれたあの言葉が頭に響きます。
「コンボはいいぞ!」

アローキー同時押しでHome,Endを打つキーマップが爆誕しました。

周りの非自キ活勢から散々変な人扱いされて来ましたが、これは自分でも妙なことをしている自覚があります。しかし実用性は高く、←↓でHome、↓→でEndを打てるので快適にカーソル移動ができます。同じことを考える人は100人はいるはずなので、目新しくないかもしれませんが個人的には今年一番の大発見です。あとテンキーレイヤーにも12,23,45・・・といった同時押しで「.+-*/=」を打てるようにしてみました。片手だけで数字と数字に関する記号の入力を完結させるのが目的ですが、習得に難儀しています。

出来上がったコンボのソースコード

最終的には下記の通りになりました。keyma.cに下記の通り追記しています。(すげー大雑把にry)

// コンボの定義
const uint16_t PROGMEM combo1[] = {KC_LEFT, KC_DOWN, COMBO_END};
const uint16_t PROGMEM combo2[] = {KC_DOWN, KC_RIGHT, COMBO_END};
const uint16_t PROGMEM combo3[] = {KC_D, KC_F, COMBO_END};
const uint16_t PROGMEM combo4[] = {KC_E, KC_R, COMBO_END};
const uint16_t PROGMEM combo5[] = {KC_2, KC_3, COMBO_END};
const uint16_t PROGMEM combo6[] = {KC_5, KC_6, COMBO_END};
const uint16_t PROGMEM combo7[] = {KC_4, KC_5, COMBO_END};
const uint16_t PROGMEM combo8[] = {KC_8, KC_9, COMBO_END};
const uint16_t PROGMEM combo9[] = {KC_7, KC_8, COMBO_END};
const uint16_t PROGMEM combo10[] = {KC_1, KC_2, COMBO_END};
const uint16_t PROGMEM combo11[] = {KC_F, KC_G, COMBO_END};
const uint16_t PROGMEM combo12[] = {KC_H, KC_J, COMBO_END};

combo_t key_combos[COMBO_COUNT] = {
  [C_1] = COMBO(combo1, KC_HOME),
  [C_2] = COMBO(combo2, KC_END),
  [C_3] = COMBO(combo3, KC_DEL),
  [C_4] = COMBO(combo4, KC_ESC),
  [C_5] = COMBO(combo5, KC_DOT),
  [C_6] = COMBO(combo6, KC_KP_PLUS),
  [C_7] = COMBO(combo7, KC_KP_MINUS),
  [C_8] = COMBO(combo8, KC_KP_ASTERISK),
  [C_9] = COMBO(combo9, KC_KP_SLASH),
  [C_10] = COMBO(combo10, KC_KP_EQUAL),
  [C_11] = COMBO(combo11, KC_LANGUAGE_2),
  [C_12] = COMBO(combo12, KC_LANGUAGE_1)

今年の変遷雑感

キーマップの変遷としては以上です。他にもやってみてはボツになった案もありますが、あまり進捗に出せないものばかりでした。(忘れたともいう)ただ、コンボを使い始めてから色々と広がった感がありました。他にも色々と妙なことをやってみようと思います。

コンボはいいぞ!

これからの自キ活

今年はアレやコレやと色んなものに手を出してみたので、やりたいことがたくさんできました。去年であらかたキーマップは煮詰め終わって、これからはあまり更新しないかなと思ったのですが、そんなことはありませんでした。振り返ってみても上記の通り更新がありましたし、コンボにも目覚めました。QWERTY配列以外にも手を出し始めました。なんなら自作配列まで視野に入ってきています。いやはやキーマップ沼は底が見えませんね。

ここまでお付き合いいただきありがとうございました。次回の進捗報告は来年に・・・ならない・・・ようにがんばりたいと思います。

明日(というか今日)はm.kiさんの自分のキーレイアウトの変遷です。貴重なキーマップの記事、楽しみです!

最後に、この記事は7sPro(独自30%キーマップ/コンボも乗ったよ!2022)で書きました。

Discussion