Xmodmapを使用してドイツ語の糖尿病/ウムラウトをキーボードに追加しようとしていますが、Xmodmapはそれらを使用していません(ただし、他の再マッピングを使用しています)。
私はこのガイドに従っています: XのUSキーボードのドイツ語ウムラウト(Ubuntu 10.04) 。
これを~/.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
あなたは押すことに注意するでしょう AltGrISO_Level3_Shift
として解釈され、 x が押されると、keysym 0xd7, multiply
、つまり×
が表示されます。これは、の3番目のレベルとして設定されています。 x。そう AltGr 動作します。
$ xmodmap -pke | grep 53
keycode 53 = x X x X multiply approximate
しかし私が押すと o 3番目のレベルを設定したにもかかわらず、keysym 0x0, NoSymbol
を取得します。
$ xmodmap -pke | grep 32
keycode 32 = o O odiaeresis Odiaeresis
使おうとすると同じことが起こります AltGr +(a|u|s)。
私の PgUp 私のラップトップのキーは小さいです、私は数字パッドを再マッピングしました + 私の~/.Xmodmap
のPageUpで、それは問題なく動作します。したがって、私のXModmapファイルは(部分的に)読み取られています。
O/a/uへの再割り当てが機能しないのはなぜですか?
UbuntuUnityで信頼できるUbuntu14.0.1を使用しています。
予備メモ:xmodmap
が最近変更されたようです。古い設定は機能しません。
あなたの場合、キーコード53の値の数を見てください(6つの値:x X x X multiply approximate
)、これは機能し、キーコード32(4つの値:o O odiaeresis Odiaeresis
)、これは機能しません。
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を直接使用する方がよい場合があります( 例 )。
正しいAlt
キーをAlt Gr
として機能させるには、行を追加して、Mode_switch
ではなくISO_Level3_Shift
にマップする必要があります。
keycode 108 = Mode_switch
to ~/.Xmodmap
:
keycode 108 = Mode_switch
keycode 38 = a A adiaeresis Adiaeresis
keycode 30 = u U udiaeresis Udiaeresis
keycode 32 = o O odiaeresis Odiaeresis
keycode 39 = s S ssharp
ドイツ語キーボードのキーにウムラウトが必要な場合は、次を使用します。
keycode 108 = Mode_switch
keycode 48 = apostrophe quotedbl adiaeresis Adiaeresis
keycode 47 = semicolon colon odiaeresis Odiaeresis
keycode 34 = bracketleft braceleft udiaeresis Udiaeresis
keycode 20 = minus underscore ssharp
(もちろん、それらを組み合わせることができます。)