Android 4.0 Keyboard

Материал из Toshiba AC100 wiki
Перейти к: навигация, поиск

/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>