我想让我的超级钥匙开始dmenu
。我已将其设置为键盘快捷键,如下rc.xml
所示:
<keybind key="0xffeb">
<action name="Execute">
<command>dmenu_run</command>
</action>
</keybind>
我尝试在key
属性中将其指定为W
、W-
和0xffeb
,但这些都不起作用。
W
按下这封信会有反应w
,而其他人似乎什么也没做。
我希望在按下并释放超级键时触发快捷方式。这可能吗?
这是交叉发布来自超级用户按照指南在这里。我读过这个问题:超级键作为快捷键 - Openbox,但我没有看到任何有用的信息。
答案1
我最终使用了X角,一个专门用于执行此操作的实用程序:
xcape 允许您在按下并释放时将修改键用作另一个键。请注意,它比按原始键稍慢,因为直到释放键后才会发生按下的事件。
使用 xcape,您可以分配压力机并释放将修改键更改为不同的键甚至一系列键。例如,您可以分配 Super给占位符快捷方式,如下⎈ Ctrl⇧ Shift⎇ Alt SuperD所示:
xcape -e 'Super_L=Control_L|Shift_L|Alt_L|Super_L|D'
现在,当您按下并释放 Super而不按下任何其他键时,xcape 将发送模拟按下的键盘事件⎈ Ctrl⇧ Shift⎇ Alt SuperD(按住所有修饰键,就像按下它们一样,就像按下快捷键一样)。
如果你按 Super 和另一个键(或按住 Super太久,默认超时为 500 毫秒),xcape 将按原样传递键盘事件,而不触发额外的键。
如果您将占位符快捷方式放入,则只有按下rc.xml
时它才会运行。 Super Super
<keybind key="C-A-S-W-d">
<action name="Execute">
<command>dmenu_run</command>
</action>
</keybind>
其他涉及的快捷键 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
。