![DALL·E Feb 4 Create wide heade.jpg](https://cdn-ak.f.st-hatena.com/images/fotolife/m/masatora_bd5/20240204/20240204115255.jpg) ## キーマップのWWH [[Keyboardio]] の [[Atreus]] というコンパクトなキーボードを、気持ちよく使っています。 キーの数が44個、いわゆる40%キーボードなので、打ちたい文字に対するキー数が足りません。そこで、レイヤー機能をもちい、いわばキーボードを仮想的に「何枚か切りかえて」文字を打ちます。 このレイヤー機能がモダン・キーボードのたのしみでもあります。たくさんの先人が、さまざまなアイディアと、多数のキーマップを提案してくださっています。 まさに創意工夫の宝庫で、読んでいるだけでたのしいのですけれども(ほんとうに時間が溶けていきます)、いざ自分で使おうとおもうと、なかなかうまく行きません。 たとえば [Universal Keymapシリーズ](https://kbigwheel.hateblo.jp/entry/my-keymap) では、13個のキーマップを調べ上げ、40%キーボードの普遍的なレイアウトを調査・提案しておられます。[[Atreus]] 向けではありませんが、この知見はとても貴重です。 ところが、ここまで調べ上げた結果があっても、「そのままわたしのキーマップに落とす」ことは難しいのです。なぜなのかと考えたところ、おそらく「わたしのキーマップ」をつくるためには - なにを目指すキーマップにするのか( Why) - どのようなキーマップにするのか(What) をセットで考える必要があるようなのです。 > [!smile] ここでも [[WWH]] が登場です。 もちろん、どのようにキーマップを実現するか(How) もたいせつです。 ここでは [[Kaleidoscope]] の利用を前提としました。 [[Chrysalis]] では実現できない機能を多用しているためです。詳しくは [[📖240117_Kaleidoscopeでファームウェア作成]] をご覧ください。 ## なにを目指すキーマップにするのか(Why) かなり強い要望は下記です。 - 英数・かなキーをつかいたい - Emacsのカーソル移動系コマンドをつかいたい - `ESC` を気軽につかいたい - 数字がテンキー並びだとすごく打ちやすい 逆に要らなさそうなのは、 - 矢印キーは重要ではない - ファンクションキーはなくてもよさそう 技術的にできることは、 - 短押しと長押しでのキー切り替え([Qukeysプラグイン利用](https://qiita.com/hann-solo/items/4186afda422d28650ed7)) - 1回押しと複数回押しでの入力切り替え マッスルメモリの(現時点の)制約は、 - ピンク枠:親指ホームポジションと、ひとつ内側の区別があいまい。とくに右手 - オレンジ枠:一番センターのキーは見ないと打てない ![atreus-layout-blank.png](https://cdn-ak.f.st-hatena.com/images/fotolife/m/masatora_bd5/20240204/20240204110543.png) <span class="mxt-caption"> ▲ 苦手キーはずいぶん減ってきました</span> > [!frown] Emacs & Vim の祝福 > 四半世紀にわたるEmacsカーソル移動と、いちびって数年前に手を出したVimの手癖が中途半端に合体した結果、ここに至っています。もはや、しかたないのであります。 ## どのようなキーマップにするのか(What) キーマップのWhyが定まり、大きな論点としては、 - 数字は、横一列に並べるのと、テンキーのように並べるのと、両方入れる - Emacsのカーソル移動系コマンドの専用レイヤーをつくる - レイヤー構成は、Base, Symbol, Numpad, Emacs の4つにする - レイヤー切り替えは、Space, Enter, Aに割り当てる 力を抜くところは、 - ファンクションキーは、必要を感じるまで、含めない - 矢印キーはいい加減なかんじで入れておく と、かなりシンプルな骨組みが見えてきました > [!smile] Emacsレイヤー > 英数かなキーとEmacsレイヤーがキーボードで用意できれば、ついにiPad+キーボードでテキスト入力、という夢が実現するかもしれません ## キーマップ これらの方針をふまえて、こうなりました。 ``` /* BASE * +----------------------------------+ +----------------------------------+ * | ESC/Q| W | E | R | T | | Y | U | I | O | P | * | A/(3)| S | D | F | G +-------------+ H | J | K | L | ; | * | Z/SHF| X | C | V | B | XXX | BS | N | M | , | . | / | * |LShift| XXX | LAlt |英LGui| LCtrl|Spc(2)|Ent(1)|かRGui| かTAB| - | ' | ` | * +-----------------------------------------------------------------------------------+ */ /* SYMBOL * +----------------------------------+ +----------------------------------+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) | * | 1/(3)| 2 | 3 | 4 | 5 +-------------+ 6 | 7 | 8 | 9 | 0 | * | XXX | XXX | XXX | XXX | [/[] | (/() | ) | ] | XXX | Up | XXX | \ | * | ___ | ___ | ___ | ___ | ___ | ___ | ___ | ___ | Left | Down | Right| = | * +-----------------------------------------------------------------------------------+ */ /* NUMPAD * +----------------------------------+ +----------------------------------+ * | ___ | ___ | ___ | ___ | ___ | | = | 7 | 8 | 9 | BS | * | /(3)| ___ | ___ | ___ | ___ +-------------+ - | 4 | 5 | 6 | : | * | ___ | ___ | ___ | ___ | ___ | ___ | ___ | + | 1 | 2 | 3 | / | * | ___ | ___ | ___ | ___ | ___ | ___ | ___ | ___ | 0 | , | . | * | * +-----------------------------------------------------------------------------------+ */ /* EMACS * +----------------------------------+ +----------------------------------+ * | XXX | XXX | C-e | XXX | XXX | | XXX | XXX | TAB | XXX | Up | * | XXX | C-a | DEL | Right| ESC +-------------+ BS | Enter| C-k | XXX | XXX | * | XXX | XXX | XXX | XXX | Left | XXX | XXX | Down | Enter| XXX | XXX | XXX | * | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | * +-----------------------------------------------------------------------------------+ */ ``` inoファイルはこちらに置いておきます: [Atreus.ino · GitHub](https://gist.github.com/hnsol/edaf16fe5d4d679d980561923e048cad) > [!caution] Disclaimer > 公開されているinoファイルが少ないので、ご参考になるかとおもい掲載します。 > この記事の趣旨とは異なる設定ファイルに進化している可能性もあります。その節は平に御海容ください。 ### ほかのキーマップではあまり見かけない手法 - `ESC` の短押し/長押しを、`ESC`/ `Q` にしています - `Z` の短押し/長押しを、`SHIFT`/ `Z` にしています - `A+S` を `Ctrl-a` にしています じぶんの手癖を反映させているので、普遍性はあまりないかもしれません。 > [!smile] 普遍的ではない手癖をフルオーダーで反映させられるのが、キーマップ設定沼のおもしろさですね👍 ## 残課題 - 苦手キーまわりのアサインがまだ収束していません。 - また、左下(Sの下)が空いていてもったいないですが、よい方法を思いついていません。 - xcvあたりも、短押し/長押しで活用できそうですが、いい方法を思いついていません ## 参考リンク - [自キ活始めてからのキーマップの試行について 〜60%キーボードから40%キーマップを目指した結果〜](https://zenn.dev/tatsutanicov/articles/286f3d0f262f59) - [40%でも大丈夫!数字キーすらないキーボードのキーマップとは? - NENZOP](https://www.nenzop.net/entry/keyboard-my_key_map) - [河村亮介さんのキーマップ](https://twitter.com/Hottyhottea/status/1746166248185213158)