集成旋转编码器作为输入设备 (AOSP)

Integration of a rotary encoder as input device (AOSP)

我正在尝试在 Android 中集成一个旋转编码器。即使 device.type 在设备配置文件中设置为 rotaryEncoder,也有一个 logcat 条目显示 class 0x1000 而不是 0x400000。我不知道这里出了什么问题。由于我对 AOSP 不是很熟悉,所以请期待最愚蠢的错误。

输入设备配置文件:

rpi3:/ # cat /system/usr/idc/rotary_0.idc
device.type = rotaryEncoder
device.internal = 1
device.res = 1
device.scalingFactor = 1

按键布局文件:

rpi3:/ # cat /system/usr/keylayout/rotary_0.kl
axis 0x08 SCROLL

getevent -il

add device 1: /dev/input/event3
  bus:      0019
  vendor    0000
  product   0000
  version   0000
  name:     "rotary@0"
  location: ""
  id:       ""
  version:  1.0.1
  events:
    REL (0002): REL_WHEEL
  input props:
    <none>

dmesg:

[    3.544491] rotary-encoder rotary@0: gray
[    3.547289] input: rotary@0 as /devices/platform/rotary@0/input/input3

logcat:

01-17 20:55:47.439   469   515 I EventHub: New device: id=1, fd=83, path='/dev/input/event3', name='rotary@0', classes=0x1000, configuration='/system/usr/idc/rotary_0.idc', keyLayout='', keyCharacterMap='', builtinKeyboard=false, wakeMechanism=EPOLLWAKEUP, usingClockIoctl=true

Android版本为7.1.2

虽然 Android 7.1 的 HAL 已经支持此功能,但 Android SDK 不支持低于 26 的 API 级别。因此它需要 Android 8.0 才能正常运行有 non-directional 滚轮支持。