在 i3 中綁定 alt 但不綁定 altgr

在 i3 中綁定 alt 但不綁定 altgr

我對 i3 中的大多數鍵綁定使用 Mod4,但我使用 Mod1:

bindsym Mod1+a workspace a
bindsym Mod1+b workspace b
bindsym Mod1+c workspace c
bindsym Mod1+d workspace d
...

然而,這會綁定 alt 和 altgr,這是不想要的,因為我使用 altgr+<letter> 來鍵入一些字元。

xev 說 alt 是 Alt_L,altgr 是 Alt_R,但bindsym Alt_L+a不起作用

答案1

最終取決於什麼xmodmap顯示 mod1。例如,如果它顯示Alt_LAlt_R位於同一修飾符上,則必須將後者移至另一個(5 個可用修飾符中)以避免衝突。

以下是一些給出範例的頁面:

  • 使用 xmodmap 重新映射 Alt_R 停用 VC 終端切換顯示使用者移動的範例Alt_R從何處移動的範例模1模組4(並遇到了問題)。您應該在更改之前檢查 xmodmap 的輸出。
  • xmodmapArchLinux 上顯示了操作修飾符的詳細範例。到移動一把鑰匙,你必須添加它到一個修飾符並且清除它來自另一個。

使用中的一個陷阱xmodmap是它並不總是知道按鍵符號的正確按鍵代碼(例如Alt_R)。當我遇到這種情況時,我通常可以透過查看輸出來解決它

xmodmap -pk

對於鑰匙象徵,然後在腳本中分配該鍵碼。例如,在一台機器上xmodmap -pk顯示

108         0xffea (Alt_R)  0x0000 (NoSymbol)       0xffea (Alt_R)

並使用這個腳本

keycode 108 = Alt_R
remove mod1 = Alt_R
add mod3 = Alt_R

改變輸出:

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),  Alt_R (0x6c),  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)

對此:

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        Alt_R (0x6c)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

(對於此特定機器,不需要解決方法)。

相關內容