タブレットPCで遊ぶ

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

タブレットPCで遊ぶ

投稿記事 by きりん »

こんにちわ。きりんです。
アキバをぶらついて、衝動買いで中古のタブレットPCを購入してしまいました。

実験台は、HP(Compaq)TC4200 です。

ベースを LUPQ-511 + lang_pack_ja-lupq-0.5.pet としました。

1.仮想キーボードは別にメッセージをポストした、xvkbdを利用しました。
viewtopic.php?f=25&t=1898
xvkbd-3.1.pet、libXaw3d.so.8.pet、libXp.so.6.pet を使います。また、起動時のキーボードレイアウトを日本語に設定変更しておきます。
日本語IMEの制御が出来ないことを避ける為に、ウィンドマネジャは icewm-1.3.7pre2-lupq.pet を利用して切り替えておきます。
自動起動させる為にスクリプトを作ります。/root/Startup/zz-xvkbd

コード: 全て選択

#!/bin/sh
/usr/X11/bin/xvkbd &
※ 直接リンクを貼って起動すると設定したはずの日本語配列で起動しません。

2.タッチパネルはドライバーの指定とxorg.confへの追記で動作しました。
ドライバーはブートマネージャで wacom_w8001 を指定します。このドライバーはシリアル接続用のものらしく、USB接続の場合は wacom を使うようです。

(2010.11.25 追記)
このPCの場合、ブートマネージャへドライバーの追加指定を行わなくても動作します。不十分なテストですいません。

画面転回を行う為には次のpetを導入しておきます。
xf86-input-wacom-0.10.8.pet http://murga-linux.com/puppy/viewtopic. ... &start=165 のスレッドから拾ってください。xの立ち上がりが早くなります。また、xsetwacomも変更されています。


/etc/X11/xorg.conf は次のようにします。(シリアル接続の場合の例です)

コード: 全て選択

#Special base config file used in Puppy Linux.

# **********************************************************************
# Module section -- this  section  is used to specify
# which dynamically loadable modules to load.
# **********************************************************************
#
Section "Module"
	Load "synaptics"

# This loads the DBE extension module.

    Load        "dbe"  	# Double buffer extension

# This loads the miscellaneous extensions module, and disables
# initialisation of the XFree86-DGA extension within that module.
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection

# This loads the font modules
#    Load        "type1"
#    Load        "freetype"

# This loads xtrap extension, used by xrandr
#   Load       "xtrap"

# This loads the GLX module (if present). xorg 7.4/5 need explicit disable to disable...
    Load    "glx" #LOADGLX

# This loads dri module (if present). 7.4 loads it by default, have to disable...
   Load       "dri" #LOADDRI
#    Disable "dri"

EndSection

# **********************************************************************
# Files section.  This allows default font paths to be set
# **********************************************************************

Section "Files"

# Multiple FontPath entries are allowed (which are concatenated together),
# as well as specifying multiple comma-separated entries in one FontPath
# command (or a combination of both methods)

    FontPath   "/usr/share/X11/fonts/misc/"
    FontPath   "/usr/share/X11/fonts/Type1/"
    FontPath   "/usr/share/X11/fonts/TTF/"

EndSection

# **********************************************************************
# Server flags section.
# **********************************************************************

Section "ServerFlags"

# Uncomment this to disable the <Crtl><Alt><Fn> VT switch sequence
# (where n is 1 through 12).  This allows clients to receive these key
# events.

#    Option "DontVTSwitch"

# Enables mode switching with xrandr
# There is a report that this can cause Xorg not to work on some
# video hardware, so default is commented-out...
# but i want to use it in xorgwizard so leave on...

    Option "RandR" "on"

# With this, Xorg won't talk to HAL to add evdev devices and you'll be back
# with the old Xorg behavior (pre-7.4)...

    Option "AutoAddDevices" "false"

# For no-Hal, kirk also suggests this...

#    Option "AllowMouseOpenFail" "true"

# Xorg 7.4, Ubuntu Jaunty, CTRL-ALT-BACKSPACE is disabled by default...

    Option "DontZap" "false"

EndSection

#everything past here is auto-generated by Puppy's Xorg Wizard...


Section "ServerLayout"
	InputDevice "Synaptics Mouse" "AlwaysCore"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "stylus"    "SendCoreEvents" <--- 追記
    InputDevice    "eraser"    "SendCoreEvents" <--- 追記
    InputDevice    "cursor"    "SendCoreEvents" <--- 追記
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
	Option      "XkbRules" "xorg"
	Option      "XkbModel" "jp106"
	Option      "XkbLayout" "jp" #xkeymap0
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "IMPS/2" #mouse0protocol
	Option	    "Device" "/dev/mouse"
	#Option      "Emulate3Buttons"
	#Option      "Emulate3Timeout" "50"
	Option      "ZAxisMapping" "4 5" #scrollwheel
EndSection

Section "InputDevice"
	Identifier "Synaptics Mouse"
	Driver "synaptics"
	Option "Device" "/dev/psaux"
	Option "Protocol" "auto-dev"
	Option "LeftEdge" "1700"
	Option "RightEdge" "5300"
	Option "TopEdge" "1700"
	Option "BottomEdge" "4200"
	Option "FingerLow" "25"
	Option "FingerHigh" "30"
	Option "MaxTapTime" "220"
	Option "MaxTapMove" "220"
	Option "VertScrollDelta" "100"
	Option "MinSpeed" "0.10"
	Option "MaxSpeed" "0.30"
	Option "AccelFactor" "0.0030"
	Option "SHMConfig" "on"
	#Option "Repeater" "/dev/ps2mouse"
EndSection

Section "InputDevice" <--- 追記
Driver "wacom" <--- 追記
Identifier "stylus" <--- 追記
Option "Device" "/dev/ttyS0" <--- 追記
Option "Type" "stylus" <--- 追記
Option "ForceDevice" "ISDV4" <--- 追記
Option "Button2" "3" <--- 追記
EndSection <--- 追記

Section "InputDevice" <--- 追記
Driver "wacom" <--- 追記
Identifier "eraser" <--- 追記
Option "Device" "/dev/ttyS0" <--- 追記
Option "Type" "eraser" <--- 追記
Option "ForceDevice" "ISDV4" <--- 追記
Option "Button2" "3" <--- 追記
EndSection <--- 追記

Section "InputDevice" <--- 追記
Driver "wacom" <--- 追記
Identifier "cursor" <--- 追記
Option "Device" "/dev/ttyS0" <--- 追記
Option "Type" "cursor" <--- 追記
Option "ForceDevice" "ISDV4" <--- 追記
Option "Button2" "3" <--- 追記
EndSection <--- 追記

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
	HorizSync    30-61
	VertRefresh  56-71
	#UseModes     "Modes0" #monitor0usemodes
	Option      "PreferredMode" "1024x768"
	EndSection
	
Section "Modes"
	Identifier "Modes0"
	#modes0modeline0
EndSection

Section "Device"
	### Available Driver options are:-
	### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
	### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
	### [arg]: arg optional
	#Option     "NoAccel"            	# [<bool>]
	#Option     "SWcursor"           	# [<bool>]
	#Option     "ColorKey"           	# <i>
	#Option     "CacheLines"         	# <i>
	#Option     "Dac6Bit"            	# [<bool>]
	#Option     "DRI"                	# [<bool>]
	#Option     "NoDDC"              	# [<bool>]
	#Option     "ShowCache"          	# [<bool>]
	#Option     "XvMCSurfaces"       	# <i>
	#Option     "PageFlip"           	# [<bool>]
	Identifier  "Card0"
	Driver      "intel" #card0driver
	Option "LinearAlloc" "6144"
	VendorName  "Intel Corporation"
	BoardName   "Mobile 915GM/GMS/910GML Express Graphics Controller"
	BusID       "PCI:0:2:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth 16
	#Option         "metamodes" "1024x768_60 +0+0" #METAMODES_0
	Subsection "Display"
		Depth       16
		Modes       "1024x768"
	EndSubsection
EndSection

#PuppyHardwareProfile=Intel_r_915GM_910ML_915MS_Graphics_Chip
3.画面転回の為に次のようなスクリプトを準備します。
/root/my-applications/bin/xrandr-ccw

コード: 全て選択

#!/bin/sh
#270 度の回転 (反時計回り、ポートレート):
  xrandr -o left && xsetwacom --set stylus Rotate CCW && xsetwacom --set eraser Rotate CCW
/root/my-applications/bin/xrandr-cw

コード: 全て選択

#!/bin/sh
#90 度の回転 (時計回り、ポートレート):
  xrandr -o right && xsetwacom --set stylus Rotate CW && xsetwacom --set eraser Rotate CW
/root/my-applications/bin/xrandr-half

コード: 全て選択

#!/bin/sh
#180 度の回転 (ランドスケープ):
  xrandr -o inverted && xsetwacom --set stylus Rotate HALF && xsetwacom --set eraser Rotate HALF
/root/my-applications/bin/xrandr-none

コード: 全て選択

#!/bin/sh
#通常の向き (0 度の回転):
  xrandr -o normal && xsetwacom --set stylus Rotate NONE && xsetwacom --set eraser Rotate NONE
これからの課題は、タッチパネル周辺にあるボタン動作を生かすことになります。
画面の回転ボタンが生きるとカッコイイですから・・・
本家のフォーラムには、How to set up a Wacom Tablet の書き込みがあって、結構参考になるものがあります。
最後に編集したユーザー きりん [ 10/11/25(木) 21:36 ], 累計 2 回
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by シノバー »

きりん さんが書きました:アキバをぶらついて、衝動買いで中古のタブレットPCを購入してしまいました。
金持ち〜 :D
今後の展開を期待しながら注視してます。
The bar master, Shino's Bar
http://shinobar.net/
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by きりん »

きりんです。
お財布に余裕がある訳ではありませんが、久しぶりに日暮れの時間帯にうろついたら、結構おじさんが徘徊しているのですね。さすがにジャンクに手を出す元気がないので痛みは進んでいますが動いているハードを買ってきました。その後、歩いていて、ちょっと高かったかの反省ありです。

さて、画面を転回させた時の動作を確認してみました。
結果は「デフォルトの状態で使いましょう!」です。
設定たらずかと考えubuntuも導入して確認してみましたが、同じ状況でした。
動作を観察すると、マウスカーソルが思った所に動きません。
XGAの画面ですが、90度捻った縦に設定すると画面表示はOKですが、タッチ入力やマウスはオリジナルの横長の状態ベースの動きをしてしまい、目的の場所をつつくことが出来ません(変な日本語ですが伝わりますかね…、ポインターの動きが90度転回を意識していない)。webの徘徊が必要なようです。XGAで仮想キーボード併用だと縦長でないと実質画面が小さく使いつらいです。

本当はandroid端末でもと考えていたのですが、puppyでタブレットもありと思います。古めのハードでも結構さくさくです。このスレッドは試しに仮想キーボードで入力しています。
最後に編集したユーザー きりん [ 10/11/25(木) 20:26 ], 累計 1 回
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by きりん »

きりんです。
タブレットがシリアル接続で内蔵されているpcの場合、カーネル・ドライバーのロード指定を行わなくても動作するようです。トップ・メッセージに追記して起きました。
落ち着いて観察するとxrandrで画面を回転させるとマウスの動きは追従しています。

wacomタブレットのプロパティを変更する"xsetwacom"がlupqには既に含まれていました。しかし、動作させてみるとXが落ちてしまいNGです。何か落としがあるのでしょうが…
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by きりん »

こんにちわ。きりんです。
画面の回転は可能になりました。
次のpetを導入します。
xf86-input-wacom-0.10.8.pet
http://murga-linux.com/puppy/viewtopic. ... &start=165 のスレッドから拾ってください。xの立ち上がりが早くなります。また、xsetwacomも変更されています。
画面転回用のスクリプトとして次のようなものを準備します。
/root/my-applications/bin/xrandr-ccw

コード: 全て選択

#!/bin/sh
#270 度の回転 (反時計回り、ポートレート):
  xrandr -o left && xsetwacom --set stylus Rotate CCW && xsetwacom --set eraser Rotate CCW
/root/my-applications/bin/xrandr-cw

コード: 全て選択

#!/bin/sh
#90 度の回転 (時計回り、ポートレート):
  xrandr -o right && xsetwacom --set stylus Rotate CW && xsetwacom --set eraser Rotate CW
/root/my-applications/bin/xrandr-half

コード: 全て選択

#!/bin/sh
#180 度の回転 (ランドスケープ):
  xrandr -o inverted && xsetwacom --set stylus Rotate HALF && xsetwacom --set eraser Rotate HALF
/root/my-applications/bin/xrandr-none

コード: 全て選択

#!/bin/sh
#通常の向き (0 度の回転):
  xrandr -o normal && xsetwacom --set stylus Rotate NONE && xsetwacom --set eraser Rotate NONE && xsetwacom --set "stylus" Rotate "NONE"
トップのメッセージも修正を加えました。
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by きりん »

こんにちわ。きりんです。
ハードの機能を十分に利用したいと、あちこちつついていました。

成功したものは、
○ 起動時(grub-4dos)での選択にジョグスイッチが利用できました。
上下の移動と押込みによる選択が出来ました(中古のせいか確実性がいまいちですが・・・)。

不成功のものは、
× タブレット脇の3個のボタンの認識(スタイラスで操作するもの)
× ホットキーでイベントが発生しないものが部分的にある(windows上でドライバーが予想以上に認識されているのでlinux上では認識が追いついていないのかな)。

いつもと同じでスムーズには行かない・・・
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by きりん »

こんにちわ。きりんです。
タブレットPC(HP tc4200)上でタブレットに接続されている3個のボタン認識実験のレポートです。
tc4200の祖先に当たるtc1100にてパッチを当てるとボタンの認識が可能になることがweb上で紹介されています。
(興味のある方は、http://wiki.linuxquestions.org/wiki/TC1100 を参照してください)
lupq-511上でパッチを当てることを試みましたがバージョンの違いからソースの構造がだいぶ異なるのでwebでの情報に近い形で実験を行ってみました。
結果OKとなりました。
本家のフォーラム(英語)に書かれていることと重複するかも知れませんが、実験により理解したことを書き留めます。

1.wacomのドライバー選択
利用しているpuppyのバージョンによりkernelのバージョンとXのバージョンが異なります。
※確認方法はメニューから Hardinfo を起動すれば確認できます。
wacomのドライバーは複数のバージョンが存在しますが、利用しているpuppyのkernelとXの組み合わせにより選択する必要があります。
puppyでは、
5xx系(lupq-511で確認):既にドライバーが組み込まれています。xorg.confへの記述追加で何かしら反応があると思います。
4xx系(PUPPY4.31JPで確認):ドライバーは組み込まれていません。

2.タブレットの接続方式による違い
USB接続とシリアル接続に大きく分けられますが、
USB接続の場合:kernelのドライバーとxのドライバーが必要です。
シリアル接続の場合:Xのドライバーのみで動作します。

3.Puppy4.31JP上で使えるようになるまで
今回は linuxwacom-0.7.8-3 を使いたかったのですが、次のようにしました。
ベース:Puppy4.31JP-STD(kernel 2.6.25.16)
開発環境:devx_431JPbeta3-sfs3.sfs
wacomドライバー:linuxwacom-0.8.0-3 ・・・本来linuxwacom-0.7.8-3を使う予定でしたが想定しているkernelのバージョンが合わないのでこちらを使用。※パッチを当てるコードの前後に差異はなかったので。
コンパイルを可能にするため追加したもの:
・wacomのツールでtcl/tkを利用するものがあるので、ソースからコンパイル。tcl8.5.9 と tk8.5.9。petやsfsで配布されているものもありますがツールのコンパイル時に使用されるヘッダーファイルが含まれていないのでソースからコンパイルする。
・kernelソースとして kernel-src-2.6.25.16-patched-puppy4.1.sfs
・xorgのヘッダーファイルがないようなので、xorg_xorg_full_dri_DEV-7.3.pet と xorg_xorg_full_dri-7.3.pet を追加。
実際コンパイルするとエラーが出ます。ヘッダーファイルが見つからないようなので、pfindで目的のものを検索し、絶対パスの形でソースファイルを修正すればコンパイル出来ます。
この後 xorg.conf に追記してリブート。(追記の内容はこのスレッドの前の方を参照)
動作の確認はコンソールより xev を起動して、あちこち突いて反応をみる。
こんな流れで出来ました。画面展開等の確認実験はこれからですが一歩前進です。
きりん
記事: 553
登録日時: 08/02/24(日) 21:49
連絡する:

Re: タブレットPCで遊ぶ

投稿記事 by きりん »

こんにちわ。きりんです。
tc4200でタブレット脇のボタン(journal,rotate,Q-menu)を認識させるパッチを当てたドライバーソースをアップロードします。lupq-511上で使えます(利用者はほとんどないでしょうが…)。
オリジナルのソースは、http://linuxwacom.sourceforge.net/index.php/main の xf86-input-wacom-0.10.8.tar.bz2 です。0.10.10が配布されていますが画面を回転させた時のスタイラスの動きがおかしいです。
アップロードしたソースと入れ替えてコンパイルするとbutton 28,30,32として認識します。
debugオプションがありますが、configuer時にオプション指定をしてコンパイルしないと有効になりません。
パッチのオリジナルは http://wiki.linuxquestions.org/wiki/TC1 ... tons_patch ですが、ドライバーのバージョンに合わせ関数名とコードの追加位置を変えています。
インストールpathの指定をしないと、/usr/local/lib/xorg/modules/input/wacom_drv.soとしてインストールされます。面倒なので/usr/lib/xorg/modules/input/wacom_drv.soへリンクを貼って使用しています。
やっとタブレットを使ったアプリの探検に掛かる準備ができました。
添付ファイルを見るにはパーミッションが必要です
返信する