没有合适的资源?快使用搜索试试~ 我知道了~
C语言bioskey返回值大全
5星 · 超过95%的资源 需积分: 50 29 下载量 179 浏览量
2011-08-07
12:15:10
上传
评论 1
收藏 6KB TXT 举报
温馨提示
试读
8页
很全面的bioskey返回值,基本上每个键都涵盖了,再也不用到网上各处找了
资源推荐
资源详情
资源评论
编写自己的键盘控制函数!
有的时候TC提供的屏幕输出函数并不能满足我们的实际需要比如我们需要一个输入字符后按下回车不换行
在图行模式按下某个键后显示自定义字符或图形 类似五子棋游戏中棋子移动问题等等.这就需要我们编写自己的屏幕输出函数和键盘控制函数而编写这样的函数需要读取键盘扫描码!
每个按键都对应一个唯一的扫描码来用于程序识别这个按键!但有些按键没有扫描码原因是它直接引起中断调用中断程序.
怎样获得扫描码以确定那个键被按下?:一是直接使用 Turbo C 提供
的键盘操作函数 bioskey()来识别,二是通过int86()函数,调用 BIOS
的 INT 16H,功能号为 0 的中断。它将按键的扫描码存放在 Ax 寄存器的高字节中。
下面介绍bioskey()函数的用法! bioskey()的原型为:
int bioskey(int cmd);
它在 bios.h 头文件中进行了说明,参数 cmd 用来确定 bioskey()如何操作:
操作
cmd
bioskey()返回按健的键值,该值是 2 个字节的整型数。若没有键按下,则该函数一
0
直等待,直到有键按下。当按下时,若返回值的低 8 位为非零,则表示为普通键,
其值代表该键的 ASCII 码。若返回值的低 8 位为 0,则高 8 位表示为扩展的 ASCII
码,表示按下的是特殊功能键。
bioskey()查询是否有键按下。若返回非 0 值,则表示有键按下,若为 0 表示没键按
1
下。
按过的状态由该函数返回的低 8 位的各位
2 bioskey()将返回一些控制键是否被按过,
值来表示:
字节位 对应的 16 进制数 含义
右边的 shift 键被按下
0 0x01
左边的 shift 键被按下
1 0x02
Ctrl 键被按下
2 0x04
有的时候TC提供的屏幕输出函数并不能满足我们的实际需要比如我们需要一个输入字符后按下回车不换行
在图行模式按下某个键后显示自定义字符或图形 类似五子棋游戏中棋子移动问题等等.这就需要我们编写自己的屏幕输出函数和键盘控制函数而编写这样的函数需要读取键盘扫描码!
每个按键都对应一个唯一的扫描码来用于程序识别这个按键!但有些按键没有扫描码原因是它直接引起中断调用中断程序.
怎样获得扫描码以确定那个键被按下?:一是直接使用 Turbo C 提供
的键盘操作函数 bioskey()来识别,二是通过int86()函数,调用 BIOS
的 INT 16H,功能号为 0 的中断。它将按键的扫描码存放在 Ax 寄存器的高字节中。
下面介绍bioskey()函数的用法! bioskey()的原型为:
int bioskey(int cmd);
它在 bios.h 头文件中进行了说明,参数 cmd 用来确定 bioskey()如何操作:
操作
cmd
bioskey()返回按健的键值,该值是 2 个字节的整型数。若没有键按下,则该函数一
0
直等待,直到有键按下。当按下时,若返回值的低 8 位为非零,则表示为普通键,
其值代表该键的 ASCII 码。若返回值的低 8 位为 0,则高 8 位表示为扩展的 ASCII
码,表示按下的是特殊功能键。
bioskey()查询是否有键按下。若返回非 0 值,则表示有键按下,若为 0 表示没键按
1
下。
按过的状态由该函数返回的低 8 位的各位
2 bioskey()将返回一些控制键是否被按过,
值来表示:
字节位 对应的 16 进制数 含义
右边的 shift 键被按下
0 0x01
左边的 shift 键被按下
1 0x02
Ctrl 键被按下
2 0x04
Alt 键被按下
3 0x08
Scroll Lock 已打开
4 0x10
Num Lock 已打开
5 0x20
Caps Lock 已打开
6 0x40
Inset 已打开
7 0x80
当某位为 l 时,表示相应的键已按,或相应的控制功能已有效,如选参数 cmd 为 2,
若 key 值为 0x09,则表示右边的 shift 键被按,同时又按了 Alt 键。
其实bilskey()就是通过调用int86()来实现的!也需bilskey()就是int86()的宏定义有兴趣的朋友可以自 己查下相关资料
int int86(int intr_num,union REGS *inregs,union REGS *outregs);
这个函数在 bios.h 头文件中进行了说明,它的第一个参数 intr_num 表示 BIOS 调用类型
号,相当于 int n 调用的中断类型号 n,第二个参数表示是指向联合类型 REGS 的指针,它
用于接收调用的功能号及其它一些指定的入口参数, 以便传给相应的寄存器, 第三个参数也
是一个指向联合类型 REGS 的指针,它用于接收功能调用后的返回值,即出口参数,如调
用的结果,状态信息,这些值从相关寄存器中得到。
下面举个bioskey()应用的例子:
#include "Stdio.h"
#include "Conio.h"
#include <stdlib.h>
int main(void)
}
}
下面是我自己读取的键盘扫描码
剩余7页未读,继续阅读
aimerjing
- 粉丝: 4
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页