如何在 openbox 中将单个修饰键设置为快捷键?

如何在 openbox 中将单个修饰键设置为快捷键?

我想让我的超级钥匙开始dmenu。我已将其设置为键盘快捷键,如下rc.xml所示:

<keybind key="0xffeb">
      <action name="Execute">
        <command>dmenu_run</command>
      </action>
</keybind>

我尝试在key属性中将其指定为WW-0xffeb,但这些都不起作用。
W按下这封信会有反应w,而其他人似乎什么也没做。

我希望在按下并释放超级键时触发快捷方式。这可能吗?


这是交叉发布来自超级用户按照指南在这里。我读过这个问题:超级键作为快捷键 - Openbox,但我没有看到任何有用的信息。

答案1

我最终使用了X角,一个专门用于执行此操作的实用程序:

xcape 允许您在按下并释放时将修改键用作另一个键。请注意,它比按原始键稍慢,因为直到释放键后才会发生按下的事件。

引自Xcape 自述文件

使用 xcape,您可以分配压力机并释放将修改键更改为不同的键甚至一系列键。例如,您可以分配Linux key Super给占位符快捷方式,如下⎈ Ctrl⇧ Shift⎇ AltLinux key SuperD所示:

xcape -e 'Super_L=Control_L|Shift_L|Alt_L|Super_L|D'

现在,当您按下并释放Linux key Super而不按下任何其他键时,xcape 将发送模拟按下的键盘事件⎈ Ctrl⇧ Shift⎇ AltLinux key SuperD(按住所有修饰键,就像按下它们一样,就像按下快捷键一样)。

如果你按Linux key Super 另一个键(或按住Linux key Super太久,默认超时为 500 毫秒),xcape 将按原样传递键盘事件,而不触发额外的键。

如果您将占位符快捷方式放入,则只有按下rc.xml时它才会运行。Linux key SuperLinux key Super

<keybind key="C-A-S-W-d">
      <action name="Execute">
          <command>dmenu_run</command>
      </action>
</keybind>

其他涉及的快捷键Linux key Super不受影响。

请注意,每次启动时都必须运行 xcape,因此您可能希望将其放在~/.config/openbox/autostart自动运行的位置。

答案2

运行xev并按您的超级键以获得适当的键名称。我的是Super_L根据输出:

KeyRelease event, serial 48, synthetic NO, window 0x3600001,
    root 0x91, subw 0x0, time 1648471775, (167,-8), root:(927,138),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

假设你的也是一样的,这应该通过按超级键(又名 Windows 键)来工作:

<keybind key="Super_L">
      <action name="Execute">
        <command>dmenu_run</command>
      </action>
</keybind>

保存文件并运行killall -SIGUSR2 openbox以重新加载配置。

顺便说一句,我正在为本地用户处理配置文件$HOME/.config/openbox/lxde-rc.xml。组合使用时,仅使用W寄存器作为超级键,但Super_L可以单独使用,而不是作为字母来读取w

相关内容