Mac上のLinuxでCommandキーとOptionキーを入れ替える
MacのVirtualBoxにインストールしたLinuxでCommandキーとOptionキーを入れ替える方法です。
概要
LinuxではAlt+Tabでアプリケーションを切り替えることができます。
他にもEmacsを使っているとAltキーを多用します。
MacのJISキーボードだとAltキーが押しにくい位置にあります。
またMacではCommand+Tabでアプリケーション切り替えなのでLinuxと使用するキーが違うという問題もあります。
なので、MacのVirtualBoxにインストールしたLinuxでCommandキーとOptionキーを入れ替えます。
構成
- MacBook Pro Early 2015 (macOS High Sierra)
- JISキーボード
- VirtualBox 5.2.8
- Lubuntu 16.04 LTS
設定方法
VirtualBoxのホストキーを変更する
Mac版VirtualBoxのデフォルト設定では左Commandキーはホストキーに割り当てられていますので、このままだとLinux上で使用することができません。
そこで、右Commandキーをホストキーに割り当てます。
VirtualBoxのメニューから"VirtualBox" -> "設定"で設定メニューを表示します。
"入力" -> "仮想マシン"と選択し、表示された一覧の"ホストキーの組み合わせ"の"ショートカット"を選択した状態で右Commandキーを押します。
Linux上でCommandキーとOptionキーを入れ替える
xevコマンドでキーコードを調べます。
Commandキーは133、Optionキーは64でした。
$ xev # Commandキーのキーコードは133 KeyPress event, serial 48, synthetic NO, window 0x2a00001, root 0x281, subw 0x0, time 210495, (100,-16), root:(230,34), state 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False # Optionキーのキーコードは64 KeyPress event, serial 48, synthetic NO, window 0x1200001, root 0x281, subw 0x0, time 948369, (545,579), root:(675,629), state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False
setxkbmapコマンドでどの設定ファイルが使用されているか調べます。
以下の実行結果を見るとキーコードはevdev
が使用されているようです。
$ setxkbmap -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+japan" }; xkb_symbols { include "pc+jp+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
/usr/share/X11/xkb/keycodes/evdevを修正します。
<LALT> = 64; <LWIN> = 133;
このようにOptionキー(キーコード: 64)はLALT、Commandキー(キーコード: 133)はLWINに割り当てられているので、これを入れ替えます。
<LWIN> = 64; <LALT> = 133;
あとはLinuxに再度ログインすれば設定が反映されます。
補足
他のサイトを見ているとsymbolsのファイルを修正する例をよく見かけますが、自分の環境ではなぜかうまく行かなかったのでkeycodes側のファイルを修正しました。