Я пытаюсь использовать другой сенсорный экран в Android. Сенсорный экран подключен через USB и распознается как устройство HID, но он не работает. Даже при включении отображения позиций я не вижу событий на экране (которые 1280х800). Когда экран переходит в режим ожидания, сенсорный экран не просыпается (но если я подключаю USB-мышь, я могу взаимодействовать с системой). Я не могу понять, что не работает. Кернер обнаруживает устройство:
input: HID 03eb:214e as /devices/platform/fsl-ehci.1/usb2/2-1/2-1.3/2-1.3:1.1/input/input2
Android EventHub также:
I/EventHub( 2499): New device: id=2, fd=92, path='/dev/input/event2', name='HID 03eb:214e', classes=0x80000004, configuration='/system/usr/idc/Vendor_03eb_Product_214e.idc', keyLayout='', keyCharacterMap='', builtinKeyboard=false
Android InputReader тоже:
I/InputReader( 2499): Touch device 'HID 03eb:214e' could not query the properties of its associated display. The device will be inoperable until the display size becomes available.
...
I/InputReader( 2499): Device reconfigured: id=2, name='HID 03eb:214e', size 1280x800, orientation 0, mode 3, display id 0
Указатель Android показывает эти сообщения:
I/Pointer ( 2499): Device Enumerated: Input Device 2: HID 03eb:214e
I/Pointer ( 2499): Descriptor: b73a78ee3e94e1f7d81637579fe842568d9492f6
I/Pointer ( 2499): Generation: 12
I/Pointer ( 2499): Location: external
I/Pointer ( 2499): Keyboard Type: none
I/Pointer ( 2499): Has Vibrator: false
I/Pointer ( 2499): Sources: 0x2002 ( mouse )
I/Pointer ( 2499): AXIS_X: source=0x2002 min=0.0 max=1279.0 flat=0.0 fuzz=0.3125
I/Pointer ( 2499): AXIS_Y: source=0x2002 min=0.0 max=799.0 flat=0.0 fuzz=0.1953125
I/Pointer ( 2499): AXIS_PRESSURE: source=0x2002 min=0.0 max=1.0 flat=0.0 fuzz=0.0
Вывод команды dumpsys говорит об этом:
Device 2: HID 03eb:214e
Generation: 12
IsExternal: true
Sources: 0x00002002
KeyboardType: 0
Motion Ranges:
X: source=0x00002002, min=0.000, max=1279.000, flat=0.000, fuzz=0.312
Y: source=0x00002002, min=0.000, max=799.000, flat=0.000, fuzz=0.195
PRESSURE: source=0x00002002, min=0.000, max=1.000, flat=0.000, fuzz=0.000
Touch Input Mapper:
Parameters:
GestureMode: spots
DeviceType: pointer
AssociatedDisplay: hasAssociatedDisplay=true, isExternal=false
OrientationAware: true
Raw Touch Axes:
X: min=0, max=4095, flat=0, fuzz=0, resolution=0
Y: min=0, max=4095, flat=0, fuzz=0, resolution=0
Pressure: unknown range
TouchMajor: unknown range
TouchMinor: unknown range
ToolMajor: unknown range
ToolMinor: unknown range
Orientation: unknown range
Distance: unknown range
TiltX: unknown range
TiltY: unknown range
TrackingId: unknown range
Slot: unknown range
Calibration:
touch.size.calibration: none
touch.pressure.calibration: none
touch.orientation.calibration: none
touch.distance.calibration: none
Viewport: displayId=0, orientation=0, logicalFrame=[0, 0, 1280, 800], physicalFrame=[0, 0, 1280, 800], deviceSize=[1280, 800]
SurfaceWidth: 1280px
SurfaceHeight: 800px
SurfaceLeft: 0
SurfaceTop: 0
SurfaceOrientation: 0
Translation and Scaling Factors:
XTranslate: 0.000
YTranslate: 0.000
XScale: 0.312
YScale: 0.195
XPrecision: 3.200
YPrecision: 5.120
GeometricScale: 0.254
PressureScale: 0.000
SizeScale: 0.000
OrientationScale: 0.000
DistanceScale: 0.000
HaveTilt: false
TiltXCenter: 0.000
TiltXScale: 0.000
TiltYCenter: 0.000
TiltYScale: 0.000
Last Button State: 0x00000000
Last Raw Touch: pointerCount=0
Last Cooked Touch: pointerCount=0
Pointer Gesture Detector:
XMovementScale: 0.208
YMovementScale: 0.208
XZoomScale: 0.078
YZoomScale: 0.078
MaxSwipeWidth: 1448.154663
Используя getevent -l и касаясь верхнего левого угла, я получаю следующий вывод:
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH DOWN
/dev/input/event2: EV_ABS ABS_MISC 00000001
/dev/input/event2: EV_ABS ABS_X 0000001c
/dev/input/event2: EV_ABS ABS_Y 0000004a
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH UP
/dev/input/event2: EV_ABS 0029 00000002
/dev/input/event2: EV_ABS 002a 00000003
/dev/input/event2: EV_ABS 002b 00000004
/dev/input/event2: EV_ABS 002c 00000005
/dev/input/event2: EV_ABS 002d 0000000f
/dev/input/event2: EV_ABS 002e 00000005
/dev/input/event2: EV_SYN SYN_REPORT 00000000
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH DOWN
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH UP
/dev/input/event2: EV_ABS 002d 00000014
/dev/input/event2: EV_SYN SYN_REPORT 00000000
Если вместо этого я коснусь нижнего правого угла:
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH DOWN
/dev/input/event2: EV_ABS ABS_X 00000fb0
/dev/input/event2: EV_ABS ABS_Y 00000fd4
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH UP
/dev/input/event2: EV_ABS 002d 00000050
/dev/input/event2: EV_SYN SYN_REPORT 00000000
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH DOWN
/dev/input/event2: EV_MSC MSC_SCAN 000d0042
/dev/input/event2: EV_KEY BTN_TOUCH UP
/dev/input/event2: EV_ABS 002d 00000055
/dev/input/event2: EV_SYN SYN_REPORT 00000000
/dev/input/event2: EV_ABS 002d 00000091
/dev/input/event2: EV_SYN SYN_REPORT 00000000
В файле конфигурации устройства ввода "/system/usr/idc/Vendor_03eb_Product_214e.idc" есть такие строки:
device.internal = 0
touch.deviceType = default
touch.orientationAware = 1
Я надеюсь, что кто-то может помочь мне понять, что я делаю неправильно!
Заранее спасибо!