Linux Problems:Wacom Pen Buttons

(Difference between revisions)
Jump to: navigation, search
Line 24: Line 24:
 
ls ../xorg-6.8.2/xc/extras/rman/ && cp * ../xorg-6.8.2/xc/extras/rman/
 
ls ../xorg-6.8.2/xc/extras/rman/ && cp * ../xorg-6.8.2/xc/extras/rman/
 
</pre>
 
</pre>
<li>Setup fontconfig:
+
<li>Setup fontconfig:<br>
 +
Unfortunately, Ubuntu X.Org requires some fontconfig files that are missing - I was unable to obtain these files from installing any of the fontconfig packages from apt so I was forced to go out and get them myself.
 
<ul>
 
<ul>
 
<li>Setup with your system's info and some crutial directories:
 
<li>Setup with your system's info and some crutial directories:
Line 46: Line 47:
 
<li>Download updated font config list<br>
 
<li>Download updated font config list<br>
 
You need all of the files that belong in xc/programs/fc-list/ '''and''' xc/extras/fontconfig/fc-list/, you can download them from freedesktop.org:
 
You need all of the files that belong in xc/programs/fc-list/ '''and''' xc/extras/fontconfig/fc-list/, you can download them from freedesktop.org:
http://cvs.freedesktop.org/xorg/xc/extras/fontconfig/fc-list/.  You should also download fc-list.am from http://cvs.freedesktop.org/xorg/xc/programs/fc-list/ and place it in both directories.
+
http://cvs.freedesktop.org/xorg/xc/extras/fontconfig/fc-list/.  You should also download fc-list.man from http://cvs.freedesktop.org/xorg/xc/programs/fc-list/ and place it in both directories.
 +
<li>Fix a syntax error in fcfreetype.c<br>
 +
X.Org compiles without support for "//" style comments embedded in normal code (header files it doesn't care), in the file xorg-6.8.2/xc/lib/fontconfig/fcfreetype.c you should correct the syntax error on line 2780:
 +
<pre>
 +
    // sort the tag list before returning it
 +
</pre>
 +
should become
 +
<pre>
 +
    /* sort the tag list before returning it */
 +
</pre>
 
</ul>
 
</ul>
 +
<li>X.Org includes a deprecated Linux header file (/usr/include/linux/config.h) that is no-longer needed, the easiest thing to do to fix this problem is to comment out the first two lines of the file (by adding //).
 
</ol>
 
</ol>
 +
'''NOTE: I am actively working on this, these instructions are incomplete'''<br>
 +
<br>
 +
Once these configuration steps are complete you should run "make World" from the folder xorg-6.8.2/xc/
  
'''NOTE: I am actively working on this, these instructions are incomplete'''
+
===Modifying the Wacom Pen Driver===
 +
Once you have compiled X.Org for your current configuration you can make changes to the Wacom Pen Driver and recompile '''only that driver''' by typing "make" in its directory.  The driver is located in the folder xorg-6.8.2/xc/programs/Xserver/hw/xfree86/input/wacom/, the file we are most interested in is "xf86Wacom.c" and the function "isdv4Parse".
  
Once these configuration steps are complete you should run "make World" from the folder xorg-6.8.2/xc/
+
====Pen Button Command Structure====
 +
The Wacom Pen Driver uses 18 byte packets that give it all the information it needs for performing a given operation, for the "Button" operations a good example packet is when you click the left-most button (keyboard on the tc4200):
 +
<pre>
 +
C1 01 00 00 00 00 00 00 00
 +
</pre>
 +
This packet indicates that it is of the type "C1" (button press) and that button "1" was clicked. Known button values are "01" for the keyboard, "02" for rotate, and "04" for the Compaq button.
 +
 
 +
====Code Changes====
 +
 
 +
====User-Space Handling====

Revision as of 23:07, 28 October 2005

Contents

Kernel Approach

The kernel approach to using the Wacom "Pen Buttons" would be to integrate the commands generated by clicking the buttons into "proc" devices. This integration would allow a script to monitor each button and perform an operation when when of the buttons is pressed, while this solution is better in the long run I do not have sufficient experience to implement it quickly (Hoover). Until this solution can be implemented the X.Org driver should do, and over-riding the driver from the kernel level (ie: not passing on the button presses to the serial device) will effecitvely prevent conflicts from double implementation in the future.

X.Org Approach

Since ther kernel provides a serial interface to the Wacom Pen Buttons, X.Org receives all of the serial information available to the kernel. Since I have experience with X.Org input drivers I will be using this information to generate X11 events when a button is pressed, this means that a script must be running (or a hotkey configured) to capture the X11 event and perform an operation.

Compiling Ubuntu X.Org

  1. Why? Unfortunately, in order to compile an X.Org driver (input or otherwise) you need a complete copy of the X.Org sources that you have compiled in place at least once. If you update your version of X.Org you will need to compile against the new sources, if you know a better way to do this then I'm all ears.
  2. Compiling Xorg requires (that I didn't have):
    • bison
    • lots of time
  3. Download Xorg Sources:
    apt-get source xorg
    
  4. I copied the Linux config file to the appropriate location (this may not be necessary):
    cp ./xc/config/cf/linux.cf ./xc/config/cf/host.cf
    
  5. The version I was compiling from Ubuntu requried me to download some files for "rman" (http://cvs.freedesktop.org/xorg/xc/extras/rman/) and copy them to the appropriate folder:
    ls ../xorg-6.8.2/xc/extras/rman/ && cp * ../xorg-6.8.2/xc/extras/rman/
    
  6. Setup fontconfig:
    Unfortunately, Ubuntu X.Org requires some fontconfig files that are missing - I was unable to obtain these files from installing any of the fontconfig packages from apt so I was forced to go out and get them myself.
    • Setup with your system's info and some crutial directories:
      mkdir xorg-6.8.2/xc/extras/fontconfig/
      mkdir xorg-6.8.2/xc/extras/fontconfig/src/
      mkdir xorg-6.8.2/xc/extras/fontconfig/fc-cache/
      mkdir xorg-6.8.2/xc/extras/fontconfig/fc-list/
      cp -R /usr/include/fontconfig/ xorg-6.8.2/xc/extras/fontconfig/
      

      (yes, you want it to be fontconfig/fontconfig/)

    • Download updated font config
      You need the information for fontconfig, so place the files fontconfig.pc.in, fonts.conf.in, and fonts.dtd in the same folder you just copied your local config to (xc/extras/fontconfig/). You can get these files here: http://cvs.freedesktop.org/xorg/xc/extras/fontconfig/
    • Download updated font config sources
      You need all of the files that belong in xc/extras/src/, you can download them from freedesktop.org: http://cvs.freedesktop.org/xorg/xc/extras/fontconfig/src/
    • Download updated font config cache
      You need all of the files that belong in xc/programs/fc-cache/ and xc/extras/fontconfig/fc-cache/, you can download them from freedesktop.org: http://cvs.freedesktop.org/xorg/xc/extras/fontconfig/fc-cache/. You should also download fc-cache.man from http://cvs.freedesktop.org/xorg/xc/programs/fc-cache/ and place that file in both directories.
    • Download updated font config list
      You need all of the files that belong in xc/programs/fc-list/ and xc/extras/fontconfig/fc-list/, you can download them from freedesktop.org: http://cvs.freedesktop.org/xorg/xc/extras/fontconfig/fc-list/. You should also download fc-list.man from http://cvs.freedesktop.org/xorg/xc/programs/fc-list/ and place it in both directories.
    • Fix a syntax error in fcfreetype.c
      X.Org compiles without support for "//" style comments embedded in normal code (header files it doesn't care), in the file xorg-6.8.2/xc/lib/fontconfig/fcfreetype.c you should correct the syntax error on line 2780:
           // sort the tag list before returning it
      

      should become

           /* sort the tag list before returning it */
      
  7. X.Org includes a deprecated Linux header file (/usr/include/linux/config.h) that is no-longer needed, the easiest thing to do to fix this problem is to comment out the first two lines of the file (by adding //).

NOTE: I am actively working on this, these instructions are incomplete

Once these configuration steps are complete you should run "make World" from the folder xorg-6.8.2/xc/

Modifying the Wacom Pen Driver

Once you have compiled X.Org for your current configuration you can make changes to the Wacom Pen Driver and recompile only that driver by typing "make" in its directory. The driver is located in the folder xorg-6.8.2/xc/programs/Xserver/hw/xfree86/input/wacom/, the file we are most interested in is "xf86Wacom.c" and the function "isdv4Parse".

Pen Button Command Structure

The Wacom Pen Driver uses 18 byte packets that give it all the information it needs for performing a given operation, for the "Button" operations a good example packet is when you click the left-most button (keyboard on the tc4200):

C1 01 00 00 00 00 00 00 00

This packet indicates that it is of the type "C1" (button press) and that button "1" was clicked. Known button values are "01" for the keyboard, "02" for rotate, and "04" for the Compaq button.

Code Changes

User-Space Handling

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox