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

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

Universal Keymapシリーズ⑥ 分割型40%キーボード(など)のキーマップを比較してみる (レイヤー3編)

引き続き各キーボードのデフォルトキーマップを見ていきます。 ついに最後のレイヤー3です!

目次

キーマップ一覧

分割型40%
ergodash/mini - QMK Configurator
f:id:den8:20201007052432p:plain:w360
キーマップ - satt99/caravelle-build-guide:
Build guide for Caravelle keyboard

qmk_firmware/keymap.c at nrf52 · sekigon-gonnoc/qmk_firmware
claw44/rev1 - QMK Configurator レイヤー3なし silverbullet44 - QMK Configurator
QMK Configurator用のデフォルトキーマップデータがおかしいためスキップ
qmk_firmwareのCコードと比較すると間違っていることがわかります
crkbd/rev1/common - QMK Configuratorf:id:den8:20201007052453p:plain:w360 uzu42 - QMK Configuratorf:id:den8:20201007052507p:plain:w360
分割型60 ~ 80%
fortitude60/rev1 - QMK Configuratorf:id:den8:20201007052520p:plain:w360 lily58/rev1 - QMK Configuratorレイヤー3には一切キーが配置されていない
Ergodox Ez - QMK Configurator レイヤー3なし
一体型
treadstone48/rev2 - QMK Configuratorf:id:den8:20201007052552p:plain:w360 bat43 - QMK Configuratorレイヤー3なし
reviung41 - QMK Configuratorf:id:den8:20201007052616p:plain:w360 nomu30/rev2 - QMK Configurator事実上レイヤー3(Adjustレイヤー)なし

分析

このレイヤーでは物理キー上の配置ではなく、マッピングする論理キーの種別の観点から見ていきます。

多くのキーマップが採用しているキー

Reset キー

多くのキーボードでこの Adjust レイヤーに配置しているのが Reset キーです。 ResetキーとはErgodox EZ を使ってみよう - Qiitaなどにかかれていますがファームウェアを書き換えるときに押すキーでキー配置をよく書き換える自作キーボードでは非常に便利なキーです。 配置は Q が3つと多く、左上キー・DB がそれぞれ1つずつです。 調べてみると Planck も QRESET を割り当てているため、それに影響されている可能性が高いです。

RGB / Hue / Sat / Bright 系キー

おそらくいわゆるUnderglow (アンダーグロウ)のカラー操作のためのキーです。 このRGBの光らせ方・周期は現時点で9種類あり、それぞれへ1タップで移行できる RGB Mode Bのようなキーがあるのですが今回見たキーマップではそれらは一切配置されていません。 代わりに RGB Mode + で順番に遷移していく手段のみを配置しています。 RGB Mode - で逆順にも遷移できますがこれを配置しているのはreviung41だけでした。 また、 Hue +/- Sat +/- Bright +/- はすべてセットで配置されていますが Effect +/- はどのキーマップでも配置されていません。 この理由は不明です(Effect +/- は比較的最近提供されたキーなんでしょうか?)。

RGB Toggle RGB Mode + Hue +/- Sat +/- Bright +/- キーの配置は見るところ4種類のスタイルがあります。

1行スタイル
RGB Toggle RGB Mode + Hue - Hue + Sat - Sat + Bright - Bright +
  • 上段 (ergodash mini, fortitude60)
1行スタイル(Planck)
RGB Toggle RGB Mode + Hue + Hue - Sat + Sat - Bright + Bright -
  • 上段 (Planck)
2行スタイル
RGB Toggle Hue + Sat + Bright +
RGB Mode + Hue - Sat - Bright -
  • 左手中段下段 (Corne Cherry, treadstone48)
  • 右手中段下段 (uzu42)
変則2行スタイル
Bright + Sat + Hue + RGB Mode + RGB Toggle
Bright - Sat - Hue - RGB Mode -
  • 左手上段中段 (reviung41)

最初はPlanck発祥の1行スタイルが多かったようですが、徐々に2行スタイルが増えているように見えます。おそらくこれは+と-の対応がよりわかりやすくなること、配置がコンパクトにできることなどのメリットがあるためだと推測されます。

一部のキーマップが採用しているキー

バックライト系キー

BL から始まるキーで、キーボードのバックライトを制御するキーです。 今回見たキーマップの中ではergodash miniとfortitude60でのみ配置されています。 BL + BL - を左右に配置するなどの工夫がされていますね。

F1 ~ F12

このレイヤーにファンクションキーを配置しているキーボードが uzu42 と fortitude60 です。 両方ともキーボードの最上段に横並びで配置しています。 fortitude60はレイヤー1にもファンクションキーを配置しているためこちらは2箇所目になります。 それに対してuzu42はファンクションキーがこのレイヤー3にしかありません。ファンクションキー自体人によって使用頻度が違うためレイヤー3が良いかは人によりますが、 Alt - F4 のようなコンビネーションで押す場合 Alt Lower Raise R と4つもキーを押す必要があります。 ちょっと窮屈かもしれません。

マウス操作系キー

これはtreadstone48のみにあります。マウス操作はまた通常のキーとは異なるのでレイヤー3に配置するのは妥当でしょう。

PrintScreen Insert Home End PageUp PageDown

uzu42で PrintScreen Insert, treadstone48 で Home End PageUp PageDown が配置されています。 uzu42はレイヤー0 ~ 2で配置できなかった比較的使用頻度の高い特殊キーを配置していると考えられます。 treadstone48のそれら4キーはレイヤー1にも配置しているので必ずしもこちらを使う必要性はありません。

Rev Alt/GUI Swap Alt/GUI

これは GUI キーと Alt キーの意味を継続的に入れ替えるための特殊なキーです。 Macでは GUI キーと Alt キーの位置が PCキーボードとは逆のため、これで調整します。 fortitude60ではキーボード中心に左右対称で配置され、treadstone48では ER に隣り合って配置されています。

AU_ON AU_OFF

これはキーボードから音を鳴らすときに使うキーで( qmk_firmware/feature_audio.md at master · qmk/qmk_firmware )fortitude60のみにあります。

TO(0) TO(1) TO(2)

これはレイヤー0のキーを半恒久的に切り替えるキーで今回見た中ではfortitude60のみに存在します。 これはPlanckやPreonicなどにも存在してQwerty配列からDvorak配列やColemak配列へ切り替えるために使用されます。ただ、現在では TO ではなく DF を使うことが一般的です(おそらく TO を使うと LowerレイヤーやRaiseレイヤーなども同時に使えなくなるため)。

NEXT ACTION

これですべてのレイヤーの分析が終わりました。次は Corne Cherry を対象に大多数の人が使いやすいSensible Keymapを設計していきます。

Universal Keymapシリーズ⑤ 分割型40%キーボード(など)のキーマップを比較してみる (レイヤー1,2編)

引き続き各キーボードのデフォルトキーマップを見ていきます。 レイヤー0は前回見ましたので今回はレイヤー1, 2を同時に見ていきます。

目次

  • 目次
  • キー配置の傾向まとめ
    • レイヤー構成
    • 矢印キー
    • 数字キー
    • ファンクションキー
    • モディファイヤキー
    • Escape Tab BackSpace Delete ` (~) (左上/右上系キー)
    • Home End PageUp PageDown
    • 右手小指外側記号キー + ` (~)
  • 各キーボードのキーマップ分析詳細
    • ergodash/mini - QMK Configurator
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • Caravelle BLE
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1 (Lower)
      • レイヤー2 (Raise)
    • claw44
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • Corne Cherry
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • uzu42
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • fortitude60
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • lily58
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • Ergodox Ez
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • treadstone48
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • bat43
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • reviung41
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
    • nomu30
      • レイヤー切り替え方式
      • レイヤー0
      • レイヤー1
      • レイヤー2
      • レイヤー3
  • NEXT ACTION

キー配置の傾向まとめ

今回はとんでもなく全体が長くなったため、まとめ部分を先頭に持ってきました。 各キーボードごとの詳細はまとめ以降の部分を参照ください。

レイヤー構成

ほとんどがLower - Raise - Adjust 3レイヤー構成です。 以下はその例外です。

  • claw44, bat43: 2レイヤー構成
    • 同じyfukuさん設計。おそらくAdjustレイヤーを不要と判断した省略
  • Ergodox Ezも2レイヤー構成
    • キー数が十分あるため and / or 設計時点で Lower - Raise - Adjust 構成概念がなかったため

矢印キー

  • vimスタイル矢印キーがほとんどを占めており、その他にWASDやそもそもキーボード右下に物理的な矢印キーを割り当てているものがあります
  • 矢印キーはほとんどがレイヤー1か2のどちらかのみに設定されていますが、その傾向はレイヤー1が5つ、レイヤー2が6つとかなり拮抗しています
    • yfukuさんのキーボード2つがレイヤー1なので、ややレイヤー2が有利?

数字キー

  • QWERTY行に数字キーの 1 ~ 0 を割り当てているものがほとんどです
    • 片方のレイヤーに 1 ~ 0 を割り当てたら、もう片方のレイヤーでは ! ~ ) (数字キーに対応する記号)を割り当てているケースもまた多いです
      • 例外はfortitude60, lily58, yfukuさんキーボード(claw44, bat43)のみで前者2つは物理キーがあること、後者はvimスタイル矢印キーとバッティングすることが理由の気がします
      • どちらのレイヤーに 1 ~ 0 を割り当てるかは レイヤー1が5つ、レイヤー2が6つとこれも拮抗しています
        • yfukuさんのキーボード2つがレイヤー1なので、ややレイヤー2が有利?
    • 物理的な数字行が存在するfortitude60やlily58でも同様の配置を行っているため、この配置はかなり普及しているようですね
      • Planckのキー配置も同様の方針のため、このキー配置の祖先はPlanckかもしれません
  • その他にはASDFG行に割り当てているもの(claw44, bat43)、ASDFGZXCVBへ割り当てているもの(ergodox mini)などがあります

ファンクションキー

このキーの配置は様々です。

  • 片手2行スタイル
    • 左手中段下段スタイル (ergodash mini, Caravelle BLE, fortitude60, lily58, Planck)
      • はみ出し2キーは
        • 最下段 (ergodash mini)
        • 左手内側追加キー (Caravelle BLE)
        • 右手側 H N (fortitude60, Planck)
        • 左手外側キー (lily58)
    • 左手上段下段スタイル (claw44)
      • はみ出し2キーは
        • 左手外側キー (claw44)
    • 左手上段中段スタイル (treadstone48)
      • はみ出し2キーは
        • 左手下段キー (treadstone48)
    • 右手中段下段スタイル (reviung41)
      • はみ出し2キーは
        • 右手外側キー (reviung41)
  • 両手1行スタイル
    • 上段(QWERTY行)スタイル (lily58, nomu30)
      • はみ出し2キーは
        • 左手右手外側キー (lily58)
        • 割り当てない (nomu30)
    • 最上段(数字キー行)スタイル (Ergodox Ez)
      • はみ出し2キーは
        • 右手外側キー (Ergodox Ez)
  • 割り当てなし (Corne Cherry, uzu42, bat43)

比率としては左手中段下段を使うスタイルと割り当てないスタイルが多いです。 前者はおそらくPlanck由来で、後者はそもそもファンクションキーを使わない志向なのだと思います。 全体を俯瞰してみると片手の2行へ割り振るスタイルと両手を通じた1行へ割り振るスタイルがあり、前者のほうが多いです。 ただ、後者には 1 ~ 0 の位置と F1 ~ F10 の位置を合わせられるという利点もあります。

また、ファンクションキー自体を配置するレイヤーですが、レイヤー1: 7つ レイヤー2: 3つということでレイヤー1のほうが多いようです。

モディファイヤキー

Ctrl Alt Shift GUI などのキーについてはuzu42, nomu30を除いて追加されていません。 これはモディファイヤキーをレイヤー間で追加すると混乱しやすいこと、レイヤー切り替えキーとモディファイヤキーの間で押す順番によって挙動が変わってしまうことなどが理由だと思われます。 また、既存のモディファイヤキーを別のモディファイヤキーへ変更することもまったくされていません。

Escape Tab BackSpace Delete ` (~) (左上/右上系キー)

レイヤー0へ Escape を配置していないキーマップでは左上を Escape にしたり、小指左の列がないuzu42で Tab を追加したり、 BackSpaceDelete の対称性からレイヤー0で片方にしていたのをレイヤー1,2では他方に入れ替えたりしています。 レイヤー0で比較的行き場を失いやすい ` (~) もどちらかのレイヤーで割り当てられている事が多いです。

Home End PageUp PageDown

これらのキーも使用頻度が高いため、比較的レイヤー1,2に配置されているケースがあります。

  • vimスタイル矢印キーの下に添えるスタイル (Caravelle BLE, uzu42(Home, Endのみ), reviung41)
  • 物理矢印キーに配置するスタイル (ergodash mini, treadstone48)
  • なし (claw44, Corne Cherry, fortitude60, lily58, Ergodox Ez(レイヤー0に存在), bat43, nomu30)

概ね矢印キーとの相関関係があり、 以下の対応をもたせることが多いです(Caravelle BLE, ergodash mini, treadstone48)。 これは矢印の上下と PageUp PageDown の間に直感的な相似性があるためでしょう。 またかなり昔からナビゲーションキーを置く空間が無いノートPCが Fn キーと同時に矢印キーを押したときの挙動を以下にしていたため、それに影響を受けた / 合わせていると捉えられるかもしれません。

矢印キー ナビゲーションキー
Home
PageDown
PageUp
End

右手小指外側記号キー + ` (~)

最もバラバラなのがこの記号キーの割当です。

  • 9 ( 0 ) の下に { } [ ] を置くスタイル (Caravelle BLE, uzu42, fortitude60, lily58)
    • 亜種: 左手側で { } ( ) [ ] を左右ペアに上下へ並べるスタイル (Ergodox Ez)
  • 右手中段下段ペアスタイル
    • 並びに規則性なし? (Caravelle BLE)
    • 並びは左上のキーから順番 (Corne Cherry)
  • 中段下段シングルスタイル (並びは左上のキーから順番)
    • 右手
      • 例外なし (lily58)
      • \ (|) が重複していたり # (~) という特殊キーがあったり (fortitude60)
    • 左手
      • 例外なし (reviung41)
    • 両手
      • [ ] /\ のみ左右ペアで左手へ配置 (nomu30)
  • 左右手 線対称スタイル ( [ ] { } ) (claw44, bat43)
  • 右手小指外側記号キー全4行を3行に押し込んで再現スタイル (treadstone48)
  • 一部規則性なし? (claw44, uzu42, Ergodox, bat43)
  • 割り当てなし (ergodash mini (レイヤー0ですべての記号キーがまかなえている))

しかし、一部規則性が見えないものを除けばすべてのキーマップは次の2点を考慮していることがわかります。

  1. 対応する記号キー([ ] ( ) { } < > / \)を考慮
  2. 101キーボードの左上に近いキーほど、キーマップでも左側に配置
続きを読む

Universal Keymapシリーズ④ 分割型40%キーボード(など)のキーマップを比較してみる (レイヤー0編)

というわけで、各自作キーボードの実際のキーボードを比較してみます。 qmk_firmwareのdefault.cを見て比較するのは大変なので、qmk configuratorで描画してもらった結果を使います。

まずはLayer 0から。

目次

キーマップ一覧

分割型40%
ergodash/mini - QMK Configurator
f:id:den8:20201003232946p:plain:w360
キーマップ - satt99/caravelle-build-guide:
Build guide for Caravelle keyboard

f:id:den8:20201003232958p:plain:w360
claw44/rev1 - QMK Configuratorf:id:den8:20201003233006p:plain:w360 silverbullet44 - QMK Configurator
QMK Configurator用のデフォルトキーマップデータがおかしいためスキップ
qmk_firmwareのCコードと比較すると間違っていることがわかります
crkbd/rev1/common - QMK Configuratorf:id:den8:20201003233014p:plain:w360 uzu42 - QMK Configuratorf:id:den8:20201003233019p:plain:w360
分割型60 ~ 80%
fortitude60/rev1 - QMK Configuratorf:id:den8:20201003233024p:plain:w360 lily58/rev1 - QMK Configuratorf:id:den8:20201003233029p:plain:w360
Ergodox Ez - QMK Configuratorf:id:den8:20201005010026p:plain:w360
一体型
treadstone48/rev2 - QMK Configuratorf:id:den8:20201003233033p:plain:w360 bat43 - QMK Configuratorf:id:den8:20201003233039p:plain:w360
reviung41 - QMK Configuratorf:id:den8:20201003233044p:plain:w360 nomu30/rev2 - QMK Configuratorf:id:den8:20201003233048p:plain:w360

分析

分割型キーボードの中でも最大クラス(= 最大公約数的に使える)であるErgodoxのキー配置をベースにキーの部分ごとのキーマップを考えていきます。

f:id:den8:20201004010723p:plain:w360

アルファベット部分

f:id:den8:20201004003514j:plain:w360

ありがたいことにすべてのキーボードでアルファベット部分の配置は一致しています。 なのでここについては全キーボードで共通にしてよいです。

右手一段下の記号部分

f:id:den8:20201004003515j:plain:w360

ここはuzu42とnomu30以外は ; , . / で統一されています。ちなみに Shift + ;: であるためみなさんANSIキーボードベースのようです。 uzu42は小指ホームポジションEnter です。これは利用頻度のための最適化だと思われます。 nomu30はこの部分のキーが事実上ありません(SpaceとEnterキーがありますが後述の右手外側列扱いにします)。

数字キー行

f:id:den8:20201004003516j:plain:w360

40%キーボード以下ではこの行があることはないですが、こちらも考えていきます。 この行があるのはfortitude60、lily58とErgodox Ezですが、1 ~ 0 のキーは共通です。JISではなくANSIベース( Shift - 2 を押して " ではなく @ が出る)のも一緒ですね。 ただ1 の左のキーと 0 の右のキーはちょっとずつ違います。

キーボード 1 の左のキー 0 の右のキー
fortitude60 ` (~) Delete
lily58 Esc - (_)
Ergodox Ez = (+) - (_)
Preonic ` (~) BackSpace
101キーボード(参考) ` (~) - (_)

