Archive for March 3rd, 2010

Arch Linux: Wacom Graphire3 FDI File

Again, this is similar to the FDI file for Xubuntu, with a partial match on the name.

The button mapping swaps the two buttons along the pen, leaving the tip as Button 1. Button 2 pops up context menus, which I find easier when it’s on the front part of that two-button rocker.

X occasionally crashes hard when the tablet moves the pointer between the two screens. It’s more common when scrolling, where the pointer is moving vertically along the gutter and falls off the edge. The workaround: restrict the tablet pointer so that it can’t quite get off the edge of the screen. Setting the BottomX value to just slightly more than the tablet can produce seems to work well: Tablet max = 16704 and BottomX = 16750.

Unlike in Xubuntu, the tablet values mapped pretty closely to the whole screen; there was no need for absurd scaling values to expand a small upper-left rectangle to the full screen.

The problem with hard X crashes is that X takes the (USB) keyboard down with it. The only solution seems to be ssh-ing in from another system and killing startx; you cannot Ctrl-Alt-Backspace or Ctrl-Alt-F1 or any of that stuff with a completely dead keyboard.

You must include the SendCoreEvents option, otherwise The GIMP (and, presumably, other tablet-aware apps) will capture the events and never relinquish focus to system dialog boxes. Like, for example, the tablet won’t be able to focus inside the File->Save As dialog box…

Herewith, the file /etc/hal/fdi/policy/10-linuxwacom.fdi:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
 <device>
 <match key="info.product" contains="Wacom Graphire3">
 <merge key="input.x11_driver" type="string">wacom</merge>
 <merge key="input.x11_options.Type" type="string">stylus</merge>
 <merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
 <merge key="input.x11_options.Button2" type="string">3</merge>
 <merge key="input.x11_options.Button3" type="string">2</merge>
 <merge key="input.x11_options.MMonitor" type="string">off</merge>
 <merge key="input.x11_options.ScreenNo" type="string">0</merge>
 <merge key="input.x11_options.BottomX" type="string">16750</merge>
<!-- <merge key="input.x11_options.BottomY" type="string">11893</merge> -->
 <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
 <append key="wacom.types" type="strlist">eraser</append>
 <append key="wacom.types" type="strlist">cursor</append>
 </match>
 </device>
 <!-- Wacom names "parser" -->
 <device>
 <match key="info.udi" contains_not="subdev_0">
 <match key="info.udi" contains_not="subdev_1">
 <match key="info.udi" contains_not="subdev_2">
 <match key="input.x11_options.Type" contains="stylus">
 <merge key="info.product" type="string">stylus</merge>
 </match>
 <match key="input.x11_options.Type" contains="eraser">
 <merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
 <merge key="info.product" type="string">eraser</merge>
 <merge key="input.x11_options.MMonitor" type="string">off</merge>
 <merge key="input.x11_options.ScreenNo" type="string">0</merge>
 <merge key="input.x11_options.BottomX" type="string">16750</merge>
<!-- <merge key="input.x11_options.BottomY" type="string">11893</merge> -->
 </match>
 <match key="input.x11_options.Type" contains="cursor">
 <merge key="info.product" type="string">cursor</merge>
 </match>
 </match>
 </match>
 </match>
 </device>
</deviceinfo>

All in all, it’s much better than it was.

About these ads

Leave a comment