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_Shift
xkeysym 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_Shift
5番目または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ページ。