i3では、AltgrはバインドせずにAltをバインドします。

i3では、AltgrはバインドせずにAltをバインドします。

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

最終的に何が決まるのか?xmodmapmod1を表示します。たとえば、同じ修飾子に表示され、同じ修飾子にある場合は、Alt_L競合Alt_Rを避けるために、後者を別の修飾子(使用可能な5つの修飾子のうち)に移動する必要があります。

以下は、例を提供するいくつかのページです。

使用するときの1つのトラップは、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)

(この特定のシステムでは解決策は必要ありません。)

関連情報