Android 4.0 Keyboard
/system/usr/keylayout/nvec_keyboard.kl - работают все кнопки кроме "меню выключения", управления подсветкой, вкл\выкл wifi и LCD\HDMI.
Внешние ссылки:
https://github.com/cehberlin/Android-x86-ICS-support-for-several-Acer-and-Packard-Bell-devices/blob/master/ics-x86-patches/hw_keyboard_layout_setting_patch/packages/apps/Settings/hw-keyboard-setting.diff для крайне смелых (у этого патча есть зависимость - так написано в ридми. Зависим от property_patch)
https://github.com/cehberlin/Android-x86-ICS-support-for-several-Acer-and-Packard-Bell-devices/blob/master/ics-x86-patches/hw_keyboard_layout_setting_patch/frameworks/base/data/keyboards/ru.kcm https://github.com/cehberlin/Android-x86-ICS-support-for-several-Acer-and-Packard-Bell-devices/blob/master/ics-x86-patches/hw_keyboard_layout_setting_patch/frameworks/base/data/keyboards/ru.kl
http://code.google.com/p/hackerskeyboard/ - исходники на клавиатуру, возможно, скоро включат поддержку аппаратной клавиатуры. http://code.google.com/p/softkeyboard/ - уже поддерживает аппаратную клавиатуру, если не получится со штатной - будем тестить
http://source.android.com/tech/input/input-device-configuration-files.html http://source.android.com/tech/input/keyboard-devices.html
http://habrahabr.ru/post/140384/
Итак. Перво-наперво надо понять как оно вообще все работает.
/system/usr/keylayout/nvec_keyboard.kl - файл сопоставления "KeyEvent" поступающих от драйвера клавиатуры к KeyCode(аля комманды\символы)
/system/usr/keylayout/*.kcm - файл сопоставления буквенных KeyCode к конкретным символам (примерный пример)
/system/build.prop содержит ro.product.locale.language и ro.product.locale.region (ИМХО, к клавиатуре их значения не относятся - socketa4techx7)
/system/etc/language.cfg содержит локали(у нас файла нет, создание ничего не меняет) en_US ru_RU
Так же на телефонах меняют /system/etc/smartdial KeyPadType=3 (непонятно почему 3 учитывая что локали всего 2.. т.е 0(дефолт) 1 и 2 (мм..по логике)
Где то должно быть указание на использование *.kl *kcm и других cfg. Почему у нас работает именно nvec_keyboard.kl? Просто от того что оно лежит в папке keylayout? (Это указание есть в .idc-файлах: /system/usr/idc/DEVICE_NAME.idc (в нашем случае - nvec_keyboard.idc.http://source.android.com/tech/input/input-device-configuration-files.html).
- Вывод getevent -p
getevent -p add device 1: /dev/input/event7 name: "PS/2 Generic Mouse" events: KEY (0001): 0110 0111 0112 REL (0002): 0000 0001 input props: <none> could not get driver version for /dev/input/mouse1, Not a typewriter add device 2: /dev/input/event3 name: "NVEC lid switch button" events: SW (0005): 0000 input props: <none> add device 3: /dev/input/event2 name: "NVEC power button" events: KEY (0001): 0074 input props: <none> add device 4: /dev/input/event1 name: "NVEC sleep button" events: KEY (0001): 008e input props: <none> add device 5: /dev/input/event0 name: "nvec keyboard" events: KEY (0001): 0001 0002 0003 0004 0005 0006 0007 0008 0009 000a 000b 000c 000d 000e 000f 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001a 001b 001c 001d 001e 001f 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 002a 002b 002c 002d 002e 002f 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003a 003b 003c 003d 003e 003f 0040 0041 0042 0043 0044 0047 0048 0049 004a 004b 004c 004d 004e 004f 0050 0051 0052 0053 0056 0057 0058 0061 0062 0063 0064 0066 0067 0068 0069 006a 006b 006c 006d 006e 006f 0071 0073 0074 007d 008b 00d0 00d9 00df LED (0011): 0001 input props: <none> could not get driver version for /dev/input/mice, Not a typewriter add device 6: /dev/input/event4 name: "Logitech USB-PS/2 Optical Mouse" events: KEY (0001): 0110 0111 0112 REL (0002): 0000 0001 0008 MSC (0004): 0004 input props: <none> could not get driver version for /dev/input/mouse0, Not a typewriter add device 7: /dev/input/event5 name: "tegra-alc5632 Headset Jack" events: SW (0005): 0002 0004 input props: <none> add device 8: /dev/input/event6 name: "gpio-keys" events: KEY (0001): 0074 input props: <none>