たこさんのメモ書き

Linuxの設定/構築のメモを残すのが主体です。
わからないこと、あれこれたくさん。

VMware server 1.0.7 上のVine4.2でアンダーバーのキーが使えない

2008-11-11 22:48:07 | Weblog
VMware server 1.0.7のゲストOSであるVine4.2にログインしてから、端末でコマンドを入力していると、アンダーバーのキー(かなで「ろ」)が入力できない。
ホストOSであるUbuntu8.04.1LTS日本語版からsshでログインしていると、このような現象は起こらなかったのだが、ゲストOSにログインした場合に、例えばapache2の設定ファイルをいじっている時、アンダーバーが使えないと非常に困る。
あれこれwebを探すと、それらしい解決策を見つけた。
参考は、こちらおよび、こちらこちら
最終的には、ホストOSに入っているVMwareの設定ファイルを変更する必要がある。
ゲストOSのキーマップを変更してやるのだ。
そのためには、今使っている、JP109の日本語キーボードのキーマップをまず調べてやる。
それから、アンダーバーを押したときの「キーコード」を、キーマップの設定ファイルに追加してやるのだ。

作業1:コマンドxevを使い、アンダーバーのキーを押したときのキーコードを調べる。
xevコマンドとは、X-Window-Systemの反応を調べるためのコマンドらしい・・・
$ xev
これでxevを起動させると、「event tester」という名前の別の端末が開く。
マウスをこのevent tester端末上に置いて、アンダーバーを表示するためにShift+「ろ」キーを押してみる。
すると、下記のイベントが表示される。
KeyRelease event, serial 31, synthetic NO, window 0x4000001,
root 0x56, subw 0x0, time 5644148, (65,711), root:(659,759),
state 0x11, keycode 211 (keysym 0x5f, underscore), same_screen YES,
XLookupString gives 1 bytes: (5f) "_"
XFilterEvent returns: False

KeyRelease event, serial 31, synthetic NO, window 0x4000001,
root 0x56, subw 0x0, time 5644335, (65,711), root:(659,759),
state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

よくわからないが、keycodeの部分を見ると、アンダーバー(underscoreらしい)のkeycodeは211のようだ。
(左側のシフトキー(Shift_L)は、keycode 50。)


作業2:日本語109キーボードの制御コードを調べる。アンダーバーの制御コードは何か?
VMwareの日本語キーボードの制御コードを記したファイルは、下記のファイル。
/usr/lib/vmware/xkeymap/jp109
アンダーバー=かなの「ろ」キーが、どの制御コードになっているかを調べる。
$ less /usr/lib/vmware/xkeymap/jp109
すると、該当するのは下記の部分のようだ。
kana_RO = 0x073

作業3:判明したアンダーバーのキーコードを、キーボードの制御コードに一致させてやる。
VMwareの設定ファイル ~/.vmware/preferences に、キーコードと制御コードをペアにした一文を追加してやるのだ。
以下の2列を、設定ファイルの末尾に追加して保存。
xkeymap.useKeycodeMapIfXFree86 = true
xkeymap.keycode.211 = 0x073

以上の作業をした上で、VMware serverを再起動する。
$ sudo /etc/init.d/vmware restart

ホストOSを起動し、端末からアンダーバーを入力すると、無事に成功した。
これでローカルからでも、ホストOSからのssh接続からでも、設定ファイルがいじれるようになった。




最新の画像もっと見る