Fn 键是什么?更多详细信息:

Fn 键是什么?更多详细信息:

我有一个键盘(罗技 Wave(如下图所示)我对此非常满意。不幸的是,制造商已将右键单击按钮更改为 FN 键。

是否有任何程序可以将 FN 键重新映射到其他键?

替代文本

答案1

Fn 键可以重新映射或禁用吗?

通过 AutoHotKey 之类的程序深入研究重新映射 Fn 组合键,或者深入研究 Windows 的键盘扫描码,人们可能能够重新映射令人反感的组合键(Fn + Key)。(请参阅此答案的下文)。

由于 Fn 键通常处于硬件级别,因此无法在此级别编辑或禁用此功能。

[Fn] 这通常是不会生成单独代码的硬件键。

来源:UI 事件 KeyboardEvent 代码值 - W3C 候选推荐,2017


对于类似的钥匙 F-Lock,微软 MVP Jason Tsang 说道:

F Lock 键是键盘上的硬件开关。其状态无法通过编程控制。其默认状态为“关闭”。因此,每当键盘重置或断电时,F Lock 键将始终处于“关闭”状态。请注意,对于 2004 年 9 月之后发布的 Microsoft 键盘,键盘将在重新启动后保留 F Lock 状态。

来源:Microsoft 键盘 - F Lock 键


Fn 键是什么?更多详细信息:

Fn 不是普通的键盘键,例如 Ctrl、Shift 和 AltGr 等修饰键。对于标准修饰键,键盘内的微控制器会发送修饰键本身的扫描码,然后由操作系统解释并与其他同时按下的按键相结合。Fn 键是一种元修饰键,当按下键盘上的其他键时,它会导致操作系统看到改变的扫描码。这允许键盘直接模拟全尺寸键盘,因此操作系统可以使用为全尺寸键盘设计的标准键盘映射。但是,由于操作系统没有 Fn 键的概念,因此与所有其他标准键盘键不同,该键通常无法在软件中重新映射。

来源——A)高分辨率论坛帖子可能基于 B)维基百科帖子


为什么映射 Fn 键常常看似不可能?

事实上,键盘的工作方式如下(值仅仅是示例,行为被简化):

  • 普通按键:发送字节0x00+按键扫描码字节
  • 修饰符(alt/option、control、windows/command 和 fn):发送修饰符扫描码字节 + 键扫描码字节
  • 特殊键(如 G15 键):发送标准(如音量键)或自定义(取决于制造商)扫描码

大多数“fn”键盘(包括苹果键盘)在发送数据之前只会处理组合键,因此按下和释放 fn 键不会执行任何操作。例如:

  • 按 F1 -> 扫描码 0x1A -> 操作系统识别为 F1 键
  • 按下 FN 和 F1 -> 扫描码 0x9A -> 操作系统识别为 VolumeUp 键
  • 按下 FN -> 键盘微控制器等待另一个键,然后才发送任何数据

来源:AutoHotKey 论坛


AutoHotKey 上的一张海报以反问句开头

I don't get any response when I press the Fn key.

fn 键不应该发送任何信号。它的作用是更改按下另一个键时发送的信号...

因此,Fn 键的真正作用在于它根本不存在于操作系统中,因此您无法在操作系统中实际“重新映射”它。您所能做的就是通过重新映射某个键来发送 fn 修改的单个信号,从而重新映射某个键的辅助功能...

所以基本上,自动化 fn-key 是不可行的。但是自动化其最终结果没有问题!...

因此不幸的是,在操作系统级别上无法实现自动化:您必须深入到硬件/驱动程序级别,而这通过 AutoHotKey 是不可行的。

来源:AutoHotKey论坛帖子


有些人已成功通过 Autohotkey 重新映射 Fn 功能,少数人甚至成功看到了 Fn 键。

...您仍然可以按照以下步骤将其设为热键:

  • 确保至少有一个正在运行的脚本使用了键盘钩子。您可以通过打开脚本的主窗口并从菜单栏中选择“查看->按键历史记录”来判断脚本是否具有键盘钩子。
  • 双击该脚本的托盘图标以打开其主窗口。
  • 按下键盘上的某个“神秘键”。
  • 选择菜单项“查看->密钥历史记录”向下滚动到页面底部。
  • 靠近底部的位置是按键的按下和松开事件。
  • 注意:某些键不会生成事件,因此在此处不可见。如果是这种情况,您无法直接将该特定
    键设为热键,因为您的键盘驱动程序或硬件处理该键的级别太低,AutoHotkey 无法访问。有关可能的解决方案,请参阅下文。如果您的键可检测到,请记下 列表第二列中的
    3 位十六进制值(例如 159)。要 将此键定义为热键,请按照以下示例操作:

