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でのキーのコードは以下に記載されています。
/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
xkeymap.keycode.66 = 0x01d
xkeymap.keycode.37 = 0x03a