3つのキーボードはすべて101キーボードがベースにあるようですがfortitude60は利便性のために右上を Delete1lily58は左上を Escape にしています。 Ergodox Ezは左上が =(+) です。これはANSI規格上の -(_) の更に右のキーです。 参考にPreonicの情報も追加してみました。これはfortitude60と同じ考えですが Delete ではなく BackSpace を右上においています。

どれを選択するか

101キーボードとの絶対的な近似性から ` (~) - (_) もしくは使用率と相対的な近似性から Escape BackSpace(Delete) が良いような気がします。

人差し指の内側の列

f:id:den8:20201004003517j:plain:w360

この部分は基本的に40%より大きな分割型キーボードにありますが、40%キーボードの一部も備えています。

キーボード 左手側 右手側
ergodash mini - (_) [ ({) = (+) ] (})
caravelle ble ( [ ({) ) ] (})
lily58 [ ({) ] (})
Ergodox Ez レイヤー1への移動 Ctrl + Shift + Alt + Gui レイヤー1への移動 Ctrl + Shift + Alt
bat43 BackSpace BackSpace (左と同じキー)

基本的に(){} [] などのブラケット関係が多いです。これらは101キーボードでは右手の更に右側にある記号キーの代替で、かつ左右に配置することにより直感的な対称性を持たすことができるよいアイデアでしょう。 ergodash miniの - (_)= (+)0 の右およびそのまた右のキーです。分割型で省略される右手の右側の記号キーの中で、数字行の記号キーを行をずらすことなく列だけ移動した形と言えます。101キーボードからの移行がしやすくこれも良い設計だと思います。 Ergodox Ezは独特です。これはErgodoxが比較的古い分割型キーボードでまだキーマップ設計が洗練される前に決められたdefaultキーマップであるためだと推測されます。 は同じレイヤー上で二重に配置されていますしレイヤー切り替えも同じキーが両方にあります。モディファイヤキーの同時押しを1つのキーで実現するのは一見便利に見えますが実際にそのキーマップを使っていた経験上ほとんど使いませんでした。

bat43は少し特殊で、どちらかというと設計上空いた基盤の中心部分にシンボリックなキーを配置した側面のほうが強いように見えます2。 とはいえ分割型のエルゴノミクス的な合理性が知られるにつれSymmetrical Staggeredな一体型キーボードは増える気がしていて、そうなると中央にキーやトラックボールを置くキーボードはこれから増えそうです。

小指の外側の列

f:id:den8:20201004010716j:plain:w360

この列は30%キーボード以外のほとんどのキーボードで採用されています。

キーボード 左上 左中 左下 右上 右中 右下
ergodash mini Tab Shift Ctrl \ (|) ' (") Shift
caravelle ble Tab Ctrl Shift BackSpace ' (") Shift
claw44 Escape Tab Shift - (_) ' (") Shift
corne Tab Ctrl Shift BackSpace ' (") Shift
fortitude60 Tab Escape Shift BackSpace ' (") Enter
lily58 Tab Ctrl Shift - (_) ' (") Shift
Ergodox Ez Delete BackSpace Shift \ (|) ' (") Shift
treadstone48 Escape Tab Shift BackSpace Enter ` (~)
bat43 Escape Tab Ctrl - (_) Shift Ctrl
reviung41 Tab Ctrl Shift BackSpace ' (") Enter
nomu30 n/a Ctrl Shift BackSpace Enter(ISO) Shift

まず、左下についてはほぼ Shift です。左下に Ctrl を置いているergodash miniも左中に shift を置いています。 左上についても TabEscape でほぼ統一されています。Ergodx Ezはここも独自路線ですが前述の通り黎明期に決まったdefaultなので無視します。 ここに TabEscape のどちらを置くかは微妙なところですが、101キーボードとの互換性を優先するなら Tab を置いて Escape を他所に置くのがよいかもしれません。 左中については簡単ではなく、 Ctrl 6個 Tab 3個 その他3個と割れています。観察すると左上に Escape キーを置いて Tab キーを置いていないキーマップは必ずここに Tab を置いています3。それらに当たる claw44, treadstone48, bat43は Ctrl キーを親指側または最下段に逃がすという選択を行っています。

まとめると左下は Shift キーでほぼ確定、左中と左上は Tab, Escape, Ctrl のうち2つを置いて余った1キーは親指や最下段最左へ逃しています。

右下はほぼ shift で30%やfortitude60などで Enter が使われている程度です。 右中もほぼ ' (") で他はこちらでも一部 enter を配置しているキーマップがあります。 やはりEnterは使用頻度も高いためなるべく馴染んだ位置関係の場所に置きたいという考えがありそうですね。 右上は比較的綺麗に割れていて、 BackSpace 6個, \ (\|) 4個, - (_) 3個です。\ (\|) キーは [] キーを飛ばした右端にあるキーで \ (\|) キーは 0 の右、P の右上にあるキーです。 BackSpace は言わずもがな数字行最右にあるキーで、この3つは優劣つけがたい感じです。\ (\|) がErgodox系, - (_)の3つのうち2つが同じ製作者であることを考えれば概ね広く使われているのはやはり BackSpace でしょうか。

最下段

f:id:den8:20201004003511j:plain:w360

ここは親指部分と区別が付きづらいですが、概ね親指以外の指で押すキーの範囲とします。

キーボード 左手側 右手側
ergodash mini Ctrl GUI Alt Alt(` (~))
caravelle-ble L(Adjust) GUI Alt Delete
uzu42 Shift Space Alt GUI Alt (BackSpace) Ctrl GUI n/a
fortitude60 GUI Alt Alt GUI
lily58 Alt GUI BackSpace GUI
Ergodox Ez LT1(` (~)) ' (") Alt(Shift) [ ({) ] (}) TT1
treadstone48 Ctrl Alt GUI Alt(Menu)
reviung41 Alt GUI

まず、Ergodox Ezを除いてレイヤー切り替えはほぼありません4。caravele-bleのAdjustレイヤーへの切り替えはめったに行わないアクションです。

左手側で見ると GUI キーの配置率はとても高いです。また Alt キーの配置率もそれに準ずる出現率ですね。 Ctrl キーも一定ありますが、その他は共通点はほぼ見いだせません。

