BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #4105同步于 2011/7/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

windows键盘扫描码到android键盘的映射

hyx
2011/7/28镜像同步7 回复
做映射的时候遇到一个问题,windows键盘有两键合体的,比如1和!,2和@,a和A,我们使用时用shift区分,但他们扫描码是相同的吧,怎么去区分呢? 如android键盘上的 2和@ mKeyMap[KeyEvent.KEYCODE_2] 和mKeyMap[KeyEvent.KEYCODE_AT] 都等于0X3吗?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
ColdZenLeft机器人#1 · 2011/7/28
【 在 hyx 的大作中提到: 】 : 做映射的时候遇到一个问题,windows键盘有两键合体的,比如1和!,2和@,a和A,我们使用时用shift区分,但他们扫描码是相同的吧,怎么去区分呢? : 如android键盘上的 2和@ mKeyMap[KeyEvent.KEYCODE_2] 和mKeyMap[KeyEvent.KEYCODE_AT] 都等于0X3吗? : -- : ................... 扫描码那个只是了解些Windows的,皮毛吧,不过我觉得那个东西比较深和底层。Android不熟悉,你说的可能是VirtualKey,Windows也有类似的概念,不过和扫描码也不是一个东西貌似。 找了点以前的源码资料,Windows一个门键盘记录器,就是利用的扫描码: //定义需要打印的按键名称 char cKeyPress[][6]={"A","B","C","D","E","F","G","H","I","J","K", "L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4", "5","6","7","8","9","`","-","=","\\","BKSP","SPACE","TAB","CAPS","ENTER","ESC","[","]",";","'",",",".","/","?"}; //定义按键被按下是产生的扫描码 unsigned char cKeyDown[255]={0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18,0x19,0x10,0x13,0x1F, 0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x29,0x0c,0x0d,0x2b,0x0e,0x39,0x0f,0x3a,0x1c,0x01, 0x1a,0x1b,0x27,0x28,0x33,0x34,0x35,0}; //读取0x60端口获取键盘扫描码 void __declspec (naked) GetKey() { _asm { pushad; pushf; cli; in al,60h; mov keyData.cKey,al; popf; popad; retf; } } 寒江独钓里面有个更为详细的码表: unsigned char asciiTbl[]={ 0x00, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x2D, 0x3D, 0x08, 0x09, //normal 0x71, 0x77, 0x65, 0x72, 0x74, 0x79, 0x75, 0x69, 0x6F, 0x70, 0x5B, 0x5D, 0x0D, 0x00, 0x61, 0x73, 0x64, 0x66, 0x67, 0x68, 0x6A, 0x6B, 0x6C, 0x3B, 0x27, 0x60, 0x00, 0x5C, 0x7A, 0x78, 0x63, 0x76, 0x62, 0x6E, 0x6D, 0x2C, 0x2E, 0x2F, 0x00, 0x2A, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x38, 0x39, 0x2D, 0x34, 0x35, 0x36, 0x2B, 0x31, 0x32, 0x33, 0x30, 0x2E, 0x00, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x2D, 0x3D, 0x08, 0x09, //caps 0x51, 0x57, 0x45, 0x52, 0x54, 0x59, 0x55, 0x49, 0x4F, 0x50, 0x5B, 0x5D, 0x0D, 0x00, 0x41, 0x53, 0x44, 0x46, 0x47, 0x48, 0x4A, 0x4B, 0x4C, 0x3B, 0x27, 0x60, 0x00, 0x5C, 0x5A, 0x58, 0x43, 0x56, 0x42, 0x4E, 0x4D, 0x2C, 0x2E, 0x2F, 0x00, 0x2A, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x38, 0x39, 0x2D, 0x34, 0x35, 0x36, 0x2B, 0x31, 0x32, 0x33, 0x30, 0x2E, 0x00, 0x1B, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29, 0x5F, 0x2B, 0x08, 0x09, //shift 0x51, 0x57, 0x45, 0x52, 0x54, 0x59, 0x55, 0x49, 0x4F, 0x50, 0x7B, 0x7D, 0x0D, 0x00, 0x41, 0x53, 0x44, 0x46, 0x47, 0x48, 0x4A, 0x4B, 0x4C, 0x3A, 0x22, 0x7E, 0x00, 0x7C, 0x5A, 0x58, 0x43, 0x56, 0x42, 0x4E, 0x4D, 0x3C, 0x3E, 0x3F, 0x00, 0x2A, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x38, 0x39, 0x2D, 0x34, 0x35, 0x36, 0x2B, 0x31, 0x32, 0x33, 0x30, 0x2E, 0x00, 0x1B, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29, 0x5F, 0x2B, 0x08, 0x09, //caps + shift 0x71, 0x77, 0x65, 0x72, 0x74, 0x79, 0x75, 0x69, 0x6F, 0x70, 0x7B, 0x7D, 0x0D, 0x00, 0x61, 0x73, 0x64, 0x66, 0x67, 0x68, 0x6A, 0x6B, 0x6C, 0x3A, 0x22, 0x7E, 0x00, 0x7C, 0x7A, 0x78, 0x63, 0x76, 0x62, 0x6E, 0x6D, 0x3C, 0x3E, 0x3F, 0x00, 0x2A, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x38, 0x39, 0x2D, 0x34, 0x35, 0x36, 0x2B, 0x31, 0x32, 0x33, 0x30, 0x2E }; 从这个看,按住Shift和Cap之类的和NORMAL有区别。。。所以可能不是一样的,不过我不确定 但是,我感觉Android应该不会这么底层的让你操作吧?可能是VirtualKey值,那个和扫描码概念挺混淆地
hyx机器人#2 · 2011/7/28
【 在 ColdZenLeft 的大作中提到: 】 : ................... 谢谢你哦,我用的是android.view.KeyEvent的key code 去对应scan code ,扫描码对照的是文档Keyboard Scan Code Specification,我英文不好,没找到答案。请问你回复的asciiTbl是对应的怎样一个符号表呢?
hyx机器人#3 · 2011/7/28
我找到答案了,ColdZenLeft 你说得对,按住shift是不一样的,这个网页的对照很全。http://topic.csdn.net/t/20050606/16/4063198.html
ColdZenLeft机器人#4 · 2011/7/28
奥,刚看到。。。不错,学习了。。。
hyx机器人#5 · 2011/7/28
【 在 ColdZenLeft 的大作中提到: 】 : 奥,刚看到。。。不错,学习了。。。 : -- 呜呜,我粗心了,文章写的是扫描码一样的,扩展码(ASCII码)不一样。
ingenious机器人#6 · 2011/7/29
imba..你肿么什么都知道... 【 在 ColdZenLeft 的大作中提到: 】 : 奥,刚看到。。。不错,学习了。。。 : --
ColdZenLeft机器人#7 · 2011/7/29
【 在 ingenious 的大作中提到: 】 : imba..你肿么什么都知道... : 【 在 ColdZenLeft 的大作中提到: 】 : : 奥,刚看到。。。不错,学习了。。。 : ................... 怎么可能,各种不懂[em17] 真要你说的就不愁找不到工作了