【问题标题】:Python module (keyboard) is not recognizing 'fn' keyPython 模块(键盘)无法识别“fn”键
【发布时间】:2019-11-23 21:36:08
【问题描述】:

我想将功能键用作 python (3.6) 键盘快捷键的一部分,但它无法识别 fn 键事件。

import keyboard
keyboard.press_and_release('fn+down')

【问题讨论】:

  • 这是 Macs 上的fn 键吗?那么这适用:适用于 Windows 和 Linux(需要 sudo),具有实验性 OS X 支持(感谢@glitchassassin!)。 向项目提交错误报告,也许?
  • 不,我正在 Windows 上开发。

标签: python python-3.x keyboard-shortcuts


【解决方案1】:

keyboard project 不支持fn 键,不支持。 keyboard.all_modifiers set 向您展示了它可以支持的内容。

在我的 Mac 上产生:

>>> import keyboard
>>> keyboard.all_modifiers
{'alt', 'ctrl', 'windows', 'shift'}

考虑到Fn可能对操作系统不可见。来自Wikipedia

Fn 键是一种元修饰键,当按下键盘上的其他键时,它会导致操作系统看到更改的扫描码。这允许键盘直接模拟全尺寸键盘,因此操作系统可以使用为全尺寸键盘设计的标准键盘映射。 但是,由于操作系统没有 Fn 键的概念,因此与所有其他标准键盘键不同,该键通常无法在软件中重新映射。

(我的粗体强调)。

Apple Mac 是个例外,我有理由确定 Windows 不是。

Mac 支持仍处于试验阶段,来自项目描述:

适用于 Windows 和 Linux(需要 sudo),具有实验性 OS X 支持(感谢 @glitchassassin!)。

(我的粗体强调)。

跟踪此问题的项目 (#221, Unable to detect the top row of keys on Mac keyboard as function keys) 已经存在未解决的问题。

对于 Windows 和 Linux,尝试捕获fn+down 实际转换为操作系统的键码(使用keyboard.hook() callback,请参阅this example),然后执行该键码。

如果fn+down控制你的音量,只需使用"volume down"或整数值0xae作为扫描码:

keyboard.send(0xae)

【讨论】:

  • 您知道还有其他可以在这种情况下使用的库吗?
  • @PrathamThukral:我强烈怀疑在 Windows 上,不会有 任何 方法来检测 Fn 键,请参阅我添加的附加信息。
  • 是的,我认为你是对的。我最终只是使用鼠标事件来选择音量条上的音量。
  • @PrathamThukral 然后发送volume down 密钥;扫描十六进制代码AE。模块源代码让我相信这个名字已经被直接支持了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 2010-09-18
相关资源
最近更新 更多