右手側を見るとこちらも Alt GUI キーの出現率は高いです。また特徴的なのは矢印キーをここへ配置しているErgo系とtreadstone48があることです。 その他 BackSpace or Delete を配置しているキーボードも3つあります。これは101キーボードでも右上が BackSpace(Delete) であることを考えれば直感的に使いやすいでしょう。そのほかのキーとしては Menu Ctrl のように同じく104キーボードで右手最下段にあるキーを配置しているものと、[ ({) ] (}) のような右手小指外側の記号キーをここへ押し込んでいるErgodox Ezがあります。

親指部分

f:id:den8:20201004003513j:plain:w360

キーボード 左手側(左と上が優先) 右手側(左と下が優先)
ergodash mini MO1 Space Delete BackSpace Enter MO2
caravelle ble L(Lower) Space Enter L(Raise)
claw44 Alt(Delete) GUI(英数) LT1(Space) Ctrl(BackSpace) Ctrl(BackSpace) LT2(Enter) GUI(かな) Alt(Delete)
corne GUI MO1 Space Enter MO2 Alt
uzu42 MO1 Ctrl(Escape) Shift(Space) MO2
fortitude60 MO3 Space [ ({) Ctrl Enter ] (}) Space MO4
lily58 MO1 [ ({) Space Enter ] (}) MO2
Ergodox Ez Space Alt(Menu) BackSpace GUI Home End PageDown PageUp Alt Tab Ctrl(Escape) Enter
treadstone48 MO1 BackSpace Space MO2
bat43 GUI 漢字 LT1(Space) LT2(Enter) ハングル Alt
reviung41 MO1 Space Space MO2
nomu30 (最下段メタキー) Alt GUI LT2 LT3 LT1

最後の山場です。 ここで圧倒的な存在感を見せているのが Space キーで nomu30以外のすべてのキーで1キー以上割り当てられています。 それに次ぐ出現率を見せているのが Enter キーで、これはすべて右手側であるものの採用率は75%を超えます。 その次に普通のキーで出現率が高いのは BackSpaceDelete キーでしょうか。これも半分いかないぐらいのキーボードで採用されています。 一般的なメタキー系で言うと Ctrl Alt GUI はそれぞれ30%前後の出現率です。Shiftだけはuzu42のみですが、これは小指左の列での採用ケースが多いためだと思われます。親指シフトタイプのキーボードというものも昔あったようですが現代ではあまり支持されていないようです5

この部分のもう1つの主役がレイヤー切り替えキーです。Ergodox Ez以外のすべてのキーボードでこの部分にはレイヤー切り替えが設定されています。 特徴としては必ず左右に1つずつレイヤー切り替えキーがあることですね。ここら辺はもう定番のようです。

