これは、キーボード #2 Advent Calendar 2024 の3日目の記事です。
昨日は、村八式分 さんによる「自作キーボードは大学のときにこそ始めたかった」でした。
最終結論キー数が33キーというのは、なかなか極まってらっしゃいますね… 自分にとっては未だ思考実験の領域です…
こんにちは!
キーマッピング歴9年目(自作キーボード歴2年目)の中堅キーマッパー、マナブ と申します。
この記事は、自作キーボードで初めてのキーマップを作成し、「もっと使いやすくならないかな」とか、「よりよいキーマップを作りたいな」と考えている方に向けて書きました。
皆さんが初めて、キーマップをカスタマイズしたのはいつですか?
誰しも最初は、まだ自分がどこまで使いこなせるのか分からない中で、こわごわ設定していたのではないでしょうか。
それが次第に、キーマップにある程度、慣れてきて、キーマッピングでやりたいことが明確になり、それが煮詰まってきた段階で、キーマップを修正したくなってくると思います。
キーマップを修正したくなる理由は主に以下の2つでしょう。
- 実際に使用している中で新たな使いづらさに気づく
- 習慣化されてより複雑な運指に耐えられるようになる
しかし、いざ「キーマップを修正しよう」と思い立っても、ただ漫然とキーを並べるだけでは、また使いづらいキーマップが出来上がってしまうかもしれません。
そのため、キーマッピングには「再解釈」が必要になってきます。
では一体、どのようにキーマッピングを再解釈すればいいのか。
今回は、その話を掘り下げていきます。
キーマップをレイヤー単位で考えるのをやめないか?
この記事で最も言いたいのが、
「レイヤー単位でキーマップを考えるのをやめてみたら?」
ということです。
キーマッピングを覚えたての誰もが最初に感動するのは、「レイヤー」という概念ではないでしょうか。
しかし恐らく、その衝撃が強すぎるのです。
もし、自分のキーマップに慣れてもなお、そのキーマップが「使いづらい」と感じるなら、それは、もしかすると「レイヤー」という考え方に囚われすぎているせいかもしれません。
あくまでこれは個人的な主観ですが、実はレイヤーは、「設定するときに」都合のいい考え方にしか過ぎず、使う上でも都合のいい考え方、というわけではないのです。
それゆえ多くの場合、キーマップは、レイヤーを設定したときのワクワク感がピークで、実際に使う段になると「どうにも使いづらい」ということになります。
…いや、待てよと。
ということは逆に、あらかじめ「使うときのこと」を考えながらキーマップを作成すれば、より「使いやすい」キーマップになるのではないでしょうか?
そんなわけで、ここでは「戦略的に」使いやすくなるよう考えた、キーマッピング手法をご紹介します。
少しでも皆さんのキーマッピングの参考になれば幸いです。
戦略的なキーマッピング手法
さっそく内容に入っていきます。まず、戦略的なキーマッピング手法を考える上で鍵となる要素は、以下の3つです。
⓵ タップ・ホールドの解釈
⓶ キーマップ方針
⓷ キーマッピング手順
それぞれ説明していきます。
① タップ・ホールドの解釈
まず最初はタップ・ホールドについてです。キーマッピングにおいて前提となる考え方なので、3つの STEP でおさらいしましょう。
[ STEP 1 ]各指におけるタップ・ホールドの適正
まず、タップに向いている指と、ホールドに向いている指があります。
というのも、親指と他の指(以下、フィンガーと呼ぶ)では、そもそも屈伸の方向が違うからです。
フィンガーは親指よりも、キーの連打が得意です。従って、キーのタップとして使うことに適しています。
一方、フィンガーをホールドにした場合、その指が担当していた別のキーはもちろんのこと、同じ手の残りのフィンガーの動きも制限されてしまいます。これはフィンガーの「タップに向いている」という特徴と相容れません。
従って、親指は(消去法的に & 比較的)ホールドに適していることになります。
ただ、フィンガーは片手に4本ずつありますので、さらにそれぞれについて、ホールドとしての向き不向きを考えることができます。
前述の通りフィンガーホールドは(特に残りの)指の可動範囲が制限されることが問題でした。
実際に試せば分かりますが、この影響が比較的、小さいのは “端” にある指、つまり 小指・人差し指 です。
従って「ホールド機能としては、まず親指、次に小指・人差し指、そして薬指・中指の順に使い勝手がいい」ということになります。なので重要なホールド機能から順に、それらを割り当てるのがいいでしょう。
[ STEP 2 ]ホールド機能の「重要度」の違い
では、その重要なホールド機能とは何でしょうか。
個人的には、使用頻度を考えたときに、「全てのアルファベットと満遍なく組み合わせて使う可能性が高いもの」が、より重要だと考えています。
例えば Shift キー。そして Windows なら Ctrl キー、Mac なら Command キーが含まれるでしょうか。当然、メインのレイヤーに遷移するためのレイヤーキーも、これに該当します。
それらのホールド機能を親指キーに割り当てれば、親指ホールドとフィンガータップの組み合わせで、大抵の重要なショートカットは網羅できることになります。
[ STEP 3 ]支配的な修飾キーと補助的な修飾キー
しかし、ここで問題があります。それは、親指が片手に1本ずつしかないということです。
このせいで、例えば Ctrl と Shift をどちらも親指にしか割り当てなかった場合、「Ctrl+Shit+」という組み合わせが、片手で押せなくなります。これでは Ctrl+Shift+Tab などで困ります。
これが、フィンガーホールドの必要な理由です。
どういうことか。
まず、これは特に Mac で顕著なのですが、修飾キーには「支配的」なものと、「補助的」なものがあります。
例えば Shift は、アルファベットキーと組み合わせて「大文字アルファベットを入力する」という支配的な機能がありますが、Tab や Enterと組み合わせて「逆方向にする」という補助的な機能もあります。検索の Ctrl+G と Ctrl+Shift+G の関係性が「逆方向」としての Shift の機能ですし、Mac なら ⌘Z と ⌘⇧Z でもそうです。
つまり、先ほど[ STEP 2 ]で言及した「重要度」とはすなわち、「支配的な修飾キーであるかどうか」を指していた、ということになります。従って、「より支配的な修飾キーである Ctrl や Command は親指キーに割り当てるとよい」と表現することもできます。
その結果、親指キーがそれらの支配的な修飾キーに取られてしまったので、「補助的な修飾キーはフィンガーに割り当てるしかなくなる」というわけです。
[ タップ・ホールドの解釈 まとめ ]
以上が、キーマッピングの前提となる、タップ・ホールドの解釈についてでした。
簡潔にまとめると、以下の3点です。
- 親指はホールドに向いており、フィンガーはタップに向いている
- ホールド機能は、重要なものから「親指 > 小指・人差し指 > 薬指・中指」の順に割り当てるとよい
- フィンガーホールドには、補助的な機能がある修飾キーを割り当てるとよい
これらを、「親指ホールドに何を割り当てるべきか?」ということの参考にしてみてください。
⓶ キーマップ方針
次にキーマップ方針についてです。これは実際にキーマップを作成する上での「思想」を成す部分で、以下の3つが挙げられます。
[ 方針1 ]両手で打つほうが速くて楽だが、片手でも打てるようにすると便利
世の中のキーマッピングでは恐らくあまり意識されていませんが、ひときわ重要なポイントがこの[ 方針1 ]です。
我々は通常、両手をホームポジションに置いた状態を想定してキーマップを作成しますが、実際には、その「理想的な状態」でないことも多々あります。
例えば、その最たるものが「ポインティングデバイスを操作しているとき」です。当然、片手をポインティングデバイスに、もう片手をキーボードに置いている方が大半ではないでしょうか。
もしくは、片手でスマホを操作していたり、紙にペンでメモを取っているとき。他にも、痒いところを掻いていたり、頬杖をついていたり、コーヒーを飲んでいたり… そういったシチュエーションが、まだまだあるでしょう。
つまり何が言いたいのかというと、「キーボードを片手で操作する状況が、無視できないだけ存在するのであれば、片手でも打てるようなキーマップを想定して然るべきだ」ということです。
[ 方針2 ]ホームポジション+1キーを「指の可動範囲」とする
次に「指の可動範囲」についてです。
これはもはや自作キーボード界隈(の一部)では “準・常識” のようなものですが、多くの現代人は、フルキーボードの範囲をタッチタイピングできる能力を持ち合わせていません。
通常、タッチタイピング可能なのは、せいぜいホームポジションと、そこから上下左右に1キーずつ広げた範囲でしょう。
従って[ 方針2 ]でも、その「ホームポジション+1キー」の範囲を、「指の可動範囲」として設定します。
[ 方針3 ]対照な機能は横に並べ、同族な機能は近くに固め、相似な機能は同じキーに置く
最後の3つ目の方針は、各キーに機能を配置するときの、より具体的な「並べ方」についてです。
これは個々人で好みが分かれると思いますが、これも捉え方の1つとしてご参考ください。
まず、「対照な機能」というのは、文字通り真逆の機能を指します。
例えばカッコ。開きカッコと閉じカッコは対照な機能です。だから横に並べます。次に Backspace と Delete。これも対照的な機能ですので横に並べるのが道理です。
そして忘れられがちなのは Tab と Shift+Tab です。Tab は「次の項目へのフォーカス」 、Shift+Tab は「前の項目へのフォーカス」という、これも対照的な機能ですので、横に並んでいなければ使いづらいでしょう?
特に Ctrl+Tab に対する Ctrl+Shift+Tab の、デフォルトでの使いづらさと言ったら。とても正気じゃありません。直ちに改めましょう。
次に、「同族な機能」です。これは一般的な発想でしょう。
自作キーボードで「キーマッピング」と言ったら恐らく普通はこれがメインで、「似た機能を持ったものは、近い範囲に集めておくと使いやすいし覚えやすいよね」ということです。
デフォルトでも数字キーやファンクションキーはそれぞれ1行にまとまっていますし、自作キーボード界隈では、+ー*/ といった算術記号や、!? などの記号を固めて配置できるのが、強みの1つとされています。
こういった機能的な観点だけではなく、個人的には「似た形状の記号も同族とみなす」ことにしています。
残る、「相似な機能」というのは聞き慣れない用語かもしれません。
これは、大カッコ [] と 中カッコ {} や、カギカッコ「」と 二重カギカッコ『』のことを思い浮かべてください。デフォルトで、どちらの組み合わせも「同じキーに配置」されています。では、これらのカッコをどう使い分けていたかというと、Shift キーの有無によって使い分けていました。
同様に、カーソル移動・単語移動・ページ移動 など、「スケールは異なるが似たような機能」のことを「相似な機能」と呼んでいます。
これらの「相似な」組み合わせを[ 方針3 ]では、デフォルトの大カッコの事例に倣って「同じキー」に配置し、修飾キーなどを組み合わせることで使い分けるようにしています。
⓷ キーマッピング手順
前置きが長くなりましたが、ここからが本題です。
戦略的なキーマッピング手法における、具体的なキーマッピング手順を4段階に分けて解説いたします。
[ 手順1 ]用途やシチュエーションごとに、手の置いている場所を「そのシチュエーションにおけるホームポジション」と定める
例えば、文章を書いているシチュエーションでは、両手をキーボードに置いている状態を。マウスを使うようなシチュエーションでは、左片手をキーボードに右片手をマウスに置いている状態を。
それぞれのシチュエーションにおいて、それぞれのシチュえーションの「ホームポジション」を定義する、ということです。
一般的に、いわゆるホームポジションから離れたキーやマウスを操作すると、手を動かすのが面倒だし、タイムロスになるので、キーマップは「できる限りの操作をホームポジションで行えるように作成するといい」と言われます。
しかし、本当にそうでしょうか? 皆さんはマウスを完全に手放したいですか?
マウスは手放したくない。でも手の移動は少なくしたい。
そうお悩みなら、こう考えてみてはいかがでしょうか。
要は、手の移動が少なくなればいいのだから、ひとたびホームポジションから離れたなら今度は、できる限りその離れた場所から帰ってこなければいいのです。
このことに気づけないと、マウスを触っているときに使いたい機能までも、もとの、キーボードのホームポジションに配置してしまい、理想と現実の狭間で使いづらさに苦しむキーマップが出来上がってしまいます。
そして、この手順で需要なのは「ホームポジションを解釈拡大している」ということです。
なので、ここからは便宜上、「ホームポジション」と言ったら「そのシチュエーションごとのホームポジション」のことを指すとします。
それと区別するために、本来の意味での狭義の「ホームポジション」を、絶対的なホームポジション、略して “絶対ホームポジション” と呼ぶことにします。
[ 手順2 ]それぞれのホームポジション+1キーの範囲を「そのシチュエーションにおける指の可動範囲」とする
前の手順でシチュエーションごとのホームポジションを考えました。
そこから上下左右に指を伸ばして、無理なく指の届く範囲が、「そのシチュエーションにおける指の可動範囲」です。
例えば、天キー6%において、サリチル酸さんが、
「左手で電話しながら右手でマウスを触っているときには、キーボードの右端の BS や Enter、カーソルキーを使う」
と仰っていました。
これは今回の考え方に当てはめるとすれば、
「電話というシチュエーション」においては、「左手を受話器(耳元)に、右手をマウスに置くのがホームポジション」であり、そこから指を伸ばして届く「キーボードの右端」を、「そのシチュエーションにおける右手親指の可動範囲」
と定義していらっしゃる、と解釈できます。
実際に、サリチル酸さんも、「ホームポジションから打つ BS キーと、ホームポジションじゃないところから打つ BS キー」と仰っており、“絶対ホームポジション” に手を置いていないときのためのキー(マップ)が必要であることを示唆されています。
ここで言いたいのは、まさにそういうことです。
[ 手順3 ]両手指の可動範囲から、考えうる「使用する指の可動範囲の組み合わせパターン」を洗い出す
例えば、両手を “絶対ホームポジション” に置いている場合、考えうる「使用する指の可動範囲の組み合わせパターン」は以下の4パターンです。
- パターン1: 左親指 × 左フィンガー
- パターン2: 左親指 × 右フィンガー
- パターン3: 右親指 × 右フィンガー
- パターン4: 右親指 × 左フィンガー
このように、基本的に親指とフィンガーを分けて考え、その組み合わせパターンを洗い出します。
[ 手順4 ]シチュエーションごとに必要な機能を洗い出し、順番に「指の可動範囲の組み合わせパターン」内へ割り当てていく
個人的には、カーソル移動、Enter、BS… これらの基本的な機能は特に重要なので、当然ですが、両手を “絶対ホームポジション” に置いたシチュエーション および、左片手のみを “絶対ホームポジション” に置いたシチュエーション の両方に割り当てています。
[ キーマッピング手順 まとめ ]
ここで言いたかったことは、
「キーマッピングは、レイヤーごとに考えるのではなく、シチュエーションごとに考えよう!」
ということです。
ぜひ、試してみてください。
おわりに
ここまで、いかがでしたでしょうか。
いやはや、本当は私のキーマップまで具体的にご紹介したかったのですが、既に想像以上の長文となってしまったため、また別の機会に譲ることといたします。
ここまでお読みいただきありがとうございました。またお会いしましょう!