VMware FusionでUbuntuを使う場合、使用するキーボードは(別のキーボードを外付けしない限り)Macのキーボードになります。ところが、MacのJISキーボードとPC/AT互換機のJISキーボードは一見似ているものの、一部のキーの配置が異なったり、あったりなかったりして、微妙に使い勝手が悪いです。
気にしなければどうって事はないのですが、気にし出すとどうにもこれが気持ちが悪いので、少しでもマシになるように設定をいじってみました。
MacのキーボードとPC/AT互換機のキーボードの違いは特にキーボードの左側に集中しています。
いろいろと違いはありますが、とりあえず、以下のようにキーを対応させました。
Mac | Ubuntu |
---|---|
command | Ctrl |
Control | CapsLock |
英数 | 無変換 |
また、英数キーで半角英数を、かなキーでかなをそれぞれ入力出来るように設定を変更しました。
CapsLockは、必要ない人は設定しなくても良いと思います。Control + 矢印キーでSpasesの切替を行っている場合、ControlにCapsLockを割り振っていると、画面を切り替える時にCapsLockも適応されてしまって、ちょいウザなので。
設定の方法
というわけで、設定していきたいと思います。
VMware Fusionでの設定
まずは、VMware Fusion上でキーの割り振りを決めてしまいます。デフォルトのキーマッピングと異なる設定は以下の通りです。
- commandキーをCtrlキーに
- ControlキーをWindowsキーに(CapsLockも設定する場合)
画像では「command + x」などの設定が消えていますが、これはcommandキーをCtrlキーに割り当てたことで不要となったので削除しました。
command + Fなどのショートカットも削除して良さそうな気がしますが、よく分かんないのでとりあえずそのまま残しています。いらなければ削除してください。
この設定をUbuntuのキーボードとマウスのプロファイルとして保存して、UbuntuのVMと関連づけておくと捗ります。
Ubuntuでのキーマップの設定
ここまででcommandキーをCtrlキーとして機能させる設定は完了したので、残りはUbuntu上で設定します。ここで、
なんかややこしいですが、まとめると以下のような感じです。
Mac | VMwareFusion上 | Ubuntu上 |
---|---|---|
command | Ctrl | Ctrl(VMと同じ) |
英数 | 英数(Macと同じ) | 無変換 |
Control | Windows | CapsLock |
まずはxevコマンドでcontrolキーと英数キーに割り当てられているキーコードを取得します。
xevコマンドを実行すると待機状態になるので、ここでcontrolキーを押します。すると以下のような文字列が出て来ると思います。
$ xev
(中略)
KeyPress event, serial 33, synthetic NO, window 0x4200001,
root 0x102, subw 0x0, time 174561, (387,257), root:(394,359),
state 0x0, keycode 133 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x4200001,
root 0x102, subw 0x0, time 174569, (387,257), root:(394,359),
state 0x2, keycode 133 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
PropertyNotify event, serial 33, synthetic NO, window 0x4200001,
atom 0x142 (XKLAVIER_STATE), time 174570, state PropertyNewValue
ここでは「keycode 133」とあるので、controlキーに割り当てられているキーコードが「133」であることが分かります。
同様に英数キーのキーコードも調べておきます(たぶん66だと思いますが)。ちなみにxevは、ctrl + cで終了出来ます。
続いてそれぞれのキーに割り当てる機能を設定します。
まず、Xmodmapをエディタで開きます。
$vim ~/.Xmodmap
そして、以下のように記述します。
keycode 66 = Muhenkan
clear Lock
keycode 133 = Caps_Lock
Caps_Lockを使わない場合は、keycode 133の記述を省略します。その場合、ControlキーはControlキーとして機能します(たぶん)。
設定を保存したら、再ログインします。再ログイン後、以下のようにxmodmapコマンドを叩いて、66と133の設定がちゃんと反映されていればおk。
$ xmodmap -pke |grep Muhenkan
keycode 66 = Muhenkan NoSymbol Muhenkan
keycode 102 = Muhenkan NoSymbol Muhenkan
$ xmodmap -pke|grep Caps
keycode 133 = Caps_Lock NoSymbol Caps_Lock
IBusの設定
英数キーで半角英数、かなキーでかな入力が出来るように設定します。
メニューバーにあるキーボードのアイコンから「設定」を選択して、IBusの設定画面を出します。「Enable:」にかなキーを「Disable:」に英数キー(Ubuntu的には無変換キー)をそれぞれ割り当てます。
これで設定は完了です。ただ、以下のような微妙な問題は残ります。
- かなキーを押す度に 全角ひらがな > 全角カタカナ > 半角カタカナ と入力モードが切り替わってしまう
- CapsLockがかかった状態ではかな入力出来ない
まあそんな大きな問題ではないのでとりあえず放置しているのですが、良い解決方法を知っている人がいたら教えてプリーズ。