新品の高価な製品は見えない振りをしてジャンク品を弄り回す日々。先日入手したタッチパネル PC EPIA-M10000 に NetBSD を載せてタッチパネルを使えるようにしてみた。このタッチパネルは割と一般的な DMC 製の FIT-10 相当品だ。NetBSD の X11 環境は既に Xorg ベース(X11R7)になっているが、そちらにはタッチパネル用のドライバが見つからなかったため、XFree86(X111R6) のサーバを導入した。Xorg でも Ubuntu などでは dmc ドライバがある。それはともかく、サーバが X11R6 でクライアントが X11R7 であってもさほど問題は無い筈だ(大雑把)。
X11R6 の X サーバを動かすには PATH 環境変数で /usr/X11R7/bin より前に /usr/X11R6/bin を記述して置けばよい。タッチパネルを使用するには XFree86.cfg に以下のような記述を追加する。コメントアウトしたオプションはデフォルト値になっている。
Section "ServerLayout"
:
# タッチパネル入力デバイス touchscreen0 を使用する
# マウスと併用も可。
InputDevice "touchscreen0" "SendCoreEvent"
:
EndSection
# タッチパネル入力デバイス touchscreen0 の定義
Section "InputDevice"
# 識別名
Identifier "touchscreen0"
# ドライバ識別名
Driver "dmc"
# タッチパネルデバイスが接続されたシリアルポート
Option "Device" "/dev/ttyS0"
# ポインタ校正情報
Option "MinX" "74"
Option "MaxX" "990"
Option "MinY" "43"
Option "MaxY" "960"
#
Option "ScreenNumber" "0"
# Option "ReportingMode" "Scaled"
# Option "ButtonNumber" "1"
Option "SendCoreEvents"
# Option "ClickMode" "1"
EndSection
MinX ... MaxY は画面の隅でのタッチパネル出力値に対応するから、これらの値は実際のデバイスに合わせて調整する。校正用の適当なプログラムを用意したいところだ。
InputDevice にこの touchpanel0 を追加すると、デバイスが接続されていないと X が使える状態にならない。デバイスの初期設定は X の起動時におこなわれるだけだから、何か異常な状態になった場合には X を再起動するしかない。初期設定後はタッチイベントにより 30p/s でデータ出力が行われ、これをポインタ情報として処理している。プログラム(xsrc/xfree/xc/programs/Xserver/hw/xfree86/input/dmc/xd86DMC.c)をいじればレートは 150p/s まで上げられる。ドラッグ操作があまりうまく行かないのは途中でペンアップが出力されてしまうためではないかと思われる。
タッチパネルでは基本的にポインタの移動+マウスの第一ボタン押下のみであるため、通常の X デスクトップ操作には不便だ。キーボード操作と組み合わせればバリエーションが増えるが、それではあまり意味が無いから、この操作に合わせたアプリケーションを用意すべきだろう。しかし、このマシンの煩いこと。小径のファンの上に劣化による影響があるようだ。オマケに載せ換えた HDD がまた煩い。
Posted by masato at 08:38 PMおそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。