中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-02 18:33
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 在DOS下如何用C实现键盘某键的按下 查看 3,283 回复 22
16 发表于 2006-12-27 03:00 ·  IANA 局域网IP(Private-Use)
初级用户
积分 63
发帖 25
注册 2006-12-24 03:33
19年会员
UID 74402
性别 男
状态 离线
dear zly910:
你好!
感谢你提供的宝贵资料!
我有将你这段代码进行编译和运行,可以抓到那几个键而且有相应的响应,因本人知识的贫乏对中断还不是很懂,所以有几个问题还要请教下
http://www.computer-engineering.org/ps2keyboard/scancodes1.html
你应该有看过,对于一般的按键makecode和breakcode都只有1个字节,读出来的值是正常的,但是有很多有2个字节的,比如说播放键是EO,22和E0,2A,但是这里只能抓出2个E0来,也就是说只能取出他们的前面一个字节,是否可以改成抓出2个字节的,因为我不知道你用中断是如何实现的,还请你指点一下.
17 发表于 2006-12-27 03:49 ·  IANA 局域网IP(Private-Use)
初级用户
积分 63
发帖 25
注册 2006-12-24 03:33
19年会员
UID 74402
性别 男
状态 离线
我有试过将char换成int,将inportb(0x60)换成inport(0x60),效果还是一样
18 发表于 2006-12-27 05:20 ·  IANA 局域网IP(Private-Use)
初级用户
积分 63
发帖 25
注册 2006-12-24 03:33
19年会员
UID 74402
性别 男
状态 离线
还是要修改中断?该如何改?
19 发表于 2006-12-27 06:13 ·  美国 加利福尼亚州
初级用户
征(武林高手||搞安全 ..
积分 112
发帖 46
注册 2005-09-28 23:12
20年会员
UID 42931
状态 离线
偷偷google再来顶帖!

http://www.osdev.org/osfaq2/index.php/Getting%20Keyboard%20Input


What's that E0 scancode i get all the time ? ...you should just store the info and wait for the next scancode to know what key even actually occured...
20 发表于 2006-12-27 06:27 ·  IANA 局域网IP(Private-Use)
初级用户
积分 63
发帖 25
注册 2006-12-24 03:33
19年会员
UID 74402
性别 男
状态 离线
谢谢,在study中.
还想问下zly910,你那段代码中加入的那2行汇编是起什么作用?

如果有看到,麻烦解答下,谢谢
有知道的大虾也帮看下
21 发表于 2006-12-27 06:44 ·  美国 加利福尼亚州
初级用户
征(武林高手||搞安全 ..
积分 112
发帖 46
注册 2005-09-28 23:12
20年会员
UID 42931
状态 离线
disable interrupt -> 避免被其他发生的interrupt切换走 , 应该是避免跟ISRs race
22 发表于 2006-12-27 08:44 ·  IANA 局域网IP(Private-Use)
初级用户
积分 63
发帖 25
注册 2006-12-24 03:33
19年会员
UID 74402
性别 男
状态 离线
问题解决了,读2次0X60,因为中断程序没次只能是读1个字节,就算是换成inport()也是没用的,象那些有2个字节的键,会先进去高位,一般高位都是E0,然后再进去低,如果没有新的中断近来,低位会一直驻留在0X60的PORT中!!

很高兴问题解决,感谢AlwaysInherit和zly910的顶立支持,感谢CCTV,感谢ChinaV!!
23 发表于 2007-03-23 04:57 ·  IANA 局域网IP(Private-Use)
初级用户
积分 63
发帖 25
注册 2006-12-24 03:33
19年会员
UID 74402
性别 男
状态 离线
提上来看下
论坛跳转: