Porting to JB an Open Source Renesas-based tablet
(https://groups.google.com/forum/?hl=en&fromgroups=#!forum/renesas-emev-osp)
and having troubles with the touch screen.
While GB implementation perfectly supported the touch panels (PixCir or
Goodix mdels, depending of hardware revision), with the JB build these have
some issues. Touch enters in "Pointer" mode by default: a circle shows on
screen the processed touch points, telling at least the driver is working,
but I have to use two fingers to make it feel the touch. What's worst the
touch point isn't calibrated, as the circle doesn't show up under my
finger, but in a different place of the screen, as if wrong touch X and Y
were captured.
What's strange, touch data are received correctly, e.g. I can read the
touch position using "adb shell dump input":
...
Last Raw Touch: pointerCount=1
[0]: id=0, x=399, y=246, pressure=0, touchMajor=33, touchMinor=33,
toolMajor=33, toolMinor=33, orientation=0, tiltX=0, tiltY=0, distance=0,
toolType=1, isHovering=false
Last Cooked Touch: pointerCount=1
[0]: id=0, x=398.502, y=245.489, pressure=1.000, touchMajor=32.945,
touchMinor=32.945, toolMajor=32.945, toolMinor=32.945, orientation=0.000,
tilt=0.000, distance=0.000, toolType=1, isHovering=false
...
This is for example (with a Goodix device) while touching in the mid of
screen (complete dump below). As it's a 800x480 7" one, reported X=399 and
Y=246 are correct. But these looks like not being translated, or received
by the main window (the locker screen in this case) and the circle is in a
completely different position than the screen center.
I've checked the kernel driver, and it complies (as far as I could see) to
the requirements also described in:
http://source.android.com/tech/input/touch-devices.html
Both with the Goodix and Pixcir devices results are very similar. Also
after adding a .idc configuration, as suggested on the same, results are
similar, except that I can force the device to work in real Touchscreen
mode (not Pointer - circle isn't shown).
Find in the following the full dump while touching in the mid of the screen:
------------------
$ adb shell dumpsys input
adb server is out of date. killing...
* daemon started successfully *
INPUT MANAGER (dumpsys input)
Event Hub State:
BuiltInKeyboardId: -2
Devices:
-1: Virtual
Classes: 0x40000023
Path: <virtual>
Descriptor: a718a782d34bc767f4689c232d64d527998ea7fd
Location:
UniqueId: <virtual>
Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Virtual.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
1: ekt2201
Classes: 0x00000001
Path: /dev/input/event1
Descriptor: 54fb2efd84449f14715b8981fd0fd6fd2bcd1830
Location:
UniqueId:
Identifier: bus=0x0018, vendor=0x0000, product=0x0000, version=0x0000
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
2: gt80x
Classes: 0x00000014
Path: /dev/input/event2
Descriptor: 9e6143a1bc5dd41251b165ed559e32d49b5aad8f
Location: input/ts)
UniqueId:
Identifier: bus=0x0018, vendor=0xdead, product=0xbeef, version=0x1103
KeyLayoutFile:
KeyCharacterMapFile:
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
3: gpio-keys
Classes: 0x00000001
Path: /dev/input/event0
Descriptor: 485d69228e24f5e46da1598745890b214130dbc4
Location: gpio-keys/input0
UniqueId:
Identifier: bus=0x0019, vendor=0x0001, product=0x0001, version=0x0100
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
HaveKeyboardLayoutOverlay: false
Input Reader State:
Device -1: Virtual
Generation: 2
IsExternal: false
Sources: 0x00000301
KeyboardType: 2
Keyboard Input Mapper:
Parameters:
AssociatedDisplayId: -1
OrientationAware: false
KeyboardType: 2
Orientation: 0
KeyDowns: 0 keys currently down
MetaState: 0x0
DownTime: 0
Device 1: ekt2201
Generation: 8
IsExternal: false
Sources: 0x00000101
KeyboardType: 1
Keyboard Input Mapper:
Parameters:
AssociatedDisplayId: -1
OrientationAware: false
KeyboardType: 1
Orientation: 0
KeyDowns: 0 keys currently down
MetaState: 0x0
DownTime: 0
Device 2: gt80x
Generation: 10
IsExternal: false
Sources: 0x00002002
KeyboardType: 0
Motion Ranges:
X: source=0x00002002, min=0.000, max=799.001, flat=0.000, fuzz=0.999
Y: source=0x00002002, min=0.000, max=479.002, flat=0.000, fuzz=0.998
PRESSURE: source=0x00002002, min=0.000, max=1.000, flat=0.000,
fuzz=0.000
SIZE: source=0x00002002, min=0.000, max=1.000, flat=0.000, fuzz=0.000
TOUCH_MAJOR: source=0x00002002, min=0.000, max=932.952, flat=0.000,
fuzz=0.000
TOUCH_MINOR: source=0x00002002, min=0.000, max=932.952, flat=0.000,
fuzz=0.000
TOOL_MAJOR: source=0x00002002, min=0.000, max=932.952, flat=0.000,
fuzz=0.000
TOOL_MINOR: source=0x00002002, min=0.000, max=932.952, flat=0.000,
fuzz=0.000
Touch Input Mapper:
Parameters:
GestureMode: spots
DeviceType: pointer
AssociatedDisplay: id=0, isExternal=false
OrientationAware: false
Raw Touch Axes:
X: min=0, max=800, flat=0, fuzz=0, resolution=0
Y: min=0, max=480, flat=0, fuzz=0, resolution=0
Pressure: unknown range
TouchMajor: min=0, max=255, flat=0, fuzz=0, resolution=0
TouchMinor: unknown range
ToolMajor: min=0, max=255, flat=0, fuzz=0, resolution=0
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: geometric
touch.pressure.calibration: none
touch.orientation.calibration: none
touch.distance.calibration: none
SurfaceWidth: 800px
SurfaceHeight: 480px
SurfaceOrientation: 0
Translation and Scaling Factors:
XScale: 0.999
YScale: 0.998
XPrecision: 1.001
YPrecision: 1.002
GeometricScale: 0.998
PressureScale: 0.000
SizeScale: 0.004
OrientationCenter: 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=1
[0]: id=0, x=399, y=246, pressure=0, touchMajor=33, touchMinor=33,
toolMajor=33, toolMinor=33, orientation=0, tiltX=0, tiltY=0, distance=0,
toolType=1, isHovering=false
Last Cooked Touch: pointerCount=1
[0]: id=0, x=398.502, y=245.489, pressure=1.000, touchMajor=32.945,
touchMinor=32.945, toolMajor=32.945, toolMinor=32.945, orientation=0.000,
tilt=0.000, distance=0.000, toolType=1, isHovering=false
Pointer Gesture Detector:
XMovementScale: 0.799
YMovementScale: 0.799
XZoomScale: 0.300
YZoomScale: 0.300
MaxSwipeWidth: 233.581085
Device 3: gpio-keys
Generation: 4
IsExternal: false
Sources: 0x00000101
KeyboardType: 1
Keyboard Input Mapper:
Parameters:
AssociatedDisplayId: -1
OrientationAware: false
KeyboardType: 1
Orientation: 0
KeyDowns: 1 keys currently down
MetaState: 0x0
DownTime: 839534522000
Configuration:
ExcludedDeviceNames: []
VirtualKeyQuietTime: 0.0ms
PointerVelocityControlParameters: scale=1.000, lowThreshold=500.000,
highThreshold=3000.000, acceleration=3.000
WheelVelocityControlParameters: scale=1.000, lowThreshold=15.000,
highThreshold=50.000, acceleration=4.000
PointerGesture:
Enabled: true
QuietInterval: 100.0ms
DragMinSwitchSpeed: 50.0px/s
TapInterval: 150.0ms
TapDragInterval: 300.0ms
TapSlop: 20.0px
MultitouchSettleInterval: 100.0ms
MultitouchMinDistance: 15.0px
SwipeTransitionAngleCosine: 0.3
SwipeMaxWidthRatio: 0.2
MovementSpeedRatio: 0.8
ZoomSpeedRatio: 0.3
Input Dispatcher State:
DispatchEnabled: 1
DispatchFrozen: 0
FocusedApplication: name='AppWindowToken{411195e8 token=Token{4116c558
ActivityRecord{40fbe1e0
com.android.launcher/com.android.launcher2.Launcher}}}',
dispatchingTimeout=5000.000ms
FocusedWindow: name='Window{411240b8 Keyguard paused=false}'
TouchDown: false
TouchSplit: false
TouchDeviceId: -1
TouchSource: 0x00000000
TouchedWindows: <none>
Windows:
0: name='Window{41266a38 RecentsPanel paused=false}', paused=false,
hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false,
flags=0x00820102, type=0x000007de, layer=161000, frame=[0,0][800,480],
scale=1.000000, touchableRegion=[0,0][800,480], inputFeatures=0x00000000,
ownerPid=277, ownerUid=10005, dispatchingTimeout=5000.000ms
1: name='Window{41267b90 StatusBar paused=false}', paused=false,
hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false,
flags=0x01800048, type=0x000007d0, layer=151000, frame=[0,0][800,25],
scale=1.000000, touchableRegion=[0,0][800,25], inputFeatures=0x00000000,
ownerPid=277, ownerUid=10005, dispatchingTimeout=5000.000ms
2: name='Window{411240b8 Keyguard paused=false}', paused=false,
hasFocus=true, hasWallpaper=false, visible=true, canReceiveKeys=true,
flags=0x04120800, type=0x000007d4, layer=111000, frame=[0,25][800,480],
scale=1.000000, touchableRegion=[0,25][800,480], inputFeatures=0x00000000,
ownerPid=220, ownerUid=1000, dispatchingTimeout=5000.000ms
3: name='Window{41287280 com.android.systemui.ImageWallpaper
paused=false}', paused=false, hasFocus=false, hasWallpaper=false,
visible=true, canReceiveKeys=false, flags=0x00000318, type=0x000007dd,
layer=21005, frame=[0,0][960,800], scale=1.000000,
touchableRegion=[0,0][960,800], inputFeatures=0x00000000, ownerPid=277,
ownerUid=10005, dispatchingTimeout=5000.000ms
4: name='Window{41233ba0
com.android.launcher/com.android.launcher2.Launcher paused=false}',
paused=false, hasFocus=false, hasWallpaper=false, visible=true,
canReceiveKeys=true, flags=0x01910100, type=0x00000001, layer=21000,
frame=[0,0][800,480], scale=1.000000, touchableRegion=[0,0][800,480],
inputFeatures=0x00000000, ownerPid=315, ownerUid=10022,
dispatchingTimeout=5000.000ms
MonitoringChannels: <none>
InboundQueue: <empty>
Connections:
0: channelName='411240b8 Keyguard (server)',
windowName='Window{411240b8 Keyguard paused=false}', status=NORMAL,
monitor=false, inputPublisherBlocked=false
OutboundQueue: <empty>
WaitQueue: <empty>
1: channelName='41266a38 RecentsPanel (server)',
windowName='Window{41266a38 RecentsPanel paused=false}', status=NORMAL,
monitor=false, inputPublisherBlocked=false
OutboundQueue: <empty>
WaitQueue: <empty>
2: channelName='41267b90 StatusBar (server)',
windowName='Window{41267b90 StatusBar paused=false}', status=NORMAL,
monitor=false, inputPublisherBlocked=false
OutboundQueue: <empty>
WaitQueue: <empty>
3: channelName='41287280 com.android.systemui.ImageWallpaper (server)',
windowName='Window{41287280 com.android.systemui.ImageWallpaper
paused=false}', status=NORMAL, monitor=false, inputPublisherBlocked=false
OutboundQueue: <empty>
WaitQueue: <empty>
4: channelName='41233ba0
com.android.launcher/com.android.launcher2.Launcher (server)',
windowName='Window{41233ba0
com.android.launcher/com.android.launcher2.Launcher paused=false}',
status=NORMAL, monitor=false, inputPublisherBlocked=false
OutboundQueue: <empty>
WaitQueue: <empty>
AppSwitch: not pending
Configuration:
KeyRepeatDelay: 50.0ms
KeyRepeatTimeout: 500.0ms
--
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting