X でアンダーバーが打てない (2006/04/14)

X11R7.0 にアップグレードした際に,アンダーバーが打てなくなった.このエラーは XFree86 から Xorg への移行の際にも現れた問題であった.そのときは Debian パッケージの再インストールなどをしているうちに,修正できた.ただ,アップグレードした際にたびたび起きるようだと困ることが多い.そこで,検索して調べてみたが,いろいろな解決法があり,ある解決法を試してみたら全くキー入力を受けつけなくなったりしてなかなか難しい.たまたま今回のケースに限り,うまくいった方法があるので,紹介します.

まず,underscoreへのkeycodeの割り当てがどのようになっているのかを調べます.

# xmodmap -pk | grep underscore
    123         0x005c (backslash)      0x005f (underscore)

検索の結果では,keycode 123 に underscore を割り当てればよいというページもあるが,今回のケースは違うようです.さらに探したところ,Xorg では,keycode 211 に割り当てればよいというページも見つけました.それを確認するため,コマンド xev で確かめてみました.

# xev &

Event Tester 上で,アンダーバーのキーを押したところ,

KeyPress event, serial 29, synthetic NO, window 0x2400001,
    root 0x64, subw 0x0, time 2524162327, (158,138), root:(292,724),
    state 0x1, keycode 211 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 29, synthetic NO, window 0x2400001,
    root 0x64, subw 0x0, time 2524162444, (158,138), root:(292,724),
    state 0x1, keycode 211 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
となったので,keycode 211 です.そこで,.xinitrc に
xmodmap -e 'keycode 211 = backslash underscore'
に追加したところ,アンダーバーが打てるようになりました.キーボードで困ったら,xmodmap, xev が役に立ちます.

なお,X11R7.0 にしてフォント関係も以前の設定ではうまくいっていません.kterm や emacs などのフォントが表示されなくなりました.X のリソースの割り当てに問題があるようです.以前設定していたリソースの割り当てをやめたところ,とりあえず読み書きできています.

(追記 2006/04/17) X11R7.0 へのアップグレードにより,現在,TrueType ファントが使用できなくなっています.しばらく,sid の全パッケージのアップグレードは見合わせたほうが無難かと思います.

(追記 2006/04/29) X でアンダーバーが打てない問題は,sid のパッケージをアップレードしているうちに,改善されました.現在は,xmodmap を使用しなくてもアンダーバーが打てます.


梅原 大祐 / UMEHARA Daisuke umehara@kit.ac.jp
Last modified: 2020/05/01 15:37
Total Access Count