あとはfortitude60, lily58 では [ ({) [ ({) が配置されていたり、Ergodox Ezでは Home End PageDown PageUp が配置されていたり、あまりにキー数が少ないnomu30では3番目のレイヤー切り替えキーがあるぐらいですね。

意外なのが日本語入力系のキーがほぼ見られないことで、yfukuさんの設計した claw44 / bat43 以外は 半角/全角 変換 無変換 英数 かな 漢字 ハングル のようなキーがありません。みなさんどうやって入力モードを切り替えているんでしょうか。

まとめられていないもの

思った以上に長くなりました。まとめは他のレイヤーも見てから行うことにして次へ続きます。


  1. BackSpace ではなく Delete であるのはMacでの利用が念頭にあるのだと思われます

  2. 配置されたキーが BackSpace であるのはそれだけ使用が多いということを示唆しているでしょう

  3. ここでもErgodox Ezは例外

  4. 僕はErgodox Ezを使っていた期間が長かったため意外に感じました

  5. 親指シフトキーボードはJISベースだったことがもしかしたら関係があるかもしれません。

Universal Keymapシリーズ③ 自作キーボードの Raise / Lower / Adjust レイヤーの起源と推奨される使い方の調査

tl;dr

  • Raise / Lower / Adjustの起源はPlanck, 引いてはその製作者のjackhumbert (Jack Humbert)
  • Raise / LowerにはXXXを置く、といった方向性はないため自由に使ってOK
    • 強いて言えば本家Planckに合わせてRaiseに数字キー・ファンクションキー、Lowerに記号・算術演算キーを置くケースが多いかも(私見)
  • Adjustに関してはキーボードのLEDの調整などメタな機能や滅多に使わない機能を置くのが基本

目次

レイヤーとは

自作キーボードのキーマップではよくレイヤーという機能を使用します。

Layers - QMK

レイヤーとは一般的なキーボードのShiftやCtrlなどと同様に特定のキーを押しながら別の、例えばJキーを押した場合、本来のJキーの役割ではなく左矢印キーを押したことにする、といったことができる機能です。 さながらキーボードの上へ全く別の層を敷いてすべてのキーの動作を変えてしまうような機能だからレイヤーと呼んでいるのだと思います。

このレイヤー、特にキー数が少ない自作キーボードではほぼ使用が必須の機能です。 例えばNomu30 という自作キーボードを設計した – recompile.netなどのキーボードはキー数が31個しかないため、そのままでは数字キーはおろか矢印キーすら押せません。 これほどキー数が少ないものでなくとも、80%キー = いわゆるテンキーレス未満のサイズではファンクションキーなどに専用のキーを割り当てられないためレイヤーが必要となります。

レイヤーの呼び名

このレイヤー機能、qmk_firmware上は単なる定数で0から1, 2, ...と振られるだけの数です。 一方で人間が使いやすいように大抵の場合レイヤーには適当な名前がつけられることが多いです。 以下は僕が調査した中で見たレイヤー名の一例です。

  • Function
  • Arrow
  • Dvorak
  • Numpad
  • Raise
  • Lower
  • Adjust

これらの中でも準標準の呼び名となっているのが Raise / Lower / Adjust の3つです。これらはよく使われるため、カスタムキーキャップの中でもこのRaise / Lowerキーを特別に用意しているものが一定数あります(Adjustは大抵RaiseとLowerの同時押しで表現するため専用のキーはありません)。

ここで一つ疑問が浮かびます。これらのレイヤーの呼称はだれが決めたのでしょうか?またこれらのレイヤーそれぞれに置くキーの方針などはあるのでしょうか?

Raise / Lower / Adjust レイヤーの起源

ネットで検索してみたところ、私と全く同じ疑問を持った人がIssueを立てていました。

Raise? Lower? Adjust? · Issue #3533 · qmk/qmk_firmware

そこでのコメントいわく、これらのレイヤーはPlanck, Preonicなどの開発者のJackさんが開発したものだそうです。 しかし、それはいつ開発されたのでしょうか?またRaise / Lower / Adjust はそれぞれ指向性を持ったレイヤーとして準備されたものなのでしょうか?(例えばUpperには数字キーを置く、など)

この疑問の回答を探して、git logの海へ潜ることにしました。

qmk_firmwareリポジトリを掘り起こす

Gitの良いところは過去全てのコミットを簡単に、かつ高速で検索できることです。 Raise / Lower / Adjustというレイヤーが出てきたコミットも簡単に検索することができます(クエリが間違っていなければ)。 実際に検索してみたところ、すぐにそれぞれのレイヤーが出てきた最初のコミットが見つかりました。

開発されたレイヤー コミット コミッター 日付
Raise / Lower Update keymap_planck.c · qmk/qmk_firmware@4a8b9b8 jackhumbert (Jack Humbert) 2014/12/13
Adjust new defaults · qmk/qmk_firmware@ddbe430 jackhumbert (Jack Humbert) 2016/04/15

両方ともスレッド内で推測されていたとおりJackさんによって行われていました。 また新たにわかったこととして、これらのレイヤーはすべてPlanckのために開発されていたことが挙げられます。

これでqmk_firmware内でのRaise / Lower / Adjustレイヤーの源流はわかりました。 また、qmk_firmwareリポジトリ外で先にこれらのアイデアがあった可能性を考慮してgoogleで2014/12/13以前などを指定して検索しましたが、それに該当する情報はまったく出てきませんでした。

これらを勘案すると少なくともこのレイヤーの命名をモダンキーボードの世界へ導入したのがJackさんであることはほぼ確実だと思われます。

Raise / Lower / Adjustレイヤーの推奨される使い方

これでこれらレイヤーの源流はわかりました。 残る疑問はこれらのレイヤーに推奨される使い方・キー配置があるかどうかです。

Raise? Lower? Adjust? · Issue #3533 · qmk/qmk_firmwareのコメントではRaise / Lower / Adjustに何を置くのかは自由で、ただしAdjustについては入力時にRaiseキーとLowerキーの両方を入力する手間があるため「ワンタッチ」キー(オン/オフ、レイヤー選択など)に適しているとコメントされています。 実際にJackさんが最初にそれらのレイヤーを導入したPlanckにおいて、どのようにレイヤー内のキーが設定されたのかを見ていきましょう。

まず、Raise / Lowerがコミットされた2014年12月の時点では以下のようになっています。

[0] = KEYMAP( /* Jack */
  TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
  ESC,  A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
  LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, ENT,
  RSFT, LCTL, LALT, LGUI, FN2,    SPC,     FN1, LEFT, DOWN, UP,  RGHT),
[1] = KEYMAP( /* Jack RAISE */
  GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    BSPC,
  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, EQL,  LBRC, RBRC, BSLS,
  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, TRNS,
  TRNS, TRNS, TRNS, TRNS, TRNS,    TRNS,   FN1,  MNXT, VOLD, VOLU, MPLY),
[2] = KEYMAP( /* Jack LOWER */
  FN22, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC,
  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28,
  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  TRNS, TRNS, TRNS, TRNS, FN2,    TRNS,    TRNS, MNXT, VOLD, VOLU, MPLY),

Raiseレイヤーでは数字キーとボリューム上下、メディア再生などのキーが乱雑に置かれています。 Lowerレイヤーにはファンクションキーの10 ~ 28がこちらも並べられています。 ただ、ファンクションキーの3 ~ 9はどこにもないことなどからもまだまだ作業中であることが伺えます。

2015年の1月になると大分まとまっています。が、ファイルタイトルを見るにこれjackさん自身のキーマップやdefaultのキーマップではなくnathanさんのもののようです。配置もthey固有の特徴(Visual Studio用の配置)などが見られて個性的。特に指向性などは見れません。

   /* 1: fn left/lower layer
    * The top row are Visual Studio combos:
    *   'Run', 'Breakpoint', 'Step over', 'Step into', 'Set cursor to line'
    * 2nd row are key combos:
    *   'ctrl-alt-delete', 'ctrl-shift-escape' 
    * 3rd row are macros keys:
    *   'P0' - 'P5' execute a script on Windows machines 
    * ,-----------------------------------------------------------------------.
    * | ESC | F5   | F9 | F10 | F11 |S+F11|CSF10|NLock|Num7 |Num8 |Num9 | Del |
    * |-----------------------------------------------------------------------|
    * |     |C/A/D|C/S/E| Ins |Print|Pause|SLock|Num0 |Num4 |Num5 |Num6 |Num= |
    * |-----------------------------------------------------------------------|
    * |     | P0  | P1  | P2  | P3  | P4  | P5  |Num. |Num1 |Num2 |Num3 |Num/ |
    * |-----------------------------------------------------------------------|
    * |     |User |     |     |     |     |     |     |Home |PgDn |PgUp | End |
    * `-----------------------------------------------------------------------'
    * 2: fn right/raise layer
    * ,-----------------------------------------------------------------------.
    * | F1  | F2  | F3  | F4  |F5   | F6  | F7  | F8  | F9  | F10 | F11 | F12 |
    * |-----------------------------------------------------------------------|
    * |     | !   | @   | #   | $   | %   | ^   | &   | *   | -   | +   | =   |
    * |-----------------------------------------------------------------------|
    * |     | _   | '   | "   | `   | ~   | ,   | .   | ]   | )   | }   | >   |
    * |-----------------------------------------------------------------------|
    * |     |NextT|PrevT|     |     |     | Esc |     |Mute |Vol- |Vol+ | P/P |
    * `-----------------------------------------------------------------------'
    */

Create keymap_matthew.c · qmk/qmk_firmware@1e0ae293 2015年1月には他のキーボードのキーマップにもraise / lowerのアイデアが輸出されています。

引き続き徐々にRaise / Lowerのアイデアは広がっていきます。Adding my initial layout · qmk/qmk_firmware@073a6c2ではRaiseは数字とファンクションキー、LowerはColemak配列など割と大胆な割り当てになっています。この時点ですでに指向性はほぼない雰囲気ですね。

一気に飛んで、では最新のPlanck用defaultキーマップはどうなっているかというとこうです。 qmk_firmware/keymap.c at 50835bb13875843cac0236995afe86508744e595 · qmk/qmk_firmware

/* Lower
 * ,-----------------------------------------------------------------------------------.
 * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | | Home | End  |      |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
 * `-----------------------------------------------------------------------------------'
 *
 * Raise
 * ,-----------------------------------------------------------------------------------.
 * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |Pg Up |Pg Dn |      |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
 * `-----------------------------------------------------------------------------------'
 *
 * Adjust (Lower + Raise)
 *                      v------------------------RGB CONTROL--------------------v
 * ,-----------------------------------------------------------------------------------.
 * |      | Reset|Debug | RGB  |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-|  Del |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |      |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover|      |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf|      |      |      |
 * |------+------+------+------+------+------+------+------+------+------+------+------|
 * |      |      |      |      |      |             |      |      |      |      |      |
 * `-----------------------------------------------------------------------------------'
 */

LowerとRaiseについては大分変わっています。Adjustについても大きく変わっていますが、ここについてはレイヤーの切り替えやキーボード自体のRGB操作など、Adjust(調整)という名前に沿ってキーが配置されているように見えます。 簡単に他のadjustレイヤーを調べてみたところでも、同傾向があるようでした。

まとめ

というわけで、Raise / Lower / Adjustの起源とそれの推奨される使い方があるのかの調査を行いました。 それらレイヤーの起源はわかったものの、RaiseとLowerレイヤーの使い方は当時からかなりバラバラで特に定まった使い方はないようです。 そもそもRaise / Lowerという名前自体とても汎用的なものなので、どうとでも使えるように、というかどうとでも使えるために誰でも使いよく広まったと考えられるかもしれません。 ただの数字だけのレイヤー1, レイヤー2よりもRaiseレイヤー、Lowerレイヤーという物理的なメタファの意味合いを含んでいたためより多くの人にイメージしやすかったという側面もあると思います。 一方でAdjustレイヤーについてはキーボード自体の設定を変更する目的で普段のタイピング目的とは違う、単なるON/OFFスイッチなどとして使う傾向があるようです。

Universal Keymapシリーズ② 分割型40%キーボード(など)のキーマップを列挙してみる

というわけで、(ダウンロード版)自作キーボードカタログ 2020 - 自キ温泉街販売所 - BOOTHに載っている分割型40%キーボードを中心にキーマップを列挙してみます。

目次

参考にするキーボード一覧

注意書き: 以下では基本的にqmk_firmwareリポジトリ内のキーマップ定義コードとqmk configuratorでの描画先リンクを書きますが、この両者が必ずしも対応しているとは限りません。というのもqmk configurator側の描画用定義はqmk firmwareとは別に管理されており、自動で更新されるような性質でもないためです。

分割型40%

ErgoDashMini
Caravelle-BLE
Claw44
Silverbullet44
Corne(Cherry)
uzu42

分割型60 ~ 80%

基本的には分割型40%をベースに設計しますが、60 ~ 80%のキーボードの中でも比較的有名なものを参考にします。

Fortitude60
Lily58
Ergodox Ez

一体型

基本的に(normal|row) staggeredなキーボードは今後使う予定はなく、treadstone48 のようなSymmetrical Staggeredなもの、分割型ベースで1枚のPCBに作ったbat43など分割型に似たものを使っています。 その他nomu30など、今持っているもの、将来購入したいものなどのキーマップを見ていきます。

Treadstone48
bat43
REVIUNG41
Nomu30

NEXT ACTION

次は上で列挙したキーマップを実際に比較して、最大公約数的なキーマップを探索します。

Universal Keymapシリーズ① 多彩な自作キーボードを使う上でのキーマップの問題

最近自作キーボードにハマっておりいろんなキーボードを作っています。 ただ、キーボードの数が増えるにつれてある問題が浮上してきました。そう、キーマップです。

目次

多数のキーボードを使うときのキーマップの問題

数年前にErgodox Ezを買ったときも結構時間をかけて決めていました( [Ergodox Ez] Apple JIS キーボードに寄せたキーマップを晒す - Qiita)。 ただErgodox Ezは80%キーボードであるため既存のキーボードとの差分は比較的少なくそれほどキー配置にこまることはありませんでした。そのとき私が持っていた非標準なキーボードはErgodoxだけであったこともあります。

しかし、今僕が持っているキーボードは以下です。

  • Ergo系80%
    • Ergodox Ez
  • Ergo系40%
    • Claw44
    • Caravele BLE
  • 一体型40%
    • Bat43
    • treadstone48
  • 一体型30%
    • nomu30

nomu30, Ergodox Ezを除いては概ね40%キーボードではあるものの、親指周辺のキー数、配置などは微妙に違います。また各キーボードのデフォルトのキーマップもLayer0はQWERTY・レイヤー数も3枚(いわゆるRaiseとLower)という点こそ共通であるものの、Layer1, 2は各々かなり異なります。 数字をQWERTY行に横へ並べたもの、QWERTASDFGへ1~0を割り当てたもの、矢印キーをvim風にHJKLへ割り当てたもの、JIKMへ割り当てたものなどなど・・・。これらのキーボードそれぞれのデフォルトキーマップを覚えるのはちょっと現実的ではないでしょう。

そこで、異なる物理キー配置のキーボード間でも一貫したキーマップを作る必要が出てくるわけです。

一貫したキーマップに求められるもの

キーマップが一貫するようにする

直近で持っている自作キーボードは前述の通り分割型40%ないし分割型40%に似たキーボードが多いです。 これに加えてErgoDox Ezという80%キーボードがあります。 これらをほぼ同時期に使うなら、キーマップがある程度揃っていることはほぼ必須です。おそらく一番利用する分割型40%キーボード(親指キーが3つずつ型)をベースにそれ以上のキーがあるものは1キーへ2つ以上のキーを割り当てているものを改めて1つの物理キーへ割り当てたり、数字キーの列があるものは単に追加の数字キーとして扱う、などのようにすれば良いと思います。逆に30%キーボードは親指へ割り当てているキーをZの行へ割り当てるなどをして極力基本とUpper / Lowerのレイヤーは揃えるようにします。

なるべく40%分割型の標準形に合わせる

今回決めるキーマップを長く使えるものにしたいと思っています。 長く使えるためにはなるべく突飛な配置ではなく、既存のキーマップの最大公約数的なものにしておいたほうがよいということが言えます。なるべく標準的なキーマップにしておけば新しいアイデアなどが出てきたときにその新しいアイデアだけを取り込みやすいです。突飛な配置にしていると、まずそれとそのアイデアの部分を自分一人で折り合わせなければならず、結果的にキーマップがobsoletedになるということが容易に想像できます。

また可能であれば他の人にも使ってもらえれば最高ですし、他人と共有・あわよくばpull requestがもらえるようになればメンテナンスを自分一人でやる必要がなくなります。1人ではなく複数人でメンテナンスすることによるクオリティの上昇は説明するまでもありません。

キーマップはUS配列をベースにする

JIS配列とUS配列、以前からUS配列には興味がありましたが移行コストやあえてUS配列のキーボードを買う動機がなかったためJISで満足していました。 しかし、自作キーボードの場合基本的にASCIIキーボードが多いこと、記号キーなどの点でASCII配列に利点があること、キーキャップの印字がUSキーボードのものがほとんどであることなど総合的に勘案してこの期にUS配列へ移行することにしました。 上記の標準形に合わせる話とも少し関係しています。

基本はQWERTY

DVORAKやOEAなどの選択肢もありますが、今の所それほど必要性を感じていないこともあり主たるキーの配列は一般的なQWERTYで行きます。

個人的な追加要件

一般的なMAC JIS配列、109配列キーボードとの併用が前提

業務上、MacBookのキーボードを使ったりとっさにその辺の109キーボードを使うことが一定あります。今後もそういった機会はずっとあるでしょう。なので新しいキーマップはそれらのキーボードと併用したときに混乱しないものでなければなりません。例えば自作キーボードの方のみにあるキー、具体的には親指周辺のキーに新しいキーを割り当てることは何ら問題ありませんが109キーボードでいう左Winキーや左Alt, 左Ctrlなどに矢印キーなどを割り当てるととても混乱するでしょう。

OS側でのキー設定は極力いじらないようにする

具体的には「カタカナ/ひらがな」ボタンとEscapeをスワップしたり、CtrlキーとCapsLockキーをSwapしたりなどです。 一般的なキーボードで使い勝手を良くするために実行するのですが、そういった設定をしているOSへファームウェア的にCapsLockとCtrlを入れ替えている自作キーボードを接続するとまたAの左がCapsLockへ戻ってしまったりします。 こういった設定はOSレベルでしかできず接続している特定のキーボードでのみ入れ替えるといったことはできないこと、今後は自作のキーボードをメインで使うためこういった設定が必要になることは多くないことなどからこういったキー設定は基本的にしないこととします。なので、もしキー配置を変える場合はキーマップ側で対応することになります。

備考: Windowsでは以下で説明されているように 変換 無変換IMEのON / OFFを設定する前提とします

101キーのすべてのキーを網羅する

様々なキーマップを見ていると以外なことに PageUpPageDown を配置していないキーがかなり見つかります。 特に InsertPrint Screen Scroll Lock Pause はめったに配置されていません。 これらのキーは確かに使用頻度が低いですがまれに必要になることがありその際自作のキーボードでは押せないとなると著しく汎用性が落ちることになります。 そこで、それらのキーについても1箇所以上へ必ず割り当てられていることが必要です。

日本語入力に関わるキーを配置する余地を残す

qmk_firmwareで配布されているキーマップのほとんどは 半角/全角 変換 無変換 かな 英数 などのキーが配置されていません。これらがない場合日本語入力のためにAlt - `のように入力する必要が出てきます。これではとても不便です。 しかし、一方でこのキーボードはANSIベースを目指しており用途を日本人専用にもしたくありません。そこで、あくまでANSIキーボードベースでありつつ かな 英数 のような日本語入力・LANG1 / LANG2のような他の言語の言語辺関係キー入力もできるようにします。

具体的にはQMK Firmware で Raise/Lower と変換/無変換を同じキーに割り当てる - Okapies' Archiveを使ってレイヤー切り替えキーへそれらを割り当てる余地を残しておきます。 よってレイヤー切り替えキーは基本として M(...) を割り当て、言語系のキーを割り当てたいときのみ LT(...) を使います。

(want) MACとPCの両方で一貫して使用できるようにする

MAC用のキーボードとWindows用のキーボードでは特に左下のメタキーの位置が違ったりします。その辺りの挙動が一貫するようにしたいところ。

以上と、既存のmacbookや他人のキーボードをとっさに触る必要があるケースなども加味してキーマップを決める基準として以下を設定しました。

ネクストアクション

というわけで、まずは40%分割型キーボードのキーマップの最大公約数を求めてqmk firmwareのキーマップの海に潜ります。 幸い、分割型キーボードは親指部分のキー 2 ~ 4個、アルファベット部分36個前後に収束しつつあるので、それに該当するキーマップを調べていけば大多数の人間が合意できるキーマップが浮かび上がるんじゃないかと思います。

続く。

読書感想「Graphic Recorder ―議論を可視化するグラフィックレコーディングの教科書」

www.amazon.co.jp

議論を効率的に行うためのツールとして使えないかと思い読みました。 一通り読んだ感想としては期待通りのものですがやる人間の技術に効果が大きく依存するため、ワークショップや自主訓練を通じてある程度スキルを付けないとなかなかうまく行かないだろうなという感じです。 せっかくエンジニアなのでJam Boardなどデジタルホワイトボードでできないかと検討したのですが、初心者がやる場合はまずはアナログでしたほうがよさそうでした。 週末届くノートをもとにしばらく実践してみます。