|
From: Andrew Z. <an...@ma...> - 2006-04-24 23:14:56
|
Hello! I made a number of modifications to the X11 driver, and would like to enlist a number of volunteers in the testing process. Here's a short list of enhancements (in no particular order): * Support for X.org 7.0 new directory structure in configure (SDK in /usr/include/xorg). * Support for up to 32 pad buttons (in particular, support for 17 virtual buttons on Wacom Graphire Bluetooth - 5 along the left edge of active area, 5 along the right, 7 along the top, use xidump to find out the boundaries of these "pads", then you can print a sheet of paper with these painted areas and put it under the transparent cover -- also there is a comment in the wacom bt driver which can help you find out those areas algorithmically). Also I have modified wacdump in order to display events from those extra buttons. * Separate settings for all four types of subdevices (stylus/eraser/ cursor/pad). For example, stylus, eraser and cursor have 5 buttons while pad has 19. Stylus, eraser and cursor have six axes while pad has two, etc. * Besides the WacomConfigSetRawParam function I've added the WacomConfigGetRawParam function which allows to retrieve current values from the driver. I've completely changed the API, although it uses same workaround to communicate with the driver. I hope backward compatibility is not a big issue as long as all programs from one package work together correctly. * Fixed the bug with tablet mouse on Graphire tablet series: the distance between mouse and tablet at which the mouse "decouples" from tablet was fixed at constant 112, while max range is 32 for these tablets. Now it's given as 128/256 units of max_range and has a hysteresis of 16/256 (to avoid proxy-in/proxy-out jitter). This value can be queried/changed with xsetwacom. * Fixed a bug that causes X11 lockup (at least for me) if the device suddenly disappears (for example, you pull out the USB tablet from the USB socket). * Added the ability to map any button or key event to any tablet button. The syntax is displayed by 'xsetwacom list param'; it's the same as the syntax I have proposed on this list a bit earlier, e.g: 'xsetwacom set Pad Button1 "CORE KEY CTRL ALT BackSpace"' and so on. * Added the 'get' option to xsetwacom, you can query now all the parameters that makes sense for a particular subdevice, e.g. Button19 has no sense for a cursor device (since mouse has only 5 buttons). You also can use 'xsetwacom get <subdevice> all' to get all the parameters that makes sense. Also I have adde the ability to display parameters in so-called 'shell' format, and in the so-called 'x11' format. Here's a example: [3|zap@zap|~]xsetwacom get Stylus all # normal format Stylus TopX = 0 Stylus TopY = 0 Stylus BottomX = 16704 Stylus BottomY = 12064 Stylus Button1 = BUTTON 1 Stylus Button2 = BUTTON 2 Stylus Button3 = BUTTON 3 Stylus Button4 = BUTTON 4 Stylus Button5 = BUTTON 5 Stylus DebugLevel = 12 Stylus PressCurve = 0 0 0 0 Stylus RawFilter = on Stylus Mode = on Stylus SpeedLevel = 6 Stylus ClickForce = 5 Stylus Accel = 1 Stylus Gimp = on Stylus MMonitor = on Stylus TPCButton = off [3|zap@zap|~]xsetwacom -s get Stylus all # shell format xsetwacom set Stylus TopX "0" xsetwacom set Stylus TopY "0" xsetwacom set Stylus BottomX "16704" xsetwacom set Stylus BottomY "12064" xsetwacom set Stylus Button1 "BUTTON 1" xsetwacom set Stylus Button2 "BUTTON 2" xsetwacom set Stylus Button3 "BUTTON 3" xsetwacom set Stylus Button4 "BUTTON 4" xsetwacom set Stylus Button5 "BUTTON 5" xsetwacom set Stylus DebugLevel "12" xsetwacom set Stylus PressCurve "0 0 0 0" xsetwacom set Stylus RawFilter "on" xsetwacom set Stylus Mode "on" xsetwacom set Stylus SpeedLevel "6" xsetwacom set Stylus ClickForce "5" xsetwacom set Stylus Accel "1" xsetwacom set Stylus Gimp "on" xsetwacom set Stylus MMonitor "on" xsetwacom set Stylus TPCButton "off" [3|zap@zap|~]xsetwacom -x get Stylus all # x11 format Option "TopX" "0" Option "TopY" "0" Option "BottomX" "16704" Option "BottomY" "12064" Option "Button1" "BUTTON 1" Option "Button2" "BUTTON 2" Option "Button3" "BUTTON 3" Option "Button4" "BUTTON 4" Option "Button5" "BUTTON 5" Option "DebugLevel" "12" Option "PressCurve" "0,0,0,0" Option "RawFilter" "on" Option "Mode" "on" Option "SpeedLevel" "6" Option "ClickForce" "5" Option "Accel" "1" Option "Gimp" "on" Option "MMonitor" "on" Option "TPCButton" "off" * Added the ability to reconnect to the device even if it gets disconnected. For example, my Bluetooth tablet has the habbit to auto-poweroff after some inactivity timeout so that accumulators are preserved; I was forced to restart X11 which was a pain (or to use a separate almost-empty X11 session for working with tablet which wouldn't be so painfull to restart). Now you just have to re-enable the device, switch to some console and back, and voila - the device is working again. Alas, full PnP functionality is not possible with current X11 architecture, but developers are doing it right now, so there is hope. I'll release the driver for now (for testing purposes) as a whole archive: http://cs.ozerki.net/zap/linuxwacom-0.7.2-zap.tar.bz2 I hope to get feedback and fix everything that deserves to be fixed, then submit it as a patch to the tracker. I'm especially interested if I didn't broke serial tablets, as I don't own one (Bluetooth tablets from driver's point of view is same as USB tablets, so I think USB tablets should work fine). Build instructions: 1. untar 2. ./bootstrap (you will need autoconf/automake) 3. CFLAGS=-O2 ./configure 4. make install-strip I recommend to mark all devices as "SendCoreEvents" (in the ServerLayout section), e.g: InputDevice "Stylus" "SendCoreEvents" InputDevice "Eraser" "SendCoreEvents" InputDevice "Cursor" "SendCoreEvents" InputDevice "Pad" "SendCoreEvents" -- Greetings, Andrew |