RC.xml中的Openbox ArchLinux键绑定CapsLock

时间:2016-03-25 20:34:19

标签: xml archlinux window-managers

我在这里遇到了一个问题,我的Openbox键盘操作的快捷方式定义。 我想使用大写锁定键作为前缀来执行快捷方式。

我以为我会将大写密钥重新映射到超密钥,完成 setxkbmap -option caps:hyper

xev 输出交换上限和超级:

KeyRelease event, serial 48, synthetic NO, window 0x3400001,
    root 0xf6, subw 0x0, time 2262248, (-560,518), root:(585,681),
    state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

在交换上限和超级:

之后从xev 输出
KeyRelease event, serial 48, synthetic NO, window 0x3400001,
    root 0xf6, subw 0x0, time 2364568, (-112,127), root:(1033,290),
    state 0x40, keycode 66 (keysym 0xffed, Hyper_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

好吧,到目前为止,这么好。使用RC.xml中的Hyper Key定义操作,如:

</keybind>
<keybind key="H-x">
  <action name="Execute">
    <command>gmrun</command>
  </action>
</keybind>

实际上有效!

但是,当我使用超级键并推送x gmrun时也会被执行。在某种程度上,超级密钥也可以用作超级密钥。嗯,这是正确的假设还是我在这里错过了什么?

顺便说一下,这里是Super的xev输出,所以它显然是一个不同的键。

KeyRelease event, serial 48, synthetic NO, window 0x3400001,
    root 0xf6, subw 0x0, time 2657169, (-294,402), root:(851,565),
    state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False 

好吧,我注意到使用setxkbmap命令后大写锁定的键码没有改变。在两种情况下它的键码66(甚至在setxkbmap -option caps:none之后)。

依靠http://openbox.org/wiki/Help:Bindings#Keys实际上可以使用密钥代码,我将RC.xml示例更改为:

</keybind>
    <keybind key="0x42-x">
      <action name="Execute">
        <command>gmrun</command>
      </action>
    </keybind>

但这根本不起作用。很高兴使用键码所以没有处理setxkbmap,但无论哪种方式都不知道我错过了哪一部分,我很感激每个提示家伙! 干杯

编辑: 输出'xmodmap with setxkbmap -option caps:hyper'     xmodmap:每个修饰符最多5个键,(括号中的键码):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Hyper_L (0x42),  Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

1 个答案:

答案 0 :(得分:1)

搞定了工作:)

我已经通过

创建了一个关键的地图文件
xmodmap -pke > ~/.Xmodmap

然后我在〜/ .Xmodmap:

的末尾添加了
clear      lock
clear      mod1
clear      mod2
clear      mod3
clear      mod4
clear      mod5
keycode      66 = Hyper_L
add     control = Control_L Control_R
add        mod1 = Alt_L Alt_R Meta_L
add        mod2 = Num_Lock
add        mod3 = Hyper_L
add        mod4 = Super_L Super_R
add        mod5 = Mode_switch ISO_Level3_Shift

我执行了以下命令:

setxkbmap -option caps:hyper &&  xmodmap ~/.Xmodmap

并且有效

xmodmap的新输出是,

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hyper_L (0x42),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

唯一奇怪的是openbox需要大约10~15秒来执行“xmodmap~ / .Xmodmap”命令。 CPU运行起来就像我正在用每百个标签开始三个firefox会话:o 如果我把命令放到〜/ .config / openbox / autostart中,它会弄乱我的conky面板,看起来像是一个图形问题。