vine-users ML アーカイブ



[vine-users:077958] Tabletタ イプのThinkPad を使うレポート

  • From: Seiichirou Babasaki <mindgear@xxxxxxxxxxxx>
  • Subject: [vine-users:077958] Tabletタ イプのThinkPad を使うレポート
  • Date: Mon, 7 Jan 2008 19:56:48 +0900
馬場崎です。明けましておめでとうございます。

自分がTabletを愛好しているのでその分は意味がありますが、
使っていない方には需要の少ないレポートを投稿します。

今回は 現LenovoのThinkPadシリーズの中でTabletPCタイプのものを
使用できるようにします。対象になるのは現在の所
X41、X60、X61 のタブレットモデルです。

これらはハードウェアとしてはシリアル接続になっており、これまで頭を
悩ませていたUSB接続のカーネルドライバやudevでの認識については
一切考える必要がありません。
(※もちろんUSB-Tabletと二刀流で行く場合はそれぞれに設定が必要です)
ペンデバイスを扱うデジタイザ部分はWacom社のもので、似たような
コントローラーを持つ他社製品にもひょっとすると応用がきくかもしれません。

※情報の多くは「ThinkWiki」で入手できます。
  http://www.thinkwiki.org/wiki/ThinkWiki

■VineLinux4.2(XOrg-6.9.0)
今回はXが標準で持っているドライバでは動作できません。
いくつか準備が必要です。

まずシリアルポートを定義する必要がありますので setserial が必要です
(rootコマンド)
値についてWindowsから調べる事もできますが「ThinkWiki」に調査済みの値が
載っています。

# setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig

X起動前に定義する必要があります。rc.local に書き足したり簡単なスクリプトを書いて
init.dに入れてrc5.dへリンクを張ったりとか、方法はいろいろとあるでしょう。
確認方法は cat を使うのが簡単なようです。
# cat /dev/ttyS0
(この後、ペンを動かしてデータの流れを拾えたらOK。[Ctrl]+[z]等で停止)

続いてlinuxwacom プロジェクトのドライバを用意します。
http://linuxwacom.sourceforge.net/
使用したバージョンは 0.7.8-3 ですが、少し注意が必要になっています。

まず、モデルが「マルチタッチ」(multitouch)の場合、この 0.7.8-3 は対応している
のですが、デジタイザとタッチ(感圧)の二つの入力を受け取ってしまうため、完全に
一致していないとGimpなどで常にマーカーで書くような線が引かれてしまいます。
実際に調整に挑みましたが、一致させるのは困難をきわめ、マルチタッチとしては
「使いものにならない」のが正直な所です。
(とは言えGipmのようなアプリを使う目的で無ければ気にならないと思います)
モデルが multitouch でなければ、ソースからビルドしたドライバで
問題ありません。あるいは使用するアプリケーションで問題にならなければ
linuxwacom のもので進められます。

さてこの 0.7.8-3 に対してバージョンダウンせずに multitouch の部分だけを
安全に停止させるpatchがあります。
[ThinkWikiにあるGentooインストールログ。#中ほどにTouch_Screenについて]
http://www.thinkwiki.org/wiki/Installing_Gentoo_on_a_ThinkPad_X60_Tablet#Touch_Screen
[たどれるフォーラムでの話題]
http://sourceforge.net/forum/forum.php?thread_id=1777969&forum_id=236872
[フォーラムからたどれるgentooのpatch]
 ※任意の名前(linuxwacom-0.7.8-untouch.patch)で保存して使う
http://bugs.gentoo.org/attachment.cgi?id=134868

このパッチを使用して XのWacomドライバをビルドすると、ペンデバイスだけを
使う事ができます。
※linuxwacomのドライバに multitouch が取り入れられたのは最近の事なので、今後の
  バージョンではこの問題は解決するかもしれません。

◎ドライバのビルド
linuxwacom の 0.7.8-3 からXのドライバをビルドする方法はlinuxWacomの
ドキュメントに紹介されています。要点を言えばXのソースツリーを必要とします。
他には XOrg-sdk がインストールされている必要があり、これは configure が
見付けてくれるようです。
手動で行う事は、ユーザーで
$ apt-get source XOrg
……として、例えば XOrg-6.9.0-0vl38.src.rpm を取得し、
$ rpm -ivh XOrg-6.9.0-0vl38.src.rpm 
……としてユーザーの~/rpm 以下にインストールします。
linuxwacomのドキュメントによればコンパイルまで済ませておくように例示されて
いますので、
$ rpmbuild -bc ~/rpm/SPEC/xorg.spec
……としてソースの展開、パッチ、コンパイルまで済ませます。(要時間)

次にドライバのビルドなのですが、その前にgcc4が必要です。ソースがgcc4向けに
書かれているらしく、標準のgcc3.x だとエラーを出して止まります。
いったんrootになってaptコマンドで gcc4と関係するパッケージをインストールし、
update-alternatives で使用するコンパイラを切替えてください。
(私は心配性なので # update-alternatives --all として使っています)
(もちろん普段からGcc4.0.xを使用しているのならば、行き来する必要はありません)

gcc4の準備ができたらユーザーに戻り linuxwacom-0.7.8-3 のソースディレクトリーで
configure を実行します。与えるパラメーターは
$ ./configure --enable-wacomdrv --with-x-src=~/rpm/BUILD/XOrg-6.9.0/xc/
……です。エラーが出なければビルドに成功しています。

ソースに同梱のツール類は、あると便利なので prebuild ディレクトリーの
install ツールで設定してしまうのが楽です。(root)
その後、src/xdrv/wacom_drv.so を /usr/X11R6/lib/modules/input/ へ入れて
ください。バックアップをとっておくのも良いでしょう。(root)

■xorg.conf
xorg.conf についてはあちこちに紹介されています。
デバイスとオプションが変わったくらいで、さほど大きな変化はありません。

"ServerLayout" セクション
    InputDevice "Cursor0"   "SendCoreEvents"
    InputDevice "Stylus0"   "SendCoreEvents"
    InputDevice "Eraser0"   "SendCoreEvents"

"Module" セクション
    Load  "wacom" # wacom TabletPC

"InputDevice"セクション

 Section "InputDevice"
   Driver     "wacom"
   Identifier "Cursor0"
   Option   "Device"     "/dev/ttyS0"
   Option   "Type"         "cursor"
   Option   "Mode"       "absolute"
     #↑上は紹介記事の通りに書いています。cursorは本来"Relative"です。
     # いずれにせよcursorデバイスは無いのですが。
   Option   "ForceDevice"  "ISDV4"
   Option   "TPCButton"  "on" #default
#   Option   "BaudRate" "38400"
EndSection
Section "InputDevice"
   Driver     "wacom"
   Identifier "Stylus0"
   Option   "Device"     "/dev/ttyS0"
   Option   "Type"       "stylus"
   Option   "Mode"       "absolute"
   Option   "ForceDevice"  "ISDV4"
   Option  "KeepShape"  "on"
#   Option  "Suppress" "0"
#   Option   "Twinview" "horizontal" # "vertical"|"none"
#   Option   "TVResolution" "1024x768,1280x1024"
EndSection
Section "InputDevice"
   Driver     "wacom"
   Identifier "Eraser0"
   Option   "Device"     "/dev/ttyS0"
   Option   "Type"       "eraser"
   Option   "Mode"       "absolute"
   Option   "KeepShape"  "on"
   Option   "ForceDevice"  "ISDV4"
EndSection

画面を回転させたり二画面にという部分は今後は xrandr が中心になっていく
ようですね。ネットにはスクリプトも紹介されていますが、Xのバージョンと関わってくる
ようでして、手元で試した範囲では、ペンデバイスの認識だけが反転したり回転したり
という愉快な結果になりました。XOrg-6.9.0でもやりようはあるらしいのですが、
そこまでは追求していません。また画面に付属するスイッチ類も今回は手をつけていません。

■最後に
完全に余談ですが……
こういうのもself-buildパッケージ化することが可能にならないかなぁ、と思ったりしました。
ただドキュメント通りの方法だとXOrgのソースを全部展開してしまうのが問題かなぁ(汗)

-- 
__/__/__/__/__/__/__/__/__/__/__/__/
 ZON or MaruArt. 
>> Babasaki Seiichirou (Jap)
E-Mail  mindgear@xxxxxxxxxxxx
Nokia N800 zon@xxxxxxxxxxxx
__/__/__/__/__/__/__/__/__/__/__/__/