2

share/X11/xkb/rules/evdev/lst に、ctrl のこのオプション セットがあります

  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'.

私が行った観察の 1 つは、無視されたオプションは では表示されますが、 では表示され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、ディスプレイマネージャーは SLiM、デスクトップマネージャーなし
  • キーボード レイアウトは colemak です (qwerty に切り替えても問題は解決しません)
  • man ページによると、setxkbmap のバージョンは 1.3.0 です。
4

2 に答える 2

2

これは、ファイル evdev.lst にリストされているすべてのオプションが隣接するファイル evdev にも含まれているわけではないためと思われます。/usr/share/X11/xkb/rules のファイル evdev が evdev.lst と一致しないのはなぜですか?

于 2014-10-30T20:16:58.797 に答える
0

おそらく、一部のオプションが他のオプションと互換性がないように見えるために発生します。

たとえば、Shift キーを設定して Caps Lock のロックを解除し (-option shift:breaks_caps)、同時に alt-shift を設定してキーボード レイアウトを切り替えると、Shift は Caps Lock のロックを解除しなくなります。レイアウト切り替えの組み合わせを alt-shift から alt-ctrl に変更するとすぐに、オプション shift:breaks_caps が再びアクティブになります。

私にはバグのように見えます。

于 2018-09-30T00:49:53.507 に答える