【问题标题】:Lazarus cross platform equivalent to MapVirtualKeyLazarus 跨平台等价于 MapVirtualKey
【发布时间】:2017-09-22 09:39:19
【问题描述】:

我已经能够成功地从 VK 代码中检索 ascii 字符 在 windows 中使用 lazarus/fpc 和 mapvirtualkey 函数。

是否有等效于 mapvirtualkey 的跨平台(特别是 macOS)lazarus/fpc?有没有其他方法可以在 macOS 上使用 lazarus/fpc 在当前键盘布局下获取与 VK 代码对应的 ascii/unicode 字符?

提前谢谢你!

编辑:(改写问题)Mac 上 Lazarus 上的 onKeyDown 事件提供了一个“Key”参数。 mac上有没有办法将此参数转换为与此“密钥”对应的ascii / unicode字符?

【问题讨论】:

  • 什么是 Mac 版的虚拟键码?
  • 是传递给onKeyDown事件的“Key”参数。
  • 是的,但该值实际上是什么。虚拟键码是 Windows 特定的概念。 Mac 上的相同概念是什么?
  • 它以同样的方式工作。它与硬件按钮有关,与键盘布局/语言设置无关。例如,对于“p”键,VK 代码是 80(与 windows 相同),无论您是否有英文键盘(在这种情况下,它对应于字母“p”,当按下时不按 shift)或者,例如,希腊键盘(对应于没有移位的字母“π”)。
  • 猜工作不会让你走得太远。尝试找出底层系统的要求。要求以类似的方式替换功能是不现实的。

标签: lazarus freepascal


【解决方案1】:

我也对你想要什么感到困惑。 但也许这会有所帮助:

查看 lazarus 文件夹中的 lcltype 单元,它包含所有“虚拟密钥”常量(搜索 vk_ )。

因此,当按下 Return/Enter 键时,“Key”参数获取与 VK_RETURN 对应的双精度值。等等所有扩展的键盘字符。

您也可以将 Ord() 和 Chr() 函数与这些值一起使用,我相信它们会满足您的需求 (?)。

如果您要使用这些代码,请不要忘记将 lcltype 添加到您的“使用”部分。

HTH。

【讨论】:

  • 谢谢,但这不是我要找的。换句话说,我想知道当用户按下时,用户键盘上会产生哪个字符。顶行左起第三个按钮,以及 shift。在美式键盘中,这将产生一个 @ 字符。在英文键盘上,它会产生一些其他字符。在 Windows 上,这是通过 MapVirtualKey 函数完成的。但是,我找不到如何在 Mac 上做到这一点......
猜你喜欢
  • 2014-07-22
  • 2017-12-27
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多