yu.2@qq.com 发表于 2009-11-9 18:07:12

~!@#¥%……&()这几个键没有scancode

请问怎么配置他们呢?数字0-1是默认了 的嘛?

蓝色永恒 发表于 2009-11-9 23:35:56

只需要填 一级键盘的 SCANCODE 就OK 了,一搬CORE里的都会对SHIFT 进行处理 比如 只要在该填1 的位置填了 1 的scancode 那么当你去按下SHIFT +1 的时候 ,就会出来 !的SCANCODE ,
            您可以在 buffer_KEY函数里边下断点,把那个Buffer 里的东西丢到EC space 里看看到底发了什么,我也没追过到底发了什么, 但是我写好了,嘿,还没试过Shift的组合键 ,其他的都试了,都可以。
   我猜测可能Shift键除了CORE 里做动作,BIOS的INT9里也许也会有动作,具体细节可以看看PC技术内幕第八章~!~!

蓝色永恒 发表于 2009-11-9 23:41:12

查了一下CODE和PC技术内幕,呵呵

如上图,举个例子       6^   
kSCANCODE (0X36)是6所对应的 set2 的scancode   也就是你需要填的SCANCODE
   你只需要在 6 的位置去填0x36 就算配完这个键了   0X07 是SET1的扫描码,HOST 最终都是收到SET1的 扫描码(前提是    EC启用了 translate set2to set1 的功能)
EC的 如果启用了 translate set2 to set1 的功能,则, 会把0x36转换为 0x07丢出去,BIOS的INT9 Service 不管你 是否按下shift ,都会收到0x07
         只不过Shift 按下的时候BIOS会在其数据区(BDA里)置一个shift 的FLAG,根据这个 FLAG 是否 置位, BIOS 的Service 会返回不同的ASCII 码而已,比如按下shift +6 产生的scancode 是0x07,但是ASCII是 ^ 的 (0X5E), 而直接按 6 则产生(0x36),ASCII 是多少,那是BIOS和 上层 关心的事情!!!
   FYI

lanmoony 发表于 2012-3-19 17:59:52

感谢大大分享
页: [1]
查看完整版本: ~!@#¥%……&()这几个键没有scancode