特殊:Badtitle/NS100:TabletSetupWizardpenCompiling

来自Ubuntu中文
Wikibot留言 | 贡献2008年10月20日 (一) 00:45的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索
可打印版本不再受到支持且可能有渲染错误。请更新您的浏览器书签并改用浏览器默认打印功能。

{{#ifexist: :TabletSetupWizardpenCompiling/zh | | {{#ifexist: TabletSetupWizardpenCompiling/zh | | {{#ifeq: {{#titleparts:TabletSetupWizardpenCompiling|1|-1|}} | zh | | }} }} }} {{#ifeq: {{#titleparts:TabletSetupWizardpenCompiling|1|-1|}} | zh | | }}

IconsPage?action=AttachFile&do=get&target=warning.png THIS GUIDE IS NO LONGER UPDATED - SEE: TabletSetupWizardpen for support for the newest release

Known tablets working with the Wizardpen-driver

The setup has been tested with the following tablets.

Known vendors

  • UC-LOGIC

Known tablets

  • Tablet WP4030U
  • Tablet WP5540U
  • Tablet WP8060U

If your tablet is not listed here, please ADD it! (If you don't have an account, then email me: [email protected])

Known problems

There are some problems, that I haven't been able to solve: * Hotplugging - The driver doesn't support hotplugging - but this howto includes a partial workaround * Shortcuts - The driver doesn't support the shortcut-fields of the tablet! - I'm working on a solution to this one!

Setting up your tablet

General information

This guide is based on: *ubuntu 6.06 - Dapper Drake For the newest release, please see TabletSetupWizardpen

The first step...

Open a terminal Install some needed packages - Run this command:

sudo apt-get install xutils libx11-dev libxext-dev x-dev build-essential xautomation xinput

Downloading and installing the driver

If your connection is a little slow, you can just proceed with these steps in another terminal. Download the wizardpen driver, and extract it! - Run these commands:

wget http://www.stud.fit.vutbr.cz/~xhorak28/wizardpen-driver-0.5.0.tar.gz
tar -xvzf wizardpen-driver-0.5.0.tar.gz
cd wizardpen-driver-0.5.0

Some adjustment is needed - Run this command:

sed -ie 's,\#include\ \"/usr/X11R6/lib/X11/config/Server.tmpl\",,' Imakefile

Create a Makefile from the Imakefile, and run Make - Run this command:

xmkmf && make

Copy the driver into the input-driver-directory - Run this command:

sudo cp wizardpen_drv.so /usr/lib/xorg/modules/input/

Setting up udev (If the tablet is USB)

Connect your tablet, if it is not connected yet. Find out what the device is called: (product) Run this command:

cat /sys/bus/usb/devices/*/product

The output will look something like this: (depending on your system)

Tablet WP8060U
UHCI Host Controller
UHCI Host Controller
UHCI Host Controller
EHCI Host Controller

Note the product of the tablet (obviously Tablet WP8060U in my case!) Now, add a udev rule: (Note that the SYSFS{product} is tablet-specific! - See output from above command!) Run these commands:

sudo bash
echo 'BUS=="usb", KERNEL=="event*", SYSFS{product}=="Tablet WP8060U", NAME="input/%k", SYMLINK+="tablet-event", MODE="0666"' >> /etc/udev/rules.d/010_local.rules
exit

Restart udev - Run this command:

sudo /etc/init.d/udev restart

Check that the syslink has been created - Run this command:

ls -la /dev/tablet-event

If it outputs a line, it means that it succeeded!

Calibration

Enter the "calibrate"-directory - Run this command:

cd calibrate

Build the calibration tool - Run this command:

make

Calibrate in order to find the edges of your tablet/digitizer - Run this command:

sudo ./wizardpen-calibrate /dev/tablet-event

Save the output from wizardpen-calibrate (the last 8 lines!) - You need it later in this howto!

Calibration output (If calibrate for some reason doesn't work!)

/!\ Skip this section if calibrate worked for you! Tablet W5540U (UC-Logic):

        Driver          "wizardpen"
        Option          "Device"        "/dev/tablet-event"
        Option          "TopX"          "2199"
        Option          "TopY"          "3598"
        Option          "BottomX"       "30325"
        Option          "BottomY"       "29278"
        Option          "MaxX"          "30325"
        Option          "MaxY"          "29278"

Setting up X

Now we are ready to edit the xorg.conf file! Take a backup - Run this command:

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

Edit the file - Run this command:

sudo vim /etc/X11/xorg.conf

Press "I" - So that "-- INSERT --" appears! Insert the following section into xorg.conf: (just place it below your generic mouse!)

Section "InputDevice"
  Identifier "WizardPen Tablet"
  Option "SendCoreEvents" "true"
  (the output from calibrate)
EndSection

Add the following line in the "ServerLayout" section:

InputDevice "WizardPen Tablet" "AlwaysCore"

Save the file, and exit the editor! (Press "ESC" and write ":wq" and press "Enter")

Making X start without a tablet connected

Now, the driver should NOT be initialized, if the tablet is NOT found! The wizardpen-driver does not support hotplugging, so we should run a script on startup, to define whether or not the tablet is present. Open /etc/rc.local - Run this command:

sudo vim /etc/rc.local

Press "I" - So that "-- INSERT --" appears! ...and insert some code: (insert it JUST above "exit 0")

XORG_CONF=/etc/X11/xorg.conf
if [ -e /dev/tablet-event ]; then
  sed -ie 's/^\(\s*\)\#\(\s*InputDevice\s\s*\"WizardPen\ Tablet\"\s\s*\"AlwaysCore\"\)\s*$/\1\2/' "$XORG_CONF"
  echo "Udev created /dev/tablet-event, which means that the tablet is present! - Tablet-driver enabled"
else
  sed -ie 's/\(^\s*InputDevice\s\s*\"WizardPen\ Tablet\"\s\s*\"AlwaysCore\"\)\s*$/\#&/' "$XORG_CONF"
  echo "Udev did NOT create /dev/tablet-event, which means that the tablet is NOT present! - Tablet-driver disabled"
fi

...so that the file looks something like this: (in case you haven't added anything else to the file!)

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

XORG_CONF=/etc/X11/xorg.conf
if [ -e /dev/tablet-event ]; then
  sed -ie 's/^\(\s*\)\#\(\s*InputDevice\s\s*\"WizardPen\ Tablet\"\s\s*\"AlwaysCore\"\)\s*$/\1\2/' "$XORG_CONF"
  echo "Udev created /dev/tablet-event, which means that the tablet is present! - Tablet-driver enabled"
else
  sed -ie 's/\(^\s*InputDevice\s\s*\"WizardPen\ Tablet\"\s\s*\"AlwaysCore\"\)\s*$/\#&/' "$XORG_CONF"
  echo "Udev did NOT create /dev/tablet-event, which means that the tablet is NOT present! - Tablet-driver disabled"
fi

exit 0

Save the file, and exit the editor! (Press "ESC" and write ":wq" and press "Enter") Now you can test udev's ability to detect the tablet - Run this command:

sudo /etc/init.d/rc.local start

The output will tell you if it is present or not! - And it should match reality! (try to disconnect it, and try again! - connect, and then again! - etc...) You should now be able to restart X and have the tablet working as a mouse. I'm still working on a way to support hotplugging, but the above code-example will make X start without a present tablet. X will still freeze if you unplug the tablet! - Please contact me, in case you have a solution!

Configuring the buttons on the pen

I'm working on a wizard for this task! In the meantime, look into the package "xinput" which is installed first in this guide. Here is a list of numbers with their corresponding function:

Number Function
0 No action (only movement)
1 Left button click
2 Middle Button click
3 Right Button click
4 Scroll up (one click equals one step of scroll wheel in my logitech mouse)
5 Scroll down

Configuring the tablet HOTSPOTS

I'm working on a daemon for this task! It's working well so far, just need a little tweaking, and making it start automatically. The biggest problem is to execute the commands as child-processes (so that a failure, doesn't cause the daemon to die!)