Android键盘研究初步

Android基本键盘驱动采用了Linux的input和event机制 对于Linux内核主要是这个驱动drivers/input/keyboard/gpio_keys.c 这有篇分析文章 http://www.cnitblog.com/luofuchong/archive/2007/11/12/36157.html 而内核中通过platform机制将按键信息注册进系统: / Android基本键盘驱动采用了Linux的input和event机制 对于Linux内核主要是这个驱动drivers/input/keyboard/gpio_keys.c 这有篇分析文章 http://www.cnitblog.com/luofuchong/archive/2007/11/12/36157.html 而内核中通过platform机制将按键信息注册进系统: /* gpio buttons */ static struct gpio_keys_button gpio_buttons[] = { { .gpio = S3C64XX_GPN(0), .code = 116, .desc = "ENDCALL", .active_low = 1, .wakeup = 0, }, { .gpio = S3C64XX_GPN(1), .code = 139, .desc = "MENU", .active_low = 1, .wakeup = 0, }, { .gpio = S3C64XX_GPN(2), .code = 99, .desc = "ROTATE", .active_low = 1, .wakeup = 0, }, { .gpio = S3C64XX_GPN(3), .code = 102, .desc = "HOME", .active_low = 1, .wakeup = 0, }, { .gpio = S3C64XX_GPN(4), .code = 0x2a, .desc = "BACK", .active_low = 1, .wakeup = 0, }, { .gpio = S3C64XX_GPN(5), .code = 158, .desc = "BACK", .active_low = 1, .wakeup = 0, } }; static struct gpio_keys_platform_data gpio_button_data = { .buttons = gpio_buttons, .nbuttons = ARRAY_SIZE(gpio_buttons), }; static struct platform_device gpio_button_device = { .name = "gpio-keys", .id = -1, .num_resources = 0, .dev = { .platform_data = &gpio_button_data, } }; 按键结构体中特别重要的是code变量中的数据,android通过event机制可以获取这个数据。 而在q5的android系统中,获取到键盘的键值后,会搜索/system/usr/keylayout/gpio-keys.kl这个文件 key 158 BACK WAKE_DROPPED key 139 MENU WAKE_DROPPED key 102 HOME WAKE key 116 ENDCALL WAKE_DROPPED key 99 ROTATOR 如果code与其中的键值相对应,android就会响应对应的按键信息。 至于android如何建立gpio-key.kl这个文件,以及获取到键值后的处理,需要继续研究。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值