0

我想在表单的 KeyDown 事件中检测 Shift+3。KeyChar 仅在按下 3 键时包含“3”,但在按下 Shift 时修改为 Shift 字符(在我的英式键盘上,它是“£”符号,但对于美式键盘,它将是“#”,OSX 可能是“ "' 等等)。我怎样才能为 Windows 或 Mac 的任何键盘检测到这一点?不幸的是,Key 输入变量为空。我寻找了一个将字符转换为虚拟键代码的函数(例如 Windows VkScanEx),但没有'找不到任何适用于 Windows 和 OSX 的东西。我需要将 Shift 修改后的字符转换回 '3'。

这是文档中的相关引用。“如果按下的组合键可以被视为可打印的字符或数字,则 Key = 0 并且 KeyChar 包含按下的符号” http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Controls.TControl.KeyDown

这是我的问题的原因。我需要将按键解释为快捷方式而不是可打印字符。所以我需要以某种方式获取虚拟键值。这对于 Ctrl+3 来说不是问题,因为它会被解释为快捷方式,并且 Key 将具有正确的非零值。不幸的是,我需要检测 Shift+3。

请注意,在某些键盘(例如法语)上,如果不按下 Shift 键,我会遇到同样的问题,因为数字和符号与 Shift 键相反。无论是否按下 Shift 以及在任何键盘上,我都想检测被按下的 3 键。

4

0 回答 0