rcmdnk's blog

Control Alt Delete Leadership (英語)

最近色々キー設定をいじり直した こともあって、ちょっと久しぶりにキーバインドを大幅に変更してみようと、 2週間くらいの間Alt(MacではCommand)とControl の位置変えをして試してみました。

主な目的はコマンドラインで作業している時の小指(Control)の負担を減らすことです。

小指の酷使

コマンドライン作業ではEmacs的な移動用のショートカットや さらにGnu screenでのショートカットでControlを酷使します。

vim編集だとそれ程モディファイヤーキーを使わないですが、 Escの代わりにControl-[を使いますし、 まあ、何だかんだでemacs編集程ではないにしろ使います。

当然Controlが左下のままでは使い物にならないので CapsLockがあるキーボードではCapsLockをControl化してますが それでもたまに小指を使い過ぎな感がしていました。

と、そこでAlt関連のキーを調べてる時に押して居たらControl (CapsLockの位置)よりよっぽど押しやすいんじゃなか、と思ったので、 今更ながらちょっと挑戦 1

Alt(Cmd)Controlの設定

Windowsではyamy、Macでは KeyRemap4MacBookでキーバインドを変更しているので、 これらで変更します。

Windows & yamy

Windowsの場合は元々CapsLockの場所をControlにする設定も yamyで行なっているため、今回は

  • CapsLockAlt
  • 左右のAltControl
  • 右のControlAlt

となるようにします。元々Controlの位置にあるキーはまず押さないので どちらでも良いのですが、ちょっと思い通りに動かない所があって AltをCntrol化した時に実際のControlキー との動作の違いを見る必要があったので左はそのままにしてあります。

Controlキーについては、たまに右手だけでAlt-/ のショートカットキーでブラウザなど戻る/進むを使う時があるので 変更してあります 2

Altについても、右Controlを今のところ使えてないので 無理に替える必要もないのですが、取り敢えず変更。 (Altの位置に来れば使えたら便利かもしれない、と。)

.mayu用設定項目は以下の通り。

alt_ctrl_swap.mayu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mod alt += CapsLock
mod alt += E0CapsLock
key *CapsLock = *LAlt
key *E0CapsLock = *LAlt
mod alt -= LAlt
mod alt -= RAlt
mod control += LAlt
mod control += RAlt
key *LAlt = *LControl
key *RAlt = *LControl

#mod control-= LControl
mod control -= RControl
#mod alt += LControl
mod alt += RControl

key *NumLock = $CapsLock
key *Apps = $CapsLock
key *RWin = $CapsLock
key A-Tab = C-Tab
key C-Tab = A-Tab

CapsLockの機能は一応右下に付いている アプリケーションキーや右Windowsキーがあったらそれに当てる様にしています。 (NumLockにも) 3

Alt/Control-Tabについてはかなり頻繁に使うキーで 逆にすると使い勝手が余りに悪かったので元の使い方が出来るように マップしてあります。

その他これ以外にもAltを含んで自分でマップしている様な設定については 適時直してあります 4

Mac & KeyRemap4MacBook

Macの場合はCapsLockについては環境設定からControl に変更しているので

  • 左右のCommandControl
  • 右のControlCommand

の変更でKeyRemap4MacBookでの設定は下の様な項目。

ctrl_cmd_swap_for_KeyRemap4MacBook.xml
1
2
3
4
5
6
7
8
<item>
  <name>Swap Ctrl-Cmd</name>
  <identifier>private.ctrl_cmd</identifier>
  <autogen> __KeyToKey__ KeyCode::COMMAND_L, KeyCode::CONTROL_L </autogen>
  <autogen> __KeyToKey__ KeyCode::COMMAND_R, KeyCode::CONTROL_R </autogen>
  <autogen> __KeyToKey__ KeyCode::CONTROL_L, KeyCode::COMMAND_L </autogen>
  <!--<autogen> __KeyToKey__ KeyCode::CONTROL_R, KeyCode::COMMAND_R </autogen>-->
</item>

この変更については、他のキーバインド変更の後で行なっても 有効になる様です 5

その他の変更

Gnu screenでこれまでprefixキーをtにしてきましたが、 左親指を内側に曲げた状態で右上のキーを打つことになってかなり打ちづらいので、 qに変更しました。

Control-tはコマンドラインでは前後の文字を入れ替える、と言う誰が使うか分からない 操作で、一方Control-q ターミナルコマンドで出力の再開、ですが、出力を止める(Control-s)を消しているので これも必要の無いキーです。

親指との押し安さ度は圧倒的にqなのでこれに変更です 6

問題点

Mac上での操作に関しては今のところ動作的におかしな動きは出ていません。 仮におかしな点があったとしても、いざとなれば環境設定から この辺りのキー変更を行えば問題なくなると思います。

一方、Windowsの方はyamyで変更しきれてない部分があるらしくちょっと おかしな動きを示します。

まず、Control-[を全ての場所で Escになる様に設定していましたが、 これがControlキー化したAltを使うとAlt-Esc の様な働きをします(Controlも効いているがさらにAlt成分が残っている)。

また、Control-h=BSとなる設定をしていますが、 これがメモ帳だと、最初に押した時は効かず、一度Control(へ変更したAlt) とAlt(へ変更したControl)を押してからAltだけ離して hを押すとBSとして働く、と言った奇妙な動きをします。

ここで不思議なのは、この現象が起こるソフトと起こらないソフトがあることで、 Thunderbirdなどでは正しく動きます。

さらに、sshクライアントとして使っているPuTTYで Control-hが正しく動きませんでした 7。 上にあるようにこのキーはBSにマップしてあるわけですが、 BS単体では正しく前の一文字を消せるので、また何か余計に動作しているみたいです 8。 これに関してはPuTTY上だけControl-h=Control-h としてそのままのキーを送る様にしてやると取り敢えずまともに動く様になりました。

ちなみにCygwinで使っているターミナル達ではこの問題は起こっていません。

これらの問題を左下に残した本来のControlで試すと 何も問題が無いのでやはり AltControl 変換の所で問題が起こっている様です。

そこで、レジストリーレベルでキーを変更してみたりもしてみたのですが 9、 yamyを動かすと変更が無効になるような動作をするので、上手くいかず。

この辺り、どれがどのようなレベルでどうやって変更しているのかちゃんと 理解しないといけませんが 10、 今のところ完璧に正しくは出来ていません。

やる気が出たら他のソフトでも試してみたい所ですが 11 差し当たり、PuTTYで問題が解決出来て、Thunderbird/cygwin/vimでも問題が無いので、 このまましばらく行こうと思います。

これまでのところの感想

2週間くらい続けた感じでは、いままでたまに小指がウラウラしてたのが無くなったので かなり快適です。

左親指を常に内側に曲げている様な形になるので、最初は暫くちょっと窮屈でしたが、 痛くなる様な形では無いし、慣れれば平気になりました。 ちょっとスペースを押すのが今までに比べて右手が多くなったかもしれません。 (余り意識してないので実際良くわからない。。。)

小指でControlを押す必要が無いので、 Control-aと言ったショートカットも手の位置をそのままに aを小指で押せます。

また、Firefox+Vimperatorだと、右手でトラックパッドやマウスなどで操作しながら 左手でControl-f/bでページを上下、 することが多いので、これは親指Controlのが近いので楽です。

ただ、小指を使わなくなった分、左Shiftへ手を伸ばすの事態が億劫になった 感がちょっとありますが、まあ慣れでしょう。

Altの位置にあるControlについては、今まで使う癖がなかったので 今のところ使えて無いですが、どうなんでしょうか…? Shiftについてはなんか上手い具合に左右を使っているわけですが 12、 意識的に使っていったら便利なのかもしれないと思い、 たまーに使う様に努力しています。 ただ、自分の癖か、右手の下の方が割りと左に偏ってる感がある 13のと、 キーボードよっては右Altの方が遠い事が多いので スペース右側のキーはそれ程押しやすいキーではなく、多分、編集やら コマンドライン作業では使わなそうです。

ということで、もうしばらくこのまま行ってみたいと思っています。

おまけ: キーボードについて

Macだと日本語キーボードでもUSキーボードでも大体左右対称です。

手元にあるMBA(USキーボードも)それぞれ左右x,の下に が来ています。

一方でWindows用(と言うかMac専用用以外)ではUSキーボドだと若干右に スペースキーが偏ってるのが多くて、 今使ってるシンプルなキーボード代表のHHKでも若干右に偏っています。

さらにこれなんかだと、もっと遠くでちょっと手を大きく動かさないと親指では届かなそう。

日本語キーボードだと無変換だとかいったキーがスペースキーの両サイドに来て、 そもそもAltが右側にない、というのも多いかも。

日本語キーボードの場合はMacの場合でも、これら日本語用のキーが来て Alt/Commandは遠くなってしまうので、 使うならこれらスペース横のキーをControlなりAltなりに変更するべきです。 そうするとむしろUSキーボードより真ん中になるので打ちやすいかも。 (これらのキーは位置的にはスペースでの日本語変換に準じて変換を行えるように ここにあるんでしょうね。使ったことが一切無いですが…)

Sponsored Links
  1. あまり根本的な所を変えるのもどうかと思いましたが、 人のPCなどだと所詮Control遥か左下にあるので、まあ、関係ないか、と。

  2. これらのキーはControl-o/iにマップして使ってます。

  3. なんらかの拍子でCapsLock状態になった時のため、と思ってやってますが、 キーを潰しておけばまず入ら無いしいざとなればyamyを一時停止すれば良いので、 やっぱり当てないほうが良いかも(微妙な位置にあるので)

  4. 今回は主にコマンドラインベースのショートカットキーの変更が目的なので、 その他の部分で、特に自分で変更しているAlt/Control 関連のショートカットキーはなるべくそのままの使い勝手になるようにしてます。

  5. 先にCommand-a=bの様な設定をしていても いずれかの場所で(この設定の前でも後ろでも) ControlをCommandに変える設定をすれば Ctonrol-aと押せばbが実行される。

  6. 小指Controlの場合だとqにしてしまうと手全体が左に動いてしまって ちょっと嫌な感じになるかも。

  7. Control-uの様な左の文字を一気に消す、になる。

  8. PuTTYの設定ではBSを押した時にどのようなキーを送るか (Control-h or Control-?)と言う設定はありますが その他に細かいキー設定は無い(と思う、少なくとも見た限り)。

  9. KeySwapChange Key と言ったソフトを使用。両方共レジストリーを書き換えてるだけだと思うので 同じことをしているんだと思います。これらで変更した後、yamyを止めているときは 正しく動きますが、yamyで初期のキー設定をロードしただけの状態でも キー配置が元に戻ります。ただし、調査でみてみると交換されているようにも見える。

  10. Vista/Windows 7におけるキーボードカスタマイズ問題 - A Successful Failure

  11. Yamyとその他のキーカスタマイズソフトについて

  12. これも実際どのキーの時どっちを押してるか自分でも良く分かってないですが…

  13. 人差し指でキーボードの真ん中辺りを指すと左右の指がそれぞれg/h 辺りをさして丁度真ん中ですが、親指を置いてみると左がvで右がb 辺りに来ている。

Sponsored Links

« Vim以外でVimする: Mac編 ファイル名やディレクトリ名の大文字小文字 »

}