在 openbox 中添加“Fn”+“Control”键的按键绑定

在 openbox 中添加“Fn”+“Control”键的按键绑定

我需要使用Fn+CTRL作为组合键,但它在 openbox 中不起作用(在 XFCE / KDE4` 中起作用)。

<keybind key="Fn-C">
  <action name="ToggleMaximize">
      </action>
</keybind>

动作名称完全正确,它可以与其他组合键一起使用,例如W-3

那么,有什么想法吗?

答案1

不同的窗口管理器可以使用不同的键盘映射,并且键映射定义了如何Fn识别您的按键。这就是为什么在 XFCE 中有效的方法不一定在 Openbox 中有效。

要检查 X(和 Openbox)如何解释您的Fn密钥,请按照本指南

根据结果​​,您可以使用适当的键符号rc.xml代替Fn
Fn例如,在我的 Thinkpad 上被识别XF86WakeUp。如果没有分配符号,您可以使用 xmodmap 手动分配一个符号,如下所示本指南然后在 中使用该符号rc.xml

进一步调查发现,Fn 是某些笔记本电脑(如 IBM/Lenovo Thinkpad)上的特殊键,因为KeypressKeyrelease事件(或KeydownKeyupMicrosoft 术语来说)是同时生成的,并且仅在释放该键时才会生成。按下时进一步按键Fn将不会被记录*。和西夫,您可以轻松检查您的系统是否也出现这种情况。

这意味着Fn不能用作修饰键(与Alt,Ctrl或等其他键组合Shift)。不过,它可以单独指定为快捷方式。结合Openbox 的钥匙扣,这几乎与将其用作修饰符一样好。您只需在按下与之组合的键之前释放它即可。

* 必须有一些Fn至少在 Thinkpad 上注册按键的方式是这样的,因为联想自己的 Windows 工具确实会对Fn其他按键做出反应。但这似乎发生在非常低​​的水平。当我在 Windows 主机上的 VMWare 来宾中时,按Fn加键会在 Windows 主机中打开相应的工具,而不是在来宾操作系统中。研究类似 Thinkpad 工具在 Linux 上的实现,看看它们如何处理Fn.

这里您可以找到有关Fn+Fx键组合如何生成 ACPI 事件的更多特定于 Thinkpad 的信息,这就是 Thinkpad 工具的反应。但是,我认为这些事件仅针对特定的按键组合生成Fx,而不针对其他按键组合生成。

该页面还介绍了如何使 ACPI 事件触发按键事件。然而,如果Fnkeydown 和 keyup 不生成它们自己的单独事件(我相信它们在 Thinkpad 上不会),那么这并不能真正让您更进一步。

答案2

自从我离开像 Fluxbox/openbox 之类的极简窗口管理器以来已经有一段时间了,但我记得这里有一些提示:

  1. 您实际上可以使用以下命令查看特定击键组合的键码西夫(1)

  2. 您可以使用使用xmodmap(1) 将某些键码绑定到 X 事件。

查看 xev 和 xmodmap 的联机帮助页;)

相关内容