捕捉键盘输入,用int kbhit(void)和bioskey()实现。
kbhit()用来检测键盘是否有输入,
bioskey(1)检测是否有键按下,没有键按下时返回0,有键按下时返回按键码(任何按键码都不为0),但此时并不将检测到的按键码从键盘缓冲队列中清除.
bioskey(0)返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清除.
bioskey(2)返回按键的状态(如组合键等),返回的整数中的每一个位含义如下:
┌──┬───────────┬───────────┐
│ 位 │为0时意义 │为1时意义 │
├──┼───────────┼───────────┤
│ 7 │插入状态 │改写状态 │
│ 6 │大写状态 │小写状态 │
│ 5 │数字状态,NumLock灯亮 │光标状态,NumLock灯熄 │
│ 4 │ScrollLock灯亮 │ScrollLock灯熄 │
│ 3 │Alt按下 │Alt未按下 │
│ 2 │Ctrl按下 │Ctrl未按下 │
│ 1 │左Shift按下 │左Shift未按下 │
│ 0 │右Shift按下 │右Shift未按下 │
└──┴───────────┴───────────┘
至于鼠标用int86软中断函数的0x33号中断实现,
Int86(int intno,union REGS *inregs,union REGS *outregs);
当inregs.x.ax为3时,则读取鼠标的按键信息,并在outregs.x.bx\cx\dx中返回按键时光标的状态。