Ubuntu
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
但是它不起作用。這是
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
你會注意到 press
AltGr
被解釋為ISO_Level3_Shift
,當它x
被按下時,我得到keysym 0xd7, multiply
, ie×
,它被設置為我的第三級x
。所以AltGr
有效。$ xmodmap -pke | grep 53 keycode 53 = x X x X multiply approximate
但是,當我按下時,
o
我得到keysym 0x0, NoSymbol
了,儘管我設置了第 3 級:$ xmodmap -pke | grep 32 keycode 32 = o O odiaeresis Odiaeresis
當我嘗試使用
AltGr
+ (a
|u
|s
) 時也會發生同樣的事情。Xmodmap 適用於其他重映射
由於我
PgUp
筆記型電腦上的鑰匙很小,我已將數字鍵盤重新映射+
到我的 Page Up 中~/.Xmodmap
,並且效果很好。所以我的 XModmap 文件正在(部分)讀取。為什麼我對 o/a/u 的重新分配不起作用?
我在 Ubuntu Unity 中使用 Ubuntu 14.0.1 trusty。
初步說明:似乎
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 可能會更好(範例)。