2010. május 31.

Sorting out input devices

The general problem is:
The cursor jumps around and clicks on things. As described here.
This post is dedicated to cornering and trying to solve the problem.
EDIT: as it turned out it was a hardware problem.



~$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)]
⎜ ↳ Serial Wacom Tablet eraser id=11 [slave pointer (2)]
⎜ ↳ Serial Wacom Tablet id=12 [slave pointer (2)]
⎜ ↳ Macintosh mouse button emulation id=13 [slave pointer (2)]
⎜ ↳ PS/2 Generic Mouse id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]

1st try: I've got the idea from a forum saying that there's a wrong mouse or 2 mouse installed.
so I
- removed xserver-xorg-input-all, xserver-xorg-input-mouse, xserver-xorg-input-vmmouse
- rebooted
- experienced no cursor jumping so far. we'll see how it comes up in the future.
No, 1st try didn't help.

2nd try: I made a new xinput master like this, and attached the touchpad to it. Now I have 2 cursors on the screen.
- the cursor for the original master is jumping, the new one is not.
- I reattached a keyboard too (id=9), but after a minute it stopped working, and I ended up with no keyboard. My luck was thet the changes were not permanent.
- I reattached the mouse again, and the old one is still jumping, but the new one is not.
This starts to be interesting :-)
- the second cursor doesn't catch my clicks these times: I want to click on a button twice. First I have to move away from the button, and then I can click it again, but otherwise not.

3rd try. I reattach the pen to the second master pointer.
- it's the PEN that's jumping.
I reattach first the pen, then the eraser only to the second pointer
- it's the ERASER that's jumping!!
I'm one step forward!

This is my eraser:
~$ xinput list-props 12
Device 'Serial Wacom Tablet eraser':
Device Enabled (154): 1
Device Accel Profile (273): 0
Device Accel Constant Deceleration (274): 1.000000
Device Accel Adaptive Deceleration (276): 1.000000
Device Accel Velocity Scaling (277): 10.000000
Wacom Tablet Area (339): 0, 0, 24780, 18630
Wacom Rotation (340): 0
Wacom Pressurecurve (341): 0, 0, 100, 100
Wacom Serial IDs (342): 144, 0, 10, 0
Wacom TwinView Resolution (343): 0, 0, 0, 0
Wacom Display Options (344): -1, 0, 1
Wacom Screen Area (345): 0, 0, 1024, 768
Wacom Proximity Threshold (346): 0
Wacom Capacity (347): -1
Wacom Pressure Threshold (348): 7
Wacom Sample and Suppress (349): 2, 4
Wacom Enable Touch (350): 0
Wacom Hover Click (351): 0
Wacom Tool Type (352): "ERASER" (332)
Wacom Button Actions (353): "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0), "None" (0)

4th try: disable eraser.
~$ xinput set-prop "Serial Wacom Tablet eraser" "Device Enabled" 0
- disables whole pen.

Setting the eraser to another master pointer slowly becomes a routine, so here it goes:
~$ xinput create-master Second
~$ sleep 1&&xinput reattach "Serial Wacom Tablet eraser" "Second pointer"


~$ xsetwacom --list
Serial Wacom Tablet eraser ERASER
Serial Wacom Tablet STYLUS

~$ xsetwacom --list param
~$ xsetwacom --get "Serial Wacom Tablet eraser" all

