VMware Server Consoleにおけるキーバインドのカスタマイズ

2008/10/05PC::VMware

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

関連記事