【问题标题】:Read keyboard characters to determine shortcuts [closed]阅读键盘字符以确定快捷方式[关闭]
【发布时间】:2009-01-05 05:54:49
【问题描述】:

我正在开发一个文档应用程序和该应用程序的一部分,如果该键盘条目与预定义的短格式匹配,我必须添加支持以读取键盘按下事件并替换预定义的字符集/ word.实际应用已经用C++实现了。

请提供您对如何实现此功能的想法。是否有任何示例 C++ 程序可供参考?算法/概念?

【问题讨论】:

  • 你能告诉我们这将在什么平台上运行吗?

标签: c++ text keyboard-shortcuts keyboard-events


【解决方案1】:

了解如何使用 wxWidgets api 捕获 keydown 事件,也许在这里: http://docs.wxwidgets.org/stable/wx_eventhandlingoverview.html#eventhandlingoverview 关注key events。在 C++ 中实现一个开关以查看按下了哪个组合键,并相应地将文本设置为编辑。我在这里考虑的是在编辑框中将 CTRL-SHIFT-A 按键转换为 Ctrl-Shift-a 之类的文本。

如果您正在考虑将字符组合转换为其他字符,例如汉字或平假名,则算法可能更长,需要更多的数据结构。

【讨论】:

    【解决方案2】:

    标准 C++ 不支持按键事件,因此您必须查看操作系统函数或框架函数。 wxWidgets 或 Qt 等便携式 C++ 框架支持 Windows、Mac 和 Linux 上的按键事件。

    【讨论】:

    • 实际应用是用C++和Wxwidgets实现的。会有这方面的文档吗?
    【解决方案3】:

    如果您在 Windows 下,您可以使用 GetAsyncKeystate API 调用并观察更改,或者使用低级键盘挂钩(稍微复杂一些)(CreateHookEx + 相关函数)。

    在 DOS(或可能是 Linux)下,您可以在控制台模式下使用 conio.h 中的 _kbhit,我通常将其置于循环中 (while(!_kbhit());) 用于“按任意键继续”,但是使用 _getch 可以检索被按下的键

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2021-06-29
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2012-10-11
      • 2015-03-28
      相关资源
      最近更新 更多