2014-10-30 63 views
2

股价/ X11/XKB /规则/了evdev/LST,我觉得这组选项CTRL为什么忽略一些setxkbmap选项?

ctrl     Ctrl key position 
    ctrl:nocaps   Caps Lock as Ctrl 
    ctrl:lctrl_meta  Left Ctrl as Meta 
    ctrl:swapcaps  Swap Ctrl and Caps Lock 
    ctrl:ac_ctrl   At left of 'A' 
    ctrl:aa_ctrl   At bottom left 
    ctrl:rctrl_ralt  Right Ctrl as Right Alt 
    ctrl:menu_rctrl  Menu as Right Ctrl 
    ctrl:ctrl_ralt  Right Alt as Right Ctrl 
    ctrl:swap_lalt_lctl Swap Left Alt key with Left Ctrl key 
    ctrl:swap_lwin_lctl Swap Left Win key with Left Ctrl key 
    ctrl:swap_lalt_lctl_lwin Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt 

他们中的一些工作 - 如果我跑setxkbmap -option -option 'ctrl:nocaps',我得到正确的行为。然而,其他一些被忽略,例如setxkbmap -option -option 'ctrl:swap_lalt_lctl_lwin'

我所做的一个观察是忽略的选项显示为setxkbmap -query,但不显示setxkbmap -print。这是这种行为的演示。

$ setxkbmap -option -option ctrl:nocaps 
$ setxkbmap -query 
rules:  evdev 
model:  pc104 
layout:  us 
variant: colemak 
options: ctrl:nocaps 
$ setxkbmap -print 
xkb_keymap { 
    xkb_keycodes { include "evdev+aliases(qwerty)" }; 
    xkb_types  { include "complete" }; 
    xkb_compat { include "complete" }; 
    xkb_symbols { include "pc+us(colemak)+inet(evdev)+ctrl(nocaps)" }; 
    xkb_geometry { include "pc(pc104)" }; 
}; 
$ setxkbmap -option -option ctrl:swap_lalt_lctl_lwin 
$ setxkbmap -query         
rules:  evdev 
model:  pc104 
layout:  us 
variant: colemak 
options: ctrl:swap_lalt_lctl_lwin 
$ setxkbmap -print         
xkb_keymap { 
    xkb_keycodes { include "evdev+aliases(qwerty)" }; 
    xkb_types  { include "complete" }; 
    xkb_compat { include "complete" }; 
    xkb_symbols { include "pc+us(colemak)+inet(evdev)" }; 
    xkb_geometry { include "pc(pc104)" }; 
}; 

我不知道如何深入挖掘这一点。一些进一步的环境信息是

  • Linux发行版是NixOs
  • 窗口管理器是XMonad,显示管理器是超薄,无桌面管理器
  • 键盘布局是Colemak键盘(如果我切换到QWERTY问题仍然存在)
  • setxkbmap版本是1.3.0根据手册页

回答