SC159:: ; Replace 159 with your key's value.
MsgBox, %A_ThisHotkey% was pressed.
return

反向:要将其他键重新映射为“神秘键”,请按照以下示例操作:

; Replace 159 with the value discovered above. Replace FF (if needed) with the
; key's virtual key, which can be discovered in the first column of the Key History screen.
#c::Send {vkFFsc159} ; See Send {vkXXscYYY} for more details.

来源:autohotkey.com/docs/KeyList.htm


使用 AutoHotKey 通过 DLL 进行重新映射

AutoHotkey 是一款适用于 Windows 的开源宏制作实用程序,其众多功能之一就是创建热键。AHK 论坛成员之一 Micha 创建了一个 DLL 文件,以添加对 AHK 的人机界面设备的支持。使用此 DLL 文件,可以读取几乎所有 HID 的按键;键盘、鼠标、遥控器等。

以下是 DLL 进程创建者在一篇旧文章中所说的内容:

首先,介绍一下键盘和 Fn 键的工作原理。每个键都有自己独特的代码,即扫描码,通过该代码,所连接的计算机可以确定某个键是否被按下以及何时被释放。Fn 键的工作原理略有不同。按住 Fn 键时,它会更改键盘上其他键(部分)的扫描码,这样单个键就可以将不同的扫描码发送回计算机,每个扫描码都与不同的功能相关。这就是为什么 Fn 键经常用于笔记本电脑、小型键盘或带有大量多媒体键的键盘。这样,您就可以在相对较少的键上添加许多功能。

问题是 Fn 键通常没有自己的扫描码。根据键盘和它所连接的计算机,Fn 键可能不会修改其他键的扫描码,因此不起作用。由于它也不会发出自己的扫描码,因此计算机根本无法知道甚至有一个 Fn 键,更不用说当它与另一个键组合按下时该做什么了。重新映射工具也无法帮助您,因为它们也是基于扫描码的使用。

根据指令记录Fn键值示例:

一旦运行,按下 Fn 键或其他特殊键,并写下相应的值。

; Filter bit 5 (Fn key) Transform, FnValue, BitAnd, 16, KeyStatus

重新映射 Fn 函数的示例代码

;
; Fn + Backspace = Delete
;
$Backspace::hotkeyBS()

hotkeyBS() {
global fnPressed
if (fnPressed = 1) {
Send {Delete}
} else {
Send {Backspace}
}
}
Return

来源:按照此处的完整说明进行操作


**SharpKeys**

在这里下载; 有一个文章在这里

SharpKeys 是一款管理注册表项的实用程序,允许 Windows 将一个键重新映射到任何其他键。该应用程序包含常用键盘键列表和 Type Key 功能,可自动识别大多数键盘键。它最初使用 .NET v2 在 C# 中开发,但已更新为支持 .NET 4.0 Client Profile。

还有 KeyTweak

KeyTweak 是一款简单的实用程序,允许用户重新定义键盘输入信号。该功能由注册表值实现,该注册表值首次记录在 Windows 2000 中,但也存在于 Windows NT 4.0 中。并包含在 XP、Vista 和 Windows 7 中。本节列出了 KeyTweak 的一些功能以及您可能想要使用 KeyTweak 的原因。

存档:手册和安装程序在这里


***其他信息:***

Microsoft 文档和链接

原文链接来自 SU Answer


通过 Bios 的操作键模式有什么作用?

此设置会更改笔记本电脑键盘顶部按钮的默认行为。这是什么意思?

如果“操作键模式”设置为“启用”,则要使用键盘顶行上显示为图标的附加功能,您无需按住 Fn 键。需要将其夹紧,以便上面的按钮可以像 F1..F12 一样工作。

当“操作键模式”处于“禁用”位置时(通常是默认设置),顶部按钮将作为标准 F1 ... F12 工作,而要使用其高级功能(以图标表示),您需要额外夹住 Fn。

来源:俄语 HelpAdmins.ru 文章翻译


**进一步阅读**

答案2

Shift+F10

右键单击的键盘快捷键是按住Shift,然后按F10。这是在以下情况下的替代方法:右键点击/context menu键不可用。

相关内容