TopX 0 Bounding rect left coordinate in tablet units.
TopY 0 Bounding rect top coordinate in tablet units .
BottomX 24780 Bounding rect right coordinate in tablet units.
BottomY 18630 Bounding rect bottom coordinate in tablet units.
Button1 1 X11 event to which button 1 should be mapped.
Button2 2 X11 event to which button 2 should be mapped.
Button3 3 X11 event to which button 3 should be mapped.
Button4 4 X11 event to which button 4 should be mapped.
Button5 5 X11 event to which button 5 should be mapped.
Button6 6 X11 event to which button 6 should be mapped.
Button7 7 X11 event to which button 7 should be mapped.
Button8 8 X11 event to which button 8 should be mapped.
Button9 9 X11 event to which button 9 should be mapped.
Button10 10 X11 event to which button 10 should be mapped.
Button11 11 X11 event to which button 11 should be mapped.
Button12 12 X11 event to which button 12 should be mapped.
Button13 13 X11 event to which button 13 should be mapped.
Button14 14 X11 event to which button 14 should be mapped.
Button15 15 X11 event to which button 15 should be mapped.
Button16 16 X11 event to which button 16 should be mapped.
Button17 17 X11 event to which button 17 should be mapped.
Button18 18 X11 event to which button 18 should be mapped.
Button19 19 X11 event to which button 19 should be mapped.
Button20 20 X11 event to which button 20 should be mapped.
Button21 21 X11 event to which button 21 should be mapped.
Button22 22 X11 event to which button 22 should be mapped.
Button23 23 X11 event to which button 23 should be mapped.
Button24 24 X11 event to which button 24 should be mapped.
Button25 25 X11 event to which button 25 should be mapped.
Button26 26 X11 event to which button 26 should be mapped.
Button27 27 X11 event to which button 27 should be mapped.
Button28 28 X11 event to which button 28 should be mapped.
Button29 29 X11 event to which button 29 should be mapped.
Button30 30 X11 event to which button 30 should be mapped.
Button31 31 X11 event to which button 31 should be mapped.
Button32 32 X11 event to which button 32 should be mapped.
DebugLevel Property for 'DebugLevel' not available. Level of debugging trace for individual devices, default is 0 (off).
CommonDBG Property for 'CommonDBG' not available. Level of debugging statements applied to all devices associated with the same tablet. default is 0 (off).
Suppress 4 Number of points trimmed, default is 2.
RawSample 2 Number of raw data used to filter the points, default is 4.
Screen_No 255 Sets/gets screen number the tablet is mapped to, default is - 1.
PressCurve 0 0 100 100 Bezier curve for pressure (default is 0 0 100 100).
TwinView none Sets the mapping to TwinView horizontal/vertical/none. Values = none, vertical, horizontal (default is none).
Mode Absolute Switches cursor movement mode (default is absolute/on).
TPCButton off Turns on/off Tablet PC buttons. default is off for regular tablets, on for Tablet PC.
Touch off Turns on/off Touch events (default is enable/on).
Capacity -1 Touch sensitivity level (default is 3,
CursorProx 0 Sets cursor distance for proximity
Rotate NONE Sets the rotation of the tablet. Values = NONE, CW, CCW, HALF (default is NONE).
RelWUp Property for 'RelWUp' not available. X11 event to which relative wheel up should be mapped.
RelWDn Property for 'RelWDn' not available. X11 event to which relative wheel down should be mapped.
AbsWUp Property for 'AbsWUp' not available. X11 event to which absolute wheel up should be mapped.
AbsWDn Property for 'AbsWDn' not available. X11 event to which absolute wheel down should be mapped.
StripLUp Property for 'StripLUp' not available. X11 event to which left strip up should be mapped.
StripLDn Property for 'StripLDn' not available. X11 event to which left strip down should be mapped.
StripRUp Property for 'StripRUp' not available. X11 event to which right strip up should be mapped.
StripRDn Property for 'StripRDn' not available. X11 event to which right strip down should be mapped.
TVResolution0 0 Sets MetaModes option for TwinView Screen 0.
TVResolution1 0 Sets MetaModes option for TwinView Screen 1.
RawFilter on Enables and disables filtering of raw data, default is true/on.
ClickForce 7 Sets tip/eraser pressure threshold = ClickForce*MaxZ/100 (default is 6)
xyDefault 0 Resets the bounding coordinates to default in tablet units.
mmonitor 1 Turns on/off across monitor movement in multi
STopX0 0 Screen 0 left coordinate in pixels.
STopY0 0 Screen 0 top coordinate in pixels.
SBottomX0 1024 Screen 0 right coordinate in pixels.
SBottomY0 768 Screen 0 bottom coordinate in pixels.
STopX1 Property offset doesn't exist. Screen 1 left coordinate in pixels.
STopY1 Property offset doesn't exist. Screen 1 top coordinate in pixels.
SBottomX1 Property offset doesn't exist. Screen 1 right coordinate in pixels.
SBottomY1 Property offset doesn't exist. Screen 1 bottom coordinate in pixels.
STopX2 Property offset doesn't exist. Screen 2 left coordinate in pixels.
STopY2 Property offset doesn't exist. Screen 2 top coordinate in pixels.
SBottomX2 Property offset doesn't exist. Screen 2 right coordinate in pixels.
SBottomY2 Property offset doesn't exist. Screen 2 bottom coordinate in pixels.
STopX3 Property offset doesn't exist. Screen 3 left coordinate in pixels.
STopY3 Property offset doesn't exist. Screen 3 top coordinate in pixels.
SBottomX3 Property offset doesn't exist. Screen 3 right coordinate in pixels.
SBottomY3 Property offset doesn't exist. Screen 3 bottom coordinate in pixels.
STopX4 Property offset doesn't exist. Screen 4 left coordinate in pixels.
STopY4 Property offset doesn't exist. Screen 4 top coordinate in pixels.
SBottomX4 Property offset doesn't exist. Screen 4 right coordinate in pixels.
SBottomY4 Property offset doesn't exist. Screen 4 bottom coordinate in pixels.
STopX5 Property offset doesn't exist. Screen 5 left coordinate in pixels.
STopY5 Property offset doesn't exist. Screen 5 top coordinate in pixels.
SBottomX5 Property offset doesn't exist. Screen 5 right coordinate in pixels.
SBottomY5 Property offset doesn't exist. Screen 5 bottom coordinate in pixels.
STopX6 Property offset doesn't exist. Screen 6 left coordinate in pixels.
STopY6 Property offset doesn't exist. Screen 6 top coordinate in pixels.
SBottomX6 Property offset doesn't exist. Screen 6 right coordinate in pixels.
SBottomY6 Property offset doesn't exist. Screen 6 bottom coordinate in pixels.
STopX7 Property offset doesn't exist. Screen 7 left coordinate in pixels.
STopY7 Property offset doesn't exist. Screen 7 top coordinate in pixels.
SBottomX7 Property offset doesn't exist. Screen 7 right coordinate in pixels.
SBottomY7 Property offset doesn't exist. Screen 7 bottom coordinate in pixels.
ToolID 318 Returns the ID of the associated device.
ToolSerial 0 Returns the serial number of the associated device.
TabletID 144 Returns the tablet ID of the associated device.
GetTabletID 144 Returns the tablet ID of the associated device.
NumScreen Not implemented. Returns number of screens configured for the desktop. [not implemented]
XScaling Not implemented. Returns the status of XSCALING is set or not. [not implemented]



~$ sudo gedit /usr/lib/X11/xorg.conf.d/10-wacom.conf
Section "InputClass"
Identifier "Wacom class"
MatchProduct "Wacom|WACOM"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection

Section "InputClass"
Identifier "Wacom serial class"
MatchProduct "Serial Wacom Tablet"
Driver "wacom"
Option "ForceDevice" "ISDV4"
Option "Button2" "3"
Option "Button3" "4"
Option "TPCButton" "on"
EndSection

# N-Trig Duosense Electromagnetic Digitizer
Section "InputClass"
Identifier "Wacom N-Trig class"
MatchProduct "HID 1b96:0001"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection


~$ sudo gedit /lib/udev/rules.d/69-xserver-xorg-input-wacom.rules
# udev rules for wacom tablets.
# These rules were compiled for the Debian GNU/Linux distribution,
# but others may, and indeed are encouraged to, use them also.
#
# Should you do so, PLEASE CO-ORDINATE ANY CHANGES OR ADDITIONS
# of new devices with Ron so that we can try
# to present users with a standard set of device nodes which
# they can rely on across the board.

ACTION=="add|change", SUBSYSTEM=="pnp", ATTR{id}=="WACf*", ENV{NAME}="Serial Wacom Tablet"
ACTION=="add|change", SUBSYSTEM=="pnp", ATTR{id}=="FUJ*", ENV{NAME}="Serial Wacom Tablet"
ACTION=="add|change", SUBSYSTEMS=="pnp", ATTRS{id}=="WACf*", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
ACTION=="add|change", SUBSYSTEMS=="pnp", ATTRS{id}=="FUJ*", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"

KERNEL!="event[0-9]*", GOTO="wacom_end"

# Port specific link for users of multiple tablets of the same type.
# The ID_PATH variable is set by the "path_id" script in an earlier rule file.
#ATTRS{idVendor}=="056a", ENV{ID_PATH}=="?*", SYMLINK="input/by-path/$env{ID_PATH}-wacom"

# Multiple interface support for stylus and touch devices.
#DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus"
#DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch"

# Type-named links for multiple tablets. If you want to use multiple
# tablets of the _same_ type, you will probably need to use the links
# from /dev/input/by-path to identify which is plugged into what usb
# port. For different tablet types though, just pick your links from
# the list below.
#
# We override SYMLINK for tabletpc devices because the by-path link
# is not required with such devices, there will only ever be one.
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0000", SYMLINK+="input/tablet-penpartner"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0003", SYMLINK+="input/tablet-cintiq_partner"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0010", SYMLINK+="input/tablet-graphire"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0011", SYMLINK+="input/tablet-graphire2-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0012", SYMLINK+="input/tablet-graphire2-5x7"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0013", SYMLINK+="input/tablet-graphire3"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0014", SYMLINK+="input/tablet-graphire3-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0015", SYMLINK+="input/tablet-graphire4-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0016", SYMLINK+="input/tablet-graphire4-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0017", SYMLINK+="input/tablet-bamboofun-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0018", SYMLINK+="input/tablet-bamboofun-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0019", SYMLINK+="input/tablet-bamboo1-medium"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0020", SYMLINK+="input/tablet-intuos-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0021", SYMLINK+="input/tablet-intuos-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0022", SYMLINK+="input/tablet-intuos-9x12"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0023", SYMLINK+="input/tablet-intuos-12x12"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0024", SYMLINK+="input/tablet-intuos-12x18"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0030", SYMLINK+="input/tablet-pl400"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0031", SYMLINK+="input/tablet-pl500"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0032", SYMLINK+="input/tablet-pl600"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0033", SYMLINK+="input/tablet-pl600sx"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0034", SYMLINK+="input/tablet-pl550"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0035", SYMLINK+="input/tablet-pl800"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0037", SYMLINK+="input/tablet-pl700"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0038", SYMLINK+="input/tablet-pl510"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0039", SYMLINK+="input/tablet-dtu710"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="003f", SYMLINK+="input/tablet-cintiq21ux"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0041", SYMLINK+="input/tablet-intuos2-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0042", SYMLINK+="input/tablet-intuos2-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0043", SYMLINK+="input/tablet-intuos2-9x12"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0044", SYMLINK+="input/tablet-intuos2-12x12"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0045", SYMLINK+="input/tablet-intuos2-12x18"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0047", SYMLINK+="input/tablet-intuos2-6x8a"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0060", SYMLINK+="input/tablet-volito"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0061", SYMLINK+="input/tablet-penstation2"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0062", SYMLINK+="input/tablet-volito2-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0063", SYMLINK+="input/tablet-volito2-2x3"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0064", SYMLINK+="input/tablet-penpartner2"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0065", SYMLINK+="input/tablet-bamboo"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0069", SYMLINK+="input/tablet-bamboo1"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0081", SYMLINK+="input/tablet-graphire_bt-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0090", SYMLINK="input/tablet-tpc90"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0093", SYMLINK="input/tablet-tpc93-$env{WACOM_TYPE}"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="009a", SYMLINK="input/tablet-tpc9a-$env{WACOM_TYPE}"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b0", SYMLINK+="input/tablet-intuos3-4x5"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b1", SYMLINK+="input/tablet-intuos3-6x8"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b2", SYMLINK+="input/tablet-intuos3-9x12"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b3", SYMLINK+="input/tablet-intuos3-12x12"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b4", SYMLINK+="input/tablet-intuos3-12x19"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b5", SYMLINK+="input/tablet-intuos3-6x11"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b7", SYMLINK+="input/tablet-intuos3-4x6"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b8", SYMLINK+="input/tablet-intuos4-4x6"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b9", SYMLINK+="input/tablet-intuos4-6x9"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00ba", SYMLINK+="input/tablet-intuos4-8x13"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00bb", SYMLINK+="input/tablet-intuos4-12x19"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c0", SYMLINK+="input/tablet-dtf521"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c4", SYMLINK+="input/tablet-dtf720"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c5", SYMLINK+="input/tablet-cintiq20wsx"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c6", SYMLINK+="input/tablet-cintiq12wx"
#ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c7", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/tablet-dtu1931"

# Convenience links for the common case of a single tablet. We could do just this:
#ATTRS{idVendor}=="056a", SYMLINK+="input/wacom-$env{WACOM_TYPE}"
# but for legacy reasons, we keep the input/wacom link as the generic stylus device.
#ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom"
#ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch"

# Check and repossess the device if a module other than the wacom one
# is already bound to it.
#
# We probably don't need this one in the Real World anymore ...
# See the old wacom-tools package if we actually do need to resurrect the
# check_driver script for this again.
#ATTRS{idVendor}=="056a", ACTION=="add", RUN+="check_driver wacom $devpath $env{ID_BUS}"

LABEL="wacom_end"



~$ xsetwacom --list --verbose
... Display is '(null)'.
... 'list' requested.
... Found device 'Virtual core XTEST pointer' (4).
... Found device 'Virtual core XTEST keyboard' (5).
... Found device 'Power Button' (6).
... Found device 'Video Bus' (7).
... Found device 'Sleep Button' (8).
... Found device 'AT Translated Set 2 keyboard' (9).
... Found device 'SynPS/2 Synaptics TouchPad' (10).
... Found device 'Serial Wacom Tablet eraser' (11).
Serial Wacom Tablet eraser ERASER
... Found device 'Serial Wacom Tablet' (12).
Serial Wacom Tablet STYLUS
... Found device 'Macintosh mouse button emulation' (13).
... Found device 'PS/2 Generic Mouse' (14).

Nincsenek megjegyzések: