防止 XKB 布局切换与快捷方式

Prevent XKB layout switch vs shortcuts

我习惯使用setxkbmap定义布局更改快捷方式为ctrl+shift。但我有时会遇到一个问题,它与我使用的软件的快捷方式冲突,比如 ctrl+shift+A。当我按下 ctrl+shift+other_button 时,如何避免更改布局?我使用 OpenSuse Linux 和 i3 wm.

如果您想使用 ctrl+shift 来切换布局,则没有真正解决此问题的方法,因为 xkb 现在比您正在使用的应用程序在较低级别捕获 ctrl+shift。我有同样的问题,只是切换到使用两个 ctrls 来更改布局。看看

$ grep 'grp:' /usr/share/X11/xkb/rules/base.lst
  grp:switch           Right Alt (while pressed)
  grp:lswitch          Left Alt (while pressed)
  grp:lwin_switch      Left Win (while pressed)
  grp:rwin_switch      Right Win (while pressed)
  grp:win_switch       Any Win key (while pressed)
  grp:caps_switch      Caps Lock (while pressed), Alt+Caps Lock does the original capslock action
  grp:rctrl_switch     Right Ctrl (while pressed)
  grp:toggle           Right Alt
  grp:lalt_toggle      Left Alt
  grp:caps_toggle      Caps Lock
  grp:shift_caps_toggle Shift+Caps Lock
  grp:shift_caps_switch Caps Lock (to first layout), Shift+Caps Lock (to last layout)
  grp:win_menu_switch  Left Win (to first layout), Right Win/Menu (to last layout)
  grp:lctrl_rctrl_switch Left Ctrl (to first layout), Right Ctrl (to last layout)
  grp:alt_caps_toggle  Alt+Caps Lock
  grp:shifts_toggle    Both Shift keys together
  grp:alts_toggle      Both Alt keys together
  grp:ctrls_toggle     Both Ctrl keys together
  grp:ctrl_shift_toggle Ctrl+Shift
  grp:lctrl_lshift_toggle Left Ctrl+Left Shift
  grp:rctrl_rshift_toggle Right Ctrl+Right Shift
  grp:ctrl_alt_toggle  Alt+Ctrl
  grp:alt_shift_toggle Alt+Shift
  grp:lalt_lshift_toggle Left Alt+Left Shift
  grp:alt_space_toggle Alt+Space
  grp:menu_toggle      Menu
  grp:lwin_toggle      Left Win
  grp:win_space_toggle Win Key+Space
  grp:rwin_toggle      Right Win
  grp:lshift_toggle    Left Shift
  grp:rshift_toggle    Right Shift
  grp:lctrl_toggle     Left Ctrl
  grp:rctrl_toggle     Right Ctrl
  grp:sclk_toggle      Scroll Lock
  grp:lctrl_lwin_rctrl_menu LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)
  grp:lctrl_lwin_toggle LeftCtrl+LeftWin

这些是您可以用来更改布局的所有不同组合键。我使用 grp:ctrls_toggle,但你有很多选择可以玩,看看你喜欢什么。

我有一个类似的问题,并制定了一个妥协方案,但从接受的答案中并不能立即看出这一点。

我的布局切换最初设置为Alt+Shift 这干扰了我使用 Alt+Shift+} 快捷方式在 nano / 中缩进的能力微微

我的妥协是将布局切换选项从 grp:alt_shift_toggle 更改为 grp:lalt_lshift_toggle。也就是说,只按下 left Altleft Shift一起改变布局,离开,例如(left) Alt + (right) Shift + } free 在pico中产生想要的缩进效果.

如果它对任何人有用,这是我在 .fluxbox/startup 文件中使用的完整行:

setxkbmap -layout "gb,gr,ru" -variant ",,phonetic_winkeys" -option "grp:lalt_lshift_toggle" -model pc105 -rules evdev   # keyboard layout switching