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

gan*_*lf3 8 keyboard-shortcuts openbox desktop-environment

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

<keybind key="0xffeb">
      <action name="Execute">
        <command>dmenu_run</command>
      </action>
</keybind>
Run Code Online (Sandbox Code Playgroud)

我试图在其指定key属性的WW-以及0xffeb,但这些都不奏效。
W按下字母w,其他人似乎什么也没做。

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


这是根据此处指南从超级用户交叉发布的。我读过这个问题:Super key as shortcut - Openbox,但我没有看到任何有用的信息。

gan*_*lf3 8

我最终使用了xcape,这是一个专为做到这一点而设计的实用程序:

xcape 允许您在单独按下和释放时将修饰键用作另一个键。请注意,它比按下原始键稍慢,因为在释放键之前,pressed 事件不会发生。

引自xcape 自述文件

使用 xcape,您可以将修饰键的按下和释放分配给不同的键,甚至是一系列键。例如,您可以分配Linux key Super给占位符快捷方式,例如⎈ Ctrl⇧ Shift⎇ AltLinux key SuperD

xcape -e 'Super_L=Control_L|Shift_L|Alt_L|Super_L|D'
Run Code Online (Sandbox Code Playgroud)

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

如果按Linux key Super 其他键(或保持Linux key Super时间过长,默认的超时时间为500毫秒),xcape将通过为是通过键盘事件,不费一枪额外的钥匙。

如果您将占位符快捷方式放在 中rc.xml,它将在Linux key Super且仅Linux key Super在按下时运行。

<keybind key="C-A-S-W-d">
      <action name="Execute">
          <command>dmenu_run</command>
      </action>
</keybind>
Run Code Online (Sandbox Code Playgroud)

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

请注意,每次启动时都必须运行 xcape,因此您可能希望将它放在某个地方,例如~/.config/openbox/autostart它会自动运行的地方。