VMware Server Consoleにおけるキーバインドのカスタマイズ
LinuxではXmodmapでのキーバインドのカスタマイズはゲストOSには反映されません。生のキーコードがそのままゲストOSへ渡されているようですが、以下の手順にて変更することが可能です。
環境
以下の環境で確認しました
- Kubuntu 8.04.1 日本語ローカライズド
- キーボード: 日本語キーボード(jp106)
- VMware Server 1.0.6
- VMware Server Console 1.0.6
変更前のキーコード調査
xevなどで調査可能です。
KeyPress event, serial 32, synthetic NO, window 0x4600001, root 0x1e9, subw 0x0, time 191321504, (65,176), root:(2378,200), state 0x0, keycode 66 (keysym 0xffe3, Control_L), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False
上記の場合はCapsLockを押した場合のイベントですが、キーコードは66であることがわかります。
VMware Server Consoleでのキーの割り当て
日本語キーボードでのVMware Server Consoleでのキーのコードは以下に記載されています。
/usr/lib/vmware/xkeymap/jp106
Escape = 0x001 1 = 0x002 2 = 0x003 3 = 0x004 4 = 0x005 5 = 0x006 6 = 0x007 7 = 0x008 8 = 0x009 9 = 0x00a 0 = 0x00b
上記は/usr/lib/vmware/xkeymap/jp106の抜粋ですが、Escapeは0x001ということがわかります。このリストから目当てのキーの機能とコードを探します。
実際に変更してみる
CapsLockと左Ctrlを入れ替える場合は次のようになります。
~/.vmware/preferencesに以下を追加する。
xkeymap.useKeycodeMapIfXFree86 = true # CapsLock -> L_Control xkeymap.keycode.66 = 0x01d # L_Control -> CapsLock xkeymap.keycode.37 = 0x03a