c语言 - <Shift>+<Right> 与 <Right>?

  • 本文关键字:Right Shift 语言 c getch
  • 更新时间 :
  • 英文 :


我想知道最终用户按下了什么键,所以我使用了getch()

如果用户按下,我可以得到0xE0 0x4D

如果用户按下Ctrl+Right,我可以得到0xE0 0x47

如果用户按下Shift+Right,我可以得到0xE0 0x4D

getch()RightShift+1Right的返回是相同的,所以我怎么知道最终用户按下了什么?

根据您报告的按键值,我假设您使用的是MS-DOS环境和编译器,并且您已将键盘输入设置为扫描码模式。如果是这样,您应该知道所有驱动程序逻辑的详细信息。特别是,按住Shift键时会报告相应的扫描代码。这个表报告了两个移位有2Ah和36h,所以,你应该同时考虑这两个,保留一个内部的按下修饰符表,以及两个Ctrl、两个Alts、Caps等。

(这真的是你想要的东西吗?扫描代码是非常低级的野兽。)

更新:我忘记指定导航键的处理是特定于键盘本身的。对于数字块,它取决于NumLock状态。对于附加的箭头/导航块,它通常充当NumLock关闭的数字块,但也有细微的区别。有很好的细节描述,如本集,应注意反映集1和翻译集2之间的差异(后者是当前与PS/2一起使用的集)。BIOS中USB键盘的PS/2仿真可以添加自己的细节。一般来说,所有这些都不复杂,但繁琐,并且需要许多遗留问题知识。

一个简单的getch无法处理所有键盘事件。它不会按照你想要的方式工作。

最新更新