ザ☆シュビドゥヴァーズの日記

毎日更新されたりされなかったりする日記

日本語配列キーボードを英字配列にマッピングした上で一部のキーを横にずらして使う話

さらです。

今日は練習でしたが、そんなことよりPCのキーボードの話をします。

f:id:the_shubidovers:20190615215500j:plain:w500 f:id:the_shubidovers:20190615215639j:plain:w500

PCのキーボードには英字配列と日本語配列があります。他にも色々ありますが、日本国内でよく売られているのは大抵このどちらかでしょう。

なんとなくキーボードはずっと英字配列の方が好きでした。 単純に慣れもありますが、右手側の記号が変に遠い位置とかに置かれていないのでホームポジションが崩れにくくて好きです。

そんな中、ちょっと訳あって日本語配列のキーボードが我が家に入荷されました。 試しに使ってみたのですが、まぁとにかく記号の位置が全然違うのでかなり混乱します。

そんなわけで、ソフトウェアでマッピングし直して無理矢理英字配列っぽく打てるようにしました。 ついでに色々と思いついたのでマッピングのソフトを使ってぼくがかんがえたさいきょうに効率的なキー配置に変えました。 今日はそれの紹介をしようと思います。

結論

まず元となる一般的な日本語配列 (HHKBの日本語配列版に準拠) がこんな感じです。ホームポジションに関連して、両手の人差し指が置かれる位置を赤く塗ってあります。

f:id:the_shubidovers:20190615215945p:plain:w800

今回この原型に対してあれこれマッピングを行い、出来上がった最終形はこちらになります。 マッピングにはkeyhacを使っています。

f:id:the_shubidovers:20190615220444p:plain:w800

この図の時点で既に誰がどう見ても合理的なので全く説明の必要は無いと思いますが、 一応ブログなのでいくつかステップに分けておおまかな変更を説明します。

ちなみにキーボードのキーキャップにのっている印字はそのままなので、私のキーボードは印字と全然違う挙動をすることになります。 例えば私のキーボードで"W"と印字されているキーを叩くと"W"ではなく"E"が入力されますし、左側で"CapsLock"と印字されているキーを押すと"A"が「入力」されます。

マッピング概略

英字配列にマッピングする

まず初めに申し上げた通り、全てのキーを一旦英字配列っぽく置き換えています。 キーの位置を入れ替えるだけでできそうに一瞬錯覚してしまいますが、残念ながら一部のキーはシフトを押した時の挙動が日本語配列と英字配列で異なります。 例えば英字配列ではshift+2で"という記号が入力されますが、英字配列ではこれが@になります。 よって、キーごとにシフトを押した時のパターンを全て書き直す必要があります。

    jhkb["Shift-6"] = "Caret"
    jhkb["Shift-7"] = "Shift-6"  # and
    jhkb["Shift-8"] = "Shift-Colon"  # asterisk
    jhkb["Shift-9"] = "Shift-8"  # (

これは根性でなんとかします。"Shift-0" -> "Shift-9" みたいなマッピングを一個一個書きます。

親指キーの扱い

日本語配列キーボードの大きな特徴として、一番下の列に英字配列よりも多数のキーが配置されていることが挙げられます。 英字配列のキーボードではスペースの他にCtrlとAlt辺りが並んでいますが、日本語配列では変換・無変換・かなキー辺りが追加され、スペースキーが少し小さくなっています。

f:id:the_shubidovers:20190615222212p:plain:w500
上: 英字配列 下: 日本語配列

以前もブログに書いた通り、親指は力が込めやすいので親指のキーは比較的気持ちよく押せると思っています。 更に親指は他の指と独立した動きをさせやすいので、キーを押しっぱなしでホールドみたいな挙動にも向いていると思います。逆に小指は力が入りにくいのでこうした面で少し不利に思います。

しかし実際のキーボード配列はどうなっているかというと、親指はスペース叩くくらいにしか使われず、 小指はエンター押したりバックスペース押したりシフトやコントロールを押しっぱなしにしたりと、小指に負荷が集中する仕組みになっています。 そもそもキーを押しっぱなしでホールドするのは小指の専売特許となっています。

せっかく親指のキーがこんなにたくさんあるので、小指キーの機能を可能な限り親指に集約し、一通り親指で制御できるようにしました。

f:id:the_shubidovers:20190615222428p:plain

できたのがこちら。(Layer2という謎キーについては後述します。)

中央付近のキーは二種類の挙動が割り当てられていますが、これは押しっぱなしの時と普通に押した時とで挙動が変わるようにマッピングしてあります。 例えばスペースをポンと叩くとスペースが入力されますが、スペースを押しっぱなしにするとコントロールキーとして機能します。 Ctrl+Qとか入力したければスペースを押しながらQを叩けばよいことになります。 これにより小指でキーを押さえる必要は無くなりました。ちなみにバックスペースは押しっぱなしにすることが多いのでここには2つ目の機能を入れていません。

手をキーボードに置くと親指は内側に来るので、当然スペースを中心に外側に行くほど押しにくいキーになります。これを考慮して外側のキーには比較的頻度の低い機能を置いています。

謎な位置に変換・無変換を配置していますが、これは私が変換を日本語入力オン、無変換を日本語入力オフに使っているためです。 英字入力したいときは左親指、日本語入力したい時は右親指を動かせばいいようにしています。 この辺はIMEの設定でできるのでググってください。ググったら出るのかな。分からない。

上段の数字列を分ける

f:id:the_shubidovers:20190615223124p:plain

最上段の数字列の配置には昔から少し違和感があります。 特に真ん中辺りの数字 (6とか) 、どっちの指で押したらいいのかよく分かりません。

今回は1~5を左手、6以上については右手で押すことにします。

f:id:the_shubidovers:20190615223153p:plain

右手で押しやすいように6以上の数字キーを全て一個右にずらし、6がYよりも右手側に来るようにします。これにより、右手の人差し指をまっすぐ上に伸ばして違和感なく触れられる位置に6が来ます。 右にずれたせいで右端のbackspaceがバックスラッシュに潰されて消滅していますが、どうせbackspaceは左親指で押すので関係ありません。

左手側を丸ごと一列横にずらす

f:id:the_shubidovers:20190615223719p:plain
BEFORE: 左人差し指と右人差し指の間は2キー分

f:id:the_shubidovers:20190615223359p:plain
左手全体が←にずれる

  • 左手側の無変換があまりに中央から遠すぎて親指で押しにくい
  • そもそも左右の手は離して置けた方が肩が開いて楽

という理由により、左手側をまるごと一列左側にずらします。

これによりTabや左Shiftなどの左小指キーが全て潰されますが、どうせ親指で押すので関係ありません。Escは大抵Ctrl+[とかで代用できます。CapsLockはそもそもいらない。

あと左手と右手の間で真ん中の一列が空きます。 ここは両手の人差し指を伸ばすと届く位置で案外押しやすいので、利用頻度の割に遠い位置に配置されている記号、\~などを置いています。特に\はこの位置の方が個人的には格段に押しやすく感じます。ただ最上段(元々5や6があった位置)はかなり押しにくいのでここは適当なキーで埋めてあります。

なお左右の手を離して置くという意味では右手も右側に動かしてしまってもよいのですが、あえて右手側は元の位置に残してあります。 諸事情により右手側に単体Shiftキーを残したいなどといった事情もいくらかはあるのですが、単純にこれ以上離すと今度はスペースが遠くなってしまうので、現在はこの位置にしています。

Layer2の定義

Spaceの隣にあるTabを押している間は2レイヤー目のマッピングに切り替わるようにしてあります。 例えば、これを押しながらWでスタートメニューを開いたり、Eで今開いているアプリケーションの一覧表示になったり、HJKLで4方向の矢印キーをそれぞれ入力できたりします。これによりアプリケーションの起動も切り替えもホームポジションから一度も手を離すことなくできます。, 辺りにマウスの右クリックを割り当てたりもしています。

終わりに

以上を全て施すと、結論でお見せしたこのようなキー配列が完成します。

f:id:the_shubidovers:20190615220444p:plain:w800

どうでしょう、とっても合理的だと思いませんか?

みなさんもうっかり日本語配列のノートパソコンを買ってしまった時などは試してみてください。