2014-10-30 112 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根據手冊頁

回答