Estou tentando usar uma tela sensível ao toque diferente no Android. A tela sensível ao toque é conectada via USB e reconhecida como um dispositivo HID, mas não funciona. Mesmo habilitando a exibição de posições, não vejo eventos na tela (ou seja, 1280x800). Quando a tela entra em espera, o toque não a ativa (mas, se eu conectar um mouse USB, posso interagir com o sistema). Eu não consigo entender o que não está funcionando. O kerner detecta o dispositivo:
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 também:
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 também:
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
O ponteiro do Android mostra essas mensagens:
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
A saída do comando dumpsys diz isso:
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
Usando getevent -l e tocando no canto superior esquerdo, tenho esta saída:
/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
Se eu tocar no canto inferior direito:
/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
No arquivo de configuração do dispositivo de entrada "/system/usr/idc/Vendor_03eb_Product_214e.idc", há essas linhas:
device.internal = 0
touch.deviceType = default
touch.orientationAware = 1
Espero que alguém possa me ajudar a entender o que estou fazendo de errado!
Obrigado antecipadamente!
Tags android touchscreen