xmodmapでキーマップを変更する

キーボードはHappy Hacking Keyboard Lite2の日本語

.xmodmaprcをつくる

! 無変換キーをAltに
clear mod1
keycode 102 = Alt_L
add mod1 = Alt_L

! 変換キーをShiftに
clear shift
keycode 100 = Shift_R
add shift = Shift_L Shift_R

! 半角全角を無変換キーに
keycode 49 = Muhenkan

! 左AltをWindowsキーに
clear mod4
keycode 64 = Super_L
add mod4 = Super_L

! Kanaを変換キーに
keycode 101 = Henkan

! 右AltをCtrlに
clear control
keycode 108 = Control_R
add control = Control_L Control_R


.zshrcに追記

xmodmap ~/.xmodmaprc


これでSCIMの設定で

  • 無変換キーでSCIMの終了
  • 変換キーでSCIMの開始

と設定する。
これはMacの日本語キーボードにある「英数」「かな」キーのパクリ。「全角/半角」「Ctrl+Space」でのIMトグルは、切り替える前に現在のIMの状態を確認しなければならず煩わしい。


スペースバーの左右は、親指で押しやすい。ここに修飾キーを置いておけば、ホームポジションを崩すことなく入力が可能になる。
親指はホームポジションを保ったままで広い範囲をカバーできるが、実際に押しやすいと感じられるのはスペースバーからキー2つ分(上の画像でいうと無変換・変換キー)くらい。その隣までいくと親指で押すのは負担が大きく、またブラインドタッチも難しい。


本来左右に配置されているShiftキーはまあまあ利用頻度が高く、小指が疲れると感じたので親指で押しやすい位置に持ってきた。特に右Shiftはホームポジションから非常に離れていて、普段めったに使わない。
Altキーはそれほど利用頻度が高くないのでここにするか迷った。利用頻度の高い修飾キーとなるとControlだが、Aの隣にControlがあることに慣れすぎているので、ControlはそのままでAltを配置することにした。
Windows(Super)キーは利用頻度が低いのでこの位置。GNOMEの設定で、Super+矢印で音量変更や音楽プレーヤの制御ができるようにした。
右側のControlはとくに考えずに配置。たぶん使わない。

今後の課題 - Space and Shift

このキーボードのスペースキーとその両隣のキーは他のキーと異なる形をしている。

微妙な違いだが中央の3つのキーは丸みを帯びていて、親指で押すのが快適になっている。その隣のキーは他のキーと同じ形状で、これは親指では押しづらいし、角が当たって指が痛くなる。


親指を有効活用したいが、キーの形状から、できれば中央の3つのキーだけを使いたい。
そこで、Space and Shift(SandS)という、「スペースを単体で押すとスペースが入力され、スペースを押したまま他のキーを押すとShift+キーの入力になる」という機能。
この機能をLinuxで使うにはカーネルにパッチを当ててコンパイルするという敷居の高そうな作業が必要と聞いてあきらめていたが、最近「窓使いの憂鬱」がLinuxに移植され、SandSが容易に実現できるようになっているらしい。
http://members.at.infoseek.co.jp/hattoushin_uma/


窓使いの憂鬱」を使って、SandSだけでなく、無変換 and Alt(単体で押すとIM Off、他のキーとの組合せでAlt修飾)などを実現できれば、中央3つのキーに修飾キー・スペース・IMオンオフの機能を割り当てられる。ぜひ使い方を覚えたい。


また、上記の配置は主にWebブラウジング中にURLを打ったり日本語で検索したりとIMを頻繁に切り替える用途を想定しているが、日本語入力がそれほど必要ではない作業、プログラミングなどにはこちらの方法も良さそうだ。
http://d.hatena.ne.jp/Ubuntu/20080725/remapkey この記事ではスペースの両隣にEsc, Enterを配置している。