Ubuntu Hardy 8.04 + GIMP + Wacom = Success!
- 4 Comment
Ubuntu Hardy 8.04 + GIMP + Wacom = Success! Well for the most part. The only things that are not working are the touchstrips. All the other express keys are configured and working properly. Every time I use the touchstrips I get this error: daiheim kernel: [ 174.494748] expresskeys[6243]: segfault at 0 rip 409133 rsp 7fff2b132fd0 error 4. I’m not sure what is causing this. In the expresskeys button configuration file, I am using keycodes 98 and 104 for the up and down arrow key movements respectively. I think some confusion between the mouse and touchstrip events is happening. I had a similar problem with one of the other expresskey buttons but this was simply fixed when I changed the keycode to represent another desired function. Not so with the touchstrip. I’m going to keep getting these touchstrips working as a task for myself. If you want to know how I got everything working, keep reading.
First off, Ubuntu Hardy 64bit supports the wacom out of the box. At least this is so in the version I’m using which is 8.04.1. Only the xorg.conf needs to be edited and expresskeys installed. You don’t need to install the new linuxwacom driver which is 8.0.0-3. I did only because I thought it might help me get my touchstrips working correctly, but it didn’t.
So to install the wacom on a Ubuntu Hardy 64bit system try these steps:
1. Edit the xorg.conf
sudo gedit /etc/X11/xorg.conf
Section "InputDevice" Driver "wacom" Identifier "stylus" Option "Device" "/dev/input/wacom" Option "Type" "stylus" Option "USB" "on" Option "PressCurve" "50,0,100,50" EndSection Section "InputDevice" Driver "wacom" Identifier "eraser" Option "Device" "/dev/input/wacom" Option "Type" "eraser" Option "USB" "on" EndSection Section "InputDevice" Driver "wacom" Identifier "cursor" Option "Device" "/dev/input/wacom" Option "Type" "cursor" Option "Mode" "relative" Option "USB" "on" EndSection Section "InputDevice" Driver "wacom" Identifier "pad" Option "Device" "/dev/input/wacom" Option "Type" "pad" Option "USB" "on" EndSection
Now find the ServerLayout Section and add the following lines
InputDevice "stylus" "SendCoreEvents" InputDevice "cursor" "SendCoreEvents" InputDevice "eraser" "SendCoreEvents" InputDevice "pad"
All xorg.conf files are different and are configured for specifically for your system and hardware but final
should resemble this:
# xorg.conf (X.Org X Window System server configuration file) # # This file was generated by dexconf, the Debian X Configuration tool, using # values from the debconf database. # # Edit this file with caution, and see the xorg.conf manual page. # (Type "man xorg.conf" at the shell prompt.) # # This file is automatically updated on xserver-xorg package upgrades *only* # if it has not been modified since the last upgrade of the xserver-xorg # package. # # If you have edited this file but would like it to be automatically updated # again, run the following command: # sudo dpkg-reconfigure -phigh xserver-xorg Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection Section "InputDevice" Driver "wacom" Identifier "stylus" Option "Device" "/dev/input/wacom"#USB ONLY Option "Type" "stylus" Option "USB" "on"#USB ONLY Option "PressCurve" "50,0,100,50" EndSection Section "InputDevice" Driver "wacom" Identifier "eraser" Option "Device" "/dev/input/wacom"#USB ONLY Option "Type" "eraser" Option "USB" "on"#USB ONLY EndSection Section "InputDevice" Driver "wacom" Identifier "cursor" Option "Device" "/dev/input/wacom"#USB ONLY Option "Type" "cursor" Option "Mode" "relative" Option "USB" "on"#USB ONLY EndSection Section "InputDevice" Driver "wacom" Identifier "pad" Option "Device" "/dev/input/wacom"#USB ONLY Option "Type" "pad" Option "USB" "on"#USB ONLY EndSection Section "InputDevice" Identifier "Configured Explorer" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mouse1" Option "Protocol" "ExplorerPS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" Option "Buttons" "7" EndSection Section "Device" Identifier "Configured Video Device" Driver "nvidia" Option "NoLogo" "True" EndSection Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" Defaultdepth 24 EndSection Section "ServerLayout" Identifier "Default Layout" screen "Default Screen" Inputdevice "stylus" "SendCoreEvents" Inputdevice "eraser" "SendCoreEvents" Inputdevice "cursor" "SendCoreEvents" Inputdevice "pad" InputDevice "Configured Explorer" "CorePointer" EndSection Section "Module" Load "glx" EndSection
2. Restart your computer
3. Open gimp. Now the tablet should work and the pen should be pressure sensitive. The only expresskey that will work is, ironically, the touchstrip. It is functioning basically like the scroll wheel on a mouse. So now you can close gimp.
4. Download the current version of the expresskeys here.
5. Now go to the expresskeys directory like this if you downloaded it to your desktop:
cd Desktop/expresskeys-0.4.2
6. Now most of the message boards agree that you have to edit the get_device.c file which is found in the src-expresskeys directory of the expresskeys-0.4.2 directory. You have to edit line 467:
if (xdevice_list[i].use == IsXExtensionDevice) {
if (xdevice_list[i].use == IsXExtensionDevice ||
xdevice_list[i].use == IsXExtensionPointer) {
7. Save the file. Then make and install.
./configure
make
sudo make install
8. Now you make get stuck in either the ./configure or make stages because you don’t have all the neccessary files and libraries installed. In these cases just go to the synaptic package manager and search and install whatever files are missing. After you have it installed reboot your system and type:
expresskeys -d
9. if you get the following error:
expresskeys ERROR: Tablet not attached, OR (in case of Cintiq 21UX, Intuos3 and Graphire4) the ‘pad’ device has not been specified in xorg.conf, OR is lacking on the command line when using “named devices”
Try going to the synaptic package manager and reinstalling the xserver-xorg-input-wacom package. Then restart your computer and typing in the above command should not generate any errors. Once it is installed properly, expresskeys should generate a hidden folder called .expresskeys. Inside this folder should be a expresskeys configuration file called intuos3.conf1. Using xev to get specific keycodes, you should be able to enter those keycodes for any expresskey you want to have that functionality.
For example, if you want the long expresskey on the left pad to make you gimp image screen go to full screen, that expresskey needs to have the keycode the F11 button on your keyboard. So using the command:
xev
I get the the following output when I press F11 on the keyboard:
KeyRelease event, serial 31, synthetic NO, window 0x3e00001,
root 0x1a6, subw 0x0, time 5511754, (99,59), root:(106,91),
state 0x10, keycode 95 (keysym 0xffc8, F11), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
This tells me that the keycode I need to set the long expresskey on the left pad(button 11 in expresskeys) is 95. Here is one of my particially configured files:
ConfigVersion 4 # *************** Please do not remove the above header! *************** # Blank lines and everything following a comment "#" sign are ignored. # This file will be re-created whenever missing, but the name and layout # depend on which devices that are detected at the very moment of program # execution. # Some ASCII art showing the "default" program record: # # Left ExpressKeys Pad # ------------ # | | | | Wacom Intuos3 defaults are: # | | 9 | T | # |11|---| O | Button 9 = (left) Shift = keycode 50 # | |10 | U | Button 10 = (left) Alt = keycode 64 # |------| C | Button 11 = (left) Control = keycode 37 # | 12 | H | Button 12 = Space = keycode 65 # ------------ # # Right ExpressKeys Pad # ------------ # | | | | Wacom Intuos3 defaults are: # | T |13 | | # | O |---|15| Button 13 = (left) Shift = keycode 50 # | U |14 | | Button 14 = (left) Alt = keycode 64 # | C |------| Button 15 = (left) Control = keycode 37 # | H | 16 | Button 16 = Space = keycode 65 # ------------ # Use the X program 'xev' to find keycodes when changing the key fields. # Use the X program 'xprop' to find the name string to use for each record. # A nice output can be obtained from: xprop | grep WM_CLASS | cut -d ',' -f2 # Read more about those two programs in the USAGE file. # * Fake keycode: 999 * # Use the value 999 as a keycode to enable stylus mode toggling between # Absolute/Relative. To be able to switch mode anywhere each program block # must then contain one 999 definition. # * Fake keycodes: 991, 992, 993, 994, 995, 996, 997 * # Use the values 991 to 997 for simulating mouse buttons 1 to 7. Only # existing mouse buttons, defined through the driver of the active core # pointer, can be simulated. # * Fake keycodes: 1004, 1005, 1006, 1007, 1008, 1009 * # Use the value 1004 to return from a tablet rotation (NONE), 1005 to flip a # tablet 180 degrees (HALF), 1006 to rotate 90 degrees clock-wise (CW) and # 1007 to rotate 90 degrees counter-clock-wise (CCW). By using 1008 you can # rotate the tablet endlessly in a clock-wise manner (CW-HALF-CCW-NONE-CW-) # and 1009 does the same motion counter-clock-wise (CCW-HALF-CW-NONE-CCW-). # Looking down on the tablet and tilting the head '90' degrees to the right # would simulate a CW operation. # * Fake keycodes: 1001, 1002, 1003 * # Instead of defining a fixed stylus PressCurve for different program # blocks, you can use three values as keycodes to alter the curve inter- # actively. 1001 will decrease the PressCurve, while 1003 will increase it. # 1002 restores the curve to its default state: "0 0 100 100". Both the # upward and downward curve changes flip over in a carousel fashion at the # top and bottom values. # Values for the stylus 'PressCurve' ie 'sensitivity' can be chosen the easy # way - copying from how the wacomcpl program writes them, or the hard way - # by experimenting.. The seven curves picked by wacomcpl are (Soft to Firm): # 1 2 3 4 (default) # "0 75 25 100" | "0 50 50 100" | "0 25 75 100" | "0 0 100 100" # 5 6 7 # "25 0 100 75" | "50 0 100 50" | "75 0 100 25" # OBSERVE: The "default" program record must exist SOMEWHERE in the file! # Each program record is separated by one set of double percentage signs: %% # Each program field begins after a case sensitive keyword, eg: ProgramName # Whitespace (tabs and spaces) are ignored in the keycode fields, but spaces # are recorded when in a ProgramName or StylusXPressCurve field (between the # double quotes). %% # <--- ******** BEGIN NEW PROGRAM RECORD ******** ProgramName "default" # Name must be within double quotes "" Stylus1PressCurve "0 0 100 100" # PressCurve must be within double quotes "" Stylus2PressCurve "0 0 100 100" # PressCurve must be within double quotes "" DelayEachKeycode 0.0 # Seconds (Max 10 - Min 0.01 - Or no delay) ButtonRepeatAfter 0.5 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayButtonRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) TouchRepeatAfter 0.6 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayTouchRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) HandleTouchStrips 1 # Switch 1/0 (Enable/Disable Touch Strips) LeftPadTouchUp 80 0 # Keycodes (Max number of keys to send is 32) LeftPadTouchDown 88 0 # Keycodes (Max number of keys to send is 32) RepeatLeftUp 1 # Switch 1/0 (Finger held at top repeat keys) RepeatLeftDown 1 # Switch 1/0 (Finger held at bottom repeat keys) RightPadTouchUp 98 # Keycodes (Max number of keys to send is 32) RightPadTouchDown 104 # Keycodes (Max number of keys to send is 32) RepeatRightUp 1 # Switch 1/0 (Finger held at top repeat keys) RepeatRightDown 1 # Switch 1/0 (Finger held at bottom repeat keys) LeftPadButton9 86 0 # Keycodes (Max number of keys to send is 32) LeftPadButton10 82 0 # Keycodes (Max number of keys to send is 32) LeftPadButton11 95 0 # Keycodes (Max number of keys to send is 32) LeftPadButton12 37 39 # Keycodes (Max number of keys to send is 32) RepeatButton9 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton10 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton11 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton12 0 # Switch 1/0 (Press and hold button repeat keys) RightPadButton13 50 0 # Keycodes (Max number of keys to send is 32) RightPadButton14 64 0 # Keycodes (Max number of keys to send is 32) RightPadButton15 37 0 # Keycodes (Max number of keys to send is 32) RightPadButton16 65 0 # Keycodes (Max number of keys to send is 32) RepeatButton13 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton14 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton15 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton16 0 # Switch 1/0 (Press and hold button repeat keys) %% # <--- ******** BEGIN NEW PROGRAM RECORD ******** ProgramName "Gimp" # Name must be within double quotes "" Stylus1PressCurve "0 0 100 100" # PressCurve must be within double quotes "" Stylus2PressCurve "0 0 100 100" # PressCurve must be within double quotes "" DelayEachKeycode 0.0 # Seconds (Max 10 - Min 0.01 - Or no delay) ButtonRepeatAfter 0.5 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayButtonRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) TouchRepeatAfter 0.6 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayTouchRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) HandleTouchStrips 1 # Switch 1/0 (Enable/Disable Touch Strips) LeftPadTouchUp 80 0 # Keycodes (Max number of keys to send is 32) LeftPadTouchDown 88 0 # Keycodes (Max number of keys to send is 32) RepeatLeftUp 0 # Switch 1/0 (Finger held at top repeat keys) RepeatLeftDown 0 # Switch 1/0 (Finger held at bottom repeat keys) RightPadTouchUp 98 0 # Keycodes (Max number of keys to send is 32) RightPadTouchDown 104 0 # Keycodes (Max number of keys to send is 32) RepeatRightUp 0 # Switch 1/0 (Finger held at top repeat keys) RepeatRightDown 0 # Switch 1/0 (Finger held at bottom repeat keys) LeftPadButton9 86 0 # Keycodes (Max number of keys to send is 32) LeftPadButton10 82 0 # Keycodes (Max number of keys to send is 32) LeftPadButton11 95 0 # Keycodes (Max number of keys to send is 32) LeftPadButton12 37 39 # Keycodes (Max number of keys to send is 32) RepeatButton9 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton10 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton11 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton12 0 # Switch 1/0 (Press and hold button repeat keys) RightPadButton13 37 29 # Keycodes (Max number of keys to send is 32) RightPadButton14 37 52 # Keycodes (Max number of keys to send is 32) RightPadButton15 999 0 # Keycodes (Max number of keys to send is 32) RightPadButton16 65 0 # Keycodes (Max number of keys to send is 32) RepeatButton13 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton14 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton15 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton16 0 # Switch 1/0 (Press and hold button repeat keys) %% # <--- ******** BEGIN NEW PROGRAM RECORD ******** ProgramName "Blender" # Name must be within double quotes "" Stylus1PressCurve "0 0 100 100" # PressCurve must be within double quotes "" Stylus2PressCurve "0 0 100 100" # PressCurve must be within double quotes "" DelayEachKeycode 0.0 # Seconds (Max 10 - Min 0.01 - Or no delay) ButtonRepeatAfter 0.5 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayButtonRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) TouchRepeatAfter 0.6 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayTouchRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) HandleTouchStrips 1 # Switch 1/0 (Enable/Disable Touch Strips) LeftPadTouchUp 102 0 # Keycodes (Max number of keys to send is 32) LeftPadTouchDown 100 0 # Keycodes (Max number of keys to send is 32) RepeatLeftUp 1 # Switch 1/0 (Finger held at top repeat keys) RepeatLeftDown 1 # Switch 1/0 (Finger held at bottom repeat keys) RightPadTouchUp 98 0 # Keycodes (Max number of keys to send is 32) RightPadTouchDown 104 0 # Keycodes (Max number of keys to send is 32) RepeatRightUp 1 # Switch 1/0 (Finger held at top repeat keys) RepeatRightDown 1 # Switch 1/0 (Finger held at bottom repeat keys) LeftPadButton9 37 0 # Keycodes (Max number of keys to send is 32) LeftPadButton10 9 0 # Keycodes (Max number of keys to send is 32) LeftPadButton11 50 0 # Keycodes (Max number of keys to send is 32) LeftPadButton12 23 0 # Keycodes (Max number of keys to send is 32) RepeatButton9 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton10 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton11 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton12 0 # Switch 1/0 (Press and hold button repeat keys) RightPadButton13 37 29 # Keycodes (Max number of keys to send is 32) RightPadButton14 37 52 # Keycodes (Max number of keys to send is 32) RightPadButton15 999 0 # Keycodes (Max number of keys to send is 32) RightPadButton16 65 0 # Keycodes (Max number of keys to send is 32) RepeatButton13 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton14 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton15 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton16 0 # Switch 1/0 (Press and hold button repeat keys) %% # <--- ******** BEGIN NEW PROGRAM RECORD ******** ProgramName "XTerm" # Name must be within double quotes "" Stylus1PressCurve "0 0 100 100" # PressCurve must be within double quotes "" Stylus2PressCurve "0 0 100 100" # PressCurve must be within double quotes "" DelayEachKeycode 0.0 # Seconds (Max 10 - Min 0.01 - Or no delay) ButtonRepeatAfter 0.5 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayButtonRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) TouchRepeatAfter 0.6 # Seconds (Max 10 - Min 0.01 - Or no delay) DelayTouchRepeat 0.1 # Seconds (Max 10 - Min 0.01 - Or no delay) HandleTouchStrips 0 # Switch 1/0 (Enable/Disable Touch Strips) LeftPadTouchUp 0 0 # Keycodes (Max number of keys to send is 32) LeftPadTouchDown 0 0 # Keycodes (Max number of keys to send is 32) RepeatLeftUp 0 # Switch 1/0 (Finger held at top repeat keys) RepeatLeftDown 0 # Switch 1/0 (Finger held at bottom repeat keys) RightPadTouchUp 0 0 # Keycodes (Max number of keys to send is 32) RightPadTouchDown 0 0 # Keycodes (Max number of keys to send is 32) RepeatRightUp 0 # Switch 1/0 (Finger held at top repeat keys) RepeatRightDown 0 # Switch 1/0 (Finger held at bottom repeat keys) LeftPadButton9 0 0 # Keycodes (Max number of keys to send is 32) LeftPadButton10 0 0 # Keycodes (Max number of keys to send is 32) LeftPadButton11 0 0 # Keycodes (Max number of keys to send is 32) LeftPadButton12 0 0 # Keycodes (Max number of keys to send is 32) RepeatButton9 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton10 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton11 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton12 0 # Switch 1/0 (Press and hold button repeat keys) RightPadButton13 0 0 # Keycodes (Max number of keys to send is 32) RightPadButton14 0 0 # Keycodes (Max number of keys to send is 32) RightPadButton15 999 0 # Keycodes (Max number of keys to send is 32) RightPadButton16 0 0 # Keycodes (Max number of keys to send is 32) RepeatButton13 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton14 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton15 0 # Switch 1/0 (Press and hold button repeat keys) RepeatButton16 0 # Switch 1/0 (Press and hold button repeat keys)
After you change and save your expresskeys files. Run the following to restart expresskeys:
expresskeys -k expresskeys -d
Well this is what I have done to get my wacom setup so far. Like I said, I will keep troubleshooting until I find out what is causing my touchstrips to segfault. If your you wacom doesn’t work out the box or you are having trouble with expresskeys try out some of the sites below:
Ubuntu Forums ExpressKeys Thread
UPDATE: The wacom intuos3 tablet is now completely functioning on my system. The expresskeys program no longer segfaults on my system. Read this post to see how I got expresskeys functioning fully on my box.
*Tip - I stated that the wacom was basically ready to work out of the box on Hardy 8.04 machines. While this is true, to get expresskeys up and functioning properly, you will probably need to install wacom-tools. This package can be installed via the synaptics package manager.
KJ
Related Articles
4 Comments on this post
Trackbacks
-
Danielsan said:
Hi,
i have installed the Expresskey driver following your instructions.
I have not problem with installation but the the expresskey and touch doesn’t work correctly.
For example the touchstrips scroll internet pages but not zooming the canvas area on GIMP.
These situation depend to wacom-tools or expresskey driver?December 8th, 2008 at 5:24 pm -
kj said:
Thanks for commenting. After the expresskeys program is up and running, you have to configure the buttons to functions as you wish you must modify the the expresskeys configuration file found in the .expresskeys directory located in your home folder. In that file you basically have to associate the wacom buttons with key codes. The key codes. The key codes are dependent on your keyboard type and layout so they may differ from my setup. Using the xev program should help with getting the key codes.
Hope This Helps,
Kim
December 9th, 2008 at 10:28 am -
Danielsan said:
thank you for your support (sorry for my bad english).
I have controlled with XEV and i have discovered that also for me F11 corrisponds to Key 95.
Then i have substitute the code in this mode on Gimp segment:LeftPadButton9 95 0
LeftPadButton10 95 0
LeftPadButton11 95 0
LeftPadButton12 95 0Also i have stopped and restarting the expresskey deamon.
Unfortunately the left pad doesn’t work and GIMP don’t goes in fullscreen mode.
Have you an idea?Daniele
December 9th, 2008 at 11:48 am


[...] while back I did a post on getting the wacom intuos3 tablet working with gimp on a 64 bit ubuntu hardy machine. While I [...]