如何通过 BIOS 中断获取特殊键

How to get special keys with BIOS interrupts

我正在写一个实模式OS,我想知道是否有一种方法可以用BI[=读取功能键、方向键、control、alt等键OS 中断? 感谢您提供的任何帮助。

keyboard BIOS 可以帮助您。

代码如

mov ah, 00h
int 16h     ; -> AX

将等待按键并 return 向您发送 AL 中按键的 ASCII 码和 AH 中按键的扫描码。
对于功能键、箭头等,您只需查看扫描码,因为对于大多数这些键,ASCII 码将为零。

要了解 ALT 键、CTRL 键或其他键的状态,您可以使用函数 02h 或 12h。或者,您可以检查 0040:0017h 和 0040:0018h.

低内存中的 BIOS 变量

ps 我目前无法 post 发表评论(浏览器问题)...

如果上面的代码产生AX=1E01h,那确实意味着用户按下了CTRLA.
必须注意某些 ALT 键组合,因为在 AX 中输入 return 的代码可能取决于键盘是 QWERTY 还是 AZERTY。 ALTA, ALTQ, ALTZ,ALTW,ALTM.