当前位置:  技术问答>linux和unix

关于usb键盘驱动中的百思不解的问题

    来源: 互联网  发布时间:2016-06-11

    本文导语:  usb_kbd_keycode的数组为何这样定义?usb_kbd_irq中断处理过程不好理解,请高手解析! static unsigned char usb_kbd_keycode[256] = {   0,  0,  0,  0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,  50, 49, 24, 25, 16, 19, 31, 20...

usb_kbd_keycode的数组为何这样定义?usb_kbd_irq中断处理过程不好理解,请高手解析!
static unsigned char usb_kbd_keycode[256] = {
  0,  0,  0,  0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,
 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44,  2,  3,
  4,  5,  6,  7,  8,  9, 10, 11, 28,  1, 14, 15, 57, 12, 13, 26,
 27, 43, 84, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,
 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,
105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,
 72, 73, 82, 83, 86,127,116,117, 85, 89, 90, 91, 92, 93, 94, 95,
120,121,122,123,134,138,130,132,128,129,131,137,133,135,136,113,
115,114,  0,  0,  0,124,  0,181,182,183,184,185,186,187,188,189,
190,191,192,193,194,195,196,197,198,  0,  0,  0,  0,  0,  0,  0,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
150,158,159,128,136,177,178,176,142,152,173,140
};
static void usb_kbd_irq(struct urb *urb)
{
struct usb_kbd *kbd = urb->context;
int i;

if (urb->status) return;

for (i = 0; i dev, usb_kbd_keycode[i + 224], (kbd->new[0] >> i) & 1);

for (i = 2; i old[i] > 3 && memscan(kbd->new + 2, kbd->old[i], 6) == kbd->new + 8) {
if (usb_kbd_keycode[kbd->old[i]])
input_report_key(&kbd->dev, usb_kbd_keycode[kbd->old[i]], 0);
else
info("Unknown key (scancode %#x) released.", kbd->old[i]);
}

if (kbd->new[i] > 3 && memscan(kbd->old + 2, kbd->new[i], 6) == kbd->old + 8) {
if (usb_kbd_keycode[kbd->new[i]])
input_report_key(&kbd->dev, usb_kbd_keycode[kbd->new[i]], 1);
else
info("Unknown key (scancode %#x) pressed.", kbd->new[i]);
}
}

memcpy(kbd->old, kbd->new, 8);
}

|
你看看 usb hid scancode translate to ps2 scancode的规范:

http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/Translate.xls
http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有两个USB键盘怎么用自己写的USB键盘驱动程序只替换其中一个驱动?
  • usb键盘和usb鼠标对应的设备文件是哪两个?
  • 请问一下,安装FreeBSD的时候,我得键盘和鼠标都是USB口的,安装的时候找不到鼠标和键盘怎么办?急!
  • 我安装的是suse的linux,我的键盘用的usb的,安装好以后,键盘的一些符号显示不对。
  • usb键盘驱动 一个问题?
  • 如何用USB口的键盘安装RH8.0
  • arm(2440)没有lcd和qt。怎么测试usb键盘!
  • 在安装RedHat时,为何不支持USB接口的鼠标和键盘
  • linux下如何区分多个USB键盘的输入?
  • usb键盘问题
  • rh9下面为什么我用USB的光电鼠标居然键盘不能用!
  • 编译内核的后,我的一个类似USB键盘的HID类设备使用不了了,怎么办?
  • 怎样使linux-2.6.2x内核 支持usb 键盘和鼠标
  • 如何使用USB键盘?
  • 如何禁用USB鼠标和键盘,但是USB存储设备还可以使用??
  • redhat9.0重新编译内核(2.4.20)后USB键盘无法使用的问题?
  • USB hid 键盘驱动的设备节点?
  • 在linux中,USB 键盘对应的设备文件名是什么?
  • usb接口与usb transceiver的问题
  • 我安装的是suse的linux,我的键盘用的usb的,安装好以后,键盘的一些符号显示不对。 iis7站长之家
  • USB同一个端口,USB协议不同对应不同的总线
  • linux主机检测不到开发板(USB-USB连接)
  • [求助]关于usb-serial---------usb转串口没有设备
  • 挂载USB后,打开USB时找不到文件,都是文件夹,求解!
  • USB驱动程序开发中,如何读取USB设备数据??
  • usb.c:usb 2(vend...) is not claimed by any active driver???
  • 有谁能告诉我USB设备驱动和USB gadget驱动究竟有什么不同么?
  • 安装usb-modeswitch时提示 找不到usb.h
  • 请教usb host和usb slave的区别
  • linux usb驱动中的usb0端口接收数据问题
  • 请问如何在USB上安装Linux,并通过USB引导


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3