Xmodmap

Xmodmap

Xmodmapを使用してドイツ語のウムラウト/分音符をキーボードに追加しようとしていますが、Xmodmapは機能しません(しかし他の再マッピングは機能します)。

私はこのガイドに従っています:X中国語とアメリカのキーボードのドイツ語の分音符(Ubuntu 10.04)

Xmodmap

私はこれを私のものに追加しました~/.Xmodmap

keysym a = a A adiaeresis Adiaeresis
keysym o = o O odiaeresis Odiaeresis
keysym u = u U udiaeresis Udiaeresis
keysym s = s S ssharp ssharp

シフ

しかし、それは動作しません。xevを押しo、長押しAltGr、押し、押したoときの出力は次のとおりですx

KeyPress event, serial 34, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 642618, (108,138), root:(173,190),
    state 0x10, keycode 32 (keysym 0x6f, o), same_screen YES,
    XLookupString gives 1 bytes: (6f) "o"
    XmbLookupString gives 1 bytes: (6f) "o"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 642644, (108,138), root:(173,190),
    state 0x10, keycode 32 (keysym 0x6f, o), same_screen YES,
    XLookupString gives 1 bytes: (6f) "o"
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 643792, (108,138), root:(173,190),
    state 0x10, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 645365, (108,138), root:(173,190),
    state 0x90, keycode 32 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 645409, (108,138), root:(173,190),
    state 0x90, keycode 32 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 647660, (108,138), root:(173,190),
    state 0x90, keycode 53 (keysym 0xd7, multiply), same_screen YES,
    XLookupString gives 2 bytes: (c3 97) "×"
    XmbLookupString gives 2 bytes: (c3 97) "×"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 647722, (108,138), root:(173,190),
    state 0x90, keycode 53 (keysym 0xd7, multiply), same_screen YES,
    XLookupString gives 2 bytes: (c3 97) "×"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x4e00001,
    root 0x8e, subw 0x0, time 650223, (108,138), root:(173,190),
    state 0x90, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

押したときAltGrに解釈されることがわかります。つまり、を押すとの3番目のレベルに設定されます。だから動作します。ISO_Level3_Shiftxkeysym 0xd7, multiply×xAltGr

$ xmodmap -pke | grep 53
keycode  53 = x X x X multiply approximate

ただし、3番目のレベルを設定しても押すと、次のo結果が表示されます。keysym 0x0, NoSymbol

$ xmodmap -pke | grep 32
keycode  32 = o O odiaeresis Odiaeresis

AltGr+(a|| u)を使用してもs同じことが起こります。

Xmodmapは他のリマップで動作します。

私のラップトップのキーが小さいので、数字キーパッドをPage UpにPgUp再マップしましたが、うまくいきます。だから私のXModmapファイルを(部分的に)読んでいます。+~/.Xmodmap

o/a/u 再割り当てが機能しないのはなぜですか?

私はUbuntu 14.0.1とUbuntu Unityを使用しています。

ベストアンサー1

xmodmap予備の注意:最近変更されたように見え、以前の設定は機能しません。

あなたの場合、x X x X multiply approximate有効なキーコード53(6つの値:)値の数とo O odiaeresis Odiaeresis無効なキーコード32(4つの値:)の値の数を調べてください。

ISO_Level3_Shift5番目または6番目の値が選択されますが、お客様の場合はキーコード32に設定されていません。それでkeysym 0x0, NoSymbol結果が出ました。

あなたに必要なもの:

keysym a = a A a A adiaeresis Adiaeresis
keysym o = o O o O odiaeresis Odiaeresis
keysym u = u U u U udiaeresis Udiaeresis
keysym s = s S s S ssharp ssharp

しかし、XKBを直接使用する方が良いかもしれません(はい)。

編集する:3番目と4番目の値はキーで選択されますMode_switch。各値のペアに対して、Shiftペアの2番目の値が選択されます。よりArchWiki xmodmapページ

おすすめ記事