Keyboard

Alt-Gr 和鍵盤級別 3

  • January 27, 2021

問題:

Alt-Gr在 X11 下不起作用。似乎在按下 Alt-Gr 時未設置鍵盤級別 3(用於“at”、“euro”、“大括號”等)。在文本控制台中(通過 Right-Shift Right-Alt 1 到達),不會發生此問題。

應用如下設置:

xmodmap -e "keysym q = q Q at"

不能解決問題。

這個問題很關鍵!該系統在 X-Windows 中幾乎無法使用。

可以做什麼?

設置:

unname -v:Ub#45~20.04.1-Ubuntu SMP Fri Jan 15 11:35:04 UTC 2021

該文件/etc/default/keyboard包含:

XKBMODEL="pc105"
XKBLAYOUT="de"
XKBVARIANT=""
XKBOPTIONS=""

使用xkeycaps/xev表明:

  • Alt-Gr 發送密鑰程式碼“108”

xmodmap傳遞_

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

xevAlt-Gr 上的輸出。

KeyPress event, serial 37, synthetic NO, window 0x3200001,
   root 0x251, subw 0x0, time 6145247, (1781,-38), root:(1804,42),
   state 0x10, keycode 108 (keysym 0xff20, Multi_key), same_screen YES,
   XLookupString gives 0 bytes: 
   XmbLookupString gives 0 bytes: 
   XFilterEvent returns: True

KeyRelease event, serial 37, synthetic NO, window 0x3200001,
   root 0x251, subw 0x0, time 6145491, (1781,-38), root:(1804,42),
   state 0x10, keycode 108 (keysym 0xff20, Multi_key), same_screen YES,
   XLookupString gives 0 bytes: 
   XFilterEvent returns: False

問題是切換鍵盤配置文件會以某種方式xmodmap混淆設置。此外,Multi_Key似乎沒有正確替換鍵盤級別 3。所以,我$HOME/.Xmodmap通過應用創建了一個文件

> xmodmap -pke > .Xmodmap

我更改了.Xmodmap處理鍵程式碼 108 的行,即xev標識為 Alt-Gr 鍵的行:

keycode 108 = ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift

然後通過重新載入它

> xmodmap .Xmodmap

我等了幾分鐘。瞧!我的@符號、我的大括號和我的€符號回到了我的鍵盤上。

引用自:https://unix.stackexchange.com/questions/631053