Easystroke に関する覚書

マウス・ジェスチャによって、コマンドやキーショートカットなどを実行させることができるプログラム Easystroke に関する覚書。
タブレットペンの使用を便利にすることが開発動機らしく、曲線のジェスチャへの対応や、特定のジェスチャを特定のアプリケーションだけに割り当てる機能の他、単純にボタンの割り当てを変更するためにも利用可能。

最終編集 : 2009年6月10日(Ver. 0.4.5 をベースに記述)

公式サイト: http://easystroke.wiki.sourceforge.net
使用説明(英語): http://easystroke.wiki.sourceforge.net/Documentation
Easystroke 作者さん常駐スレッド: http://ubuntuforums.org/showthread.php?t=837032

作者さんの PPA : https://launchpad.net/~easystroke/+archive/ppa

Ubuntu 用最新版 deb パッケージ

最初は単にマウスのボタンに特定のキーショートカットを割り当てたいと考えて btnx というプログラムの導入を検討。

しかし btnx公式サイトでは、Easystroke という別の作者さんによる別のプログラムの使用が推奨されていました。
btnx の作者さんによると、Ubuntu 8.10 Intrepid Ibex からの仕様変更によってプログラムが正常に動かない部分が出てきて、対応のために大幅にプログラムを書き直す必要があるが、そのための時間が取れないとのこと。
(とはいえ、btnx の作者さんは解決策の模索を続けてる模様で、Xinput2 を実装した Xorg が正式リリースされれば、開発が再開されるかも。)


目次


Gesture Button [ジェスチャ・ボタン]

ジェスチャ認識を開始するトリガーとなるボタン。

後述するアクションリスト画面の方でマウス/ペンのストロークの登録を行う際も、ここで設定するボタンを押してからマウス/ペンを動かしたりする必要がある。

Gesture Button

Easystroke 設定画面の Preferences [設定]タブの一番上にある Gesture Button [ジェスチャ・ボタン] のボタンを押して設定変更(初期設定は、マウスの Button 2 、自分の環境ではマウスの中ボタン)。ALT + Button 2 のように、修飾キー + ボタン をジェスチャ・ボタンにすることも可能。

ボタンのみを登録した場合、任意の修飾キーを押しながら当該の登録ボタンを押してもジェスチャの認識は開始されない。Any Modifiers [任意の修飾キー] + ボタン を登録した場合、修飾キーが押し下げられている場合と押し下げられていない場合の両方でジェスチャ認識が開始される。

設定変更ボタンの下にある Additional Buttons [さらに追加するボタン] を開くと、ジェスチャ・ボタンを複数登録することが可能。例えば上記の初期設定のボタン 2(マウスの中ボタン)に加えて、ここでボタン 3 を登録すると、右クリックによってもジェスチャ認識が開始される。

ボタンの設定画面からは、タイムアウト、インスタント・ジェスチャ、クリック & ホールドの3種類の属性のなかから1つを選択。

ジェスチャ・ボタンが押されホールドされている間、ストロークの入力を一定時間受け付け。

受け付け時間の長さは Timeout Profile [タイムアウトのプロファイル] に従う。

ジェスチャ・ボタンが押された後、ストロークの入力を受け付けず、直ちに関連付けられたアクションの内容を実行。

Easystroke をマウスボタンの割り当て変更目的にも使用できるのは、上記のようにジェスチャ・ボタンを複数登録でき、なおかつこの属性を付与することによって、ストロークを描画する必要なくアクションを実行させることができるから。

この属性の場合、後述するアクション設定画面では、ジェスチャ・ボタンを押した瞬間にストロークの登録が完了。

ジェスチャ・ボタンを押してから、そのボタンをタイムアウトまでホールドすることで、アクションの内容を実行。

タイムアウト前にマウス・ポインタを動かすと、その時点でタイムアウト扱いとなり、そのジェスチャは無効に。


Timeout Profile [タイムアウトのプロファイル]

タイムアウトは、ジェスチャ認識に対する時間制限。選択したプロファイルによって、時間制限の長さが決定される。

各プロファイルは、Initial Timeout [初期タイムアウト] と Timeout [タイムアウト] の2種類の時間制限値を内包。

ジェスチャ・ボタンを押してからマウスを動かしてストロークを開始するまでに設けられた時間制限が初期タイムアウト、ストロークを描く時間の長さに対する制限がタイムアウト。

Easystroke を -e オプション(実験モードを有効化するオプション)を付けて起動させると、プロファイルから「カスタム」を選択することができるようになり、初期タイムアウト値とタイムアウト値の両方を直接指定することが可能に(ver. 0.4.4 時点)。


Exeptions [例外]

特定のアプリケーションのウィンドウ上で、ジェスチャ・ボタンを働かせないようにしたり、ジェスチャ・ボタンを変更する機能を提供。

Add exeption [例外を追加] ボタンを押すとマウスカーソルが十字に変化、そのカーソルを例外に指定したいアプリケーションのウィンドウ上に置いてクリックすることで例外リスト登録。(xprop コマンドラインプログラムをバックグラウンドで使用して、ウィンドウのクラス名を取得している様子。)

デフォルトでは <App disabled> [Easystroke アプリ無効] となり、ジェスチャ・ボタンがそのアプリケーションのウィンドウ上で働かなくなる。

アプリ無効化の代わりにボタンを登録すると、そのボタンをアプリケーションのウィンドウ上でのジェスチャ・ボタンにすることが可能。

*Easystroke を稼働させると、Cairo-Dock のアイコン上でマウスの左クリックが効かなくなる症状が出る。Cairo-Dock を例外アプリケーションに追加することで、問題を回避することが可能。


Actions [アクション]

Action List

新しいアクションを追加するには、Add aciton [アクションを追加] ボタンを押して、アクション名や、ストローク、そのストロークが認識された際に実行する内容を設定していく。

登録されたアクションは、その内容をコマンドラインで実行させることも可能。

$ easystroke send "アクション名"

このコマンドラインは、バックグラウンドで dbus-send --type=method_call --dest=org.easystroke /org/easystroke org.easystroke.send string:"アクション名"を実行している。

Stroke [ストローク]

編集したいアクションの行を選択して、Record stroke [ストロークを記録] ボタンを押すか、直接項目をダブルクリックすると、ストロークの描画を促すダイアログがポップアップ表示されるので、画面上の好みの場所でジェスチャ・ボタンを押下げつつマウス(またはペン)でストロークを描画する。

通常、ストロークを描画してタイムアウト時間制限内にジェスチャ・ボタンを離すとストロークが登録される。

後述の Timeout Gestures [タイムアウト・ジェスチャ] オプションを有効にしている場合は、タイムアウトするまでにジェスチャ・ボタンを離さなくても、タイムアウト・ジェスチャと呼ばれるジェスチャのストロークとして登録される。

また、ストロークを描画してからジェスチャ・ボタンを離さず、タイムアウト時間制限内にジェスチャ・ボタン以外のマウスボタンを押すと、後述する Advanced Gestures [高度ジェスチャ] として登録される。タイムアウト・ジェスチャのオプションが有効の場合、ストロークを描画してタイムアウト後にジェスチャ・ボタン以外のマウスボタンを押せばタイムアウト・ジェスチャ + 高度ジェスチャとなる。

ジェスチャ・ボタンが押された時点で直ちに登録完了。

ジェスチャ・ボタンを一定時間押下げてから離すと、シングルクリックを登録する際の警告ダイアログがポップアップ表示するので、そのウィンドウの OK ボタンを押して登録。または。ジェスチャ・ボタンを一定時間押下げながら別のボタンを押して、高度ジェスチャとして登録。

Name [名前]

アクションの名前。ここで指定した名前は、上述のコマンドライン $ easystroke send "アクション名" を実行するときにも利用される。

自分の環境では、名前入力欄で半角/全角キーを押しても SCIM が立ち上がらず。右クリックメニューから「入力メソッド」->  SCIM Input Method を指定することで日本語入力可能に。

いつの間にかこの方法では日本語入力できなくなりました。なので、自分の環境では例えば Gnome のメインメニューにある Easystroke のランチャーのプロパティの起動コマンドを  env GTK_IM_MODULE=scim easystroke に編集。このコマンドによって Easystroke を起動させると SCIM が半角/全角キーで普通に立ち上がり日本語入力ができるようになりました。

Type [種類]

アクション実行内容の種類。コマンド、キー、テキスト、スクロール、Ignore [無視]、ボタン、Misc [その他]、から1つを選択。

これを選択して、プログラムやスクリプトを実行するコマンドを「Details」[詳細]欄に登録すれば、アクション実行時に登録コマンドが実行される。

なお、ここにキーボードやマウス入力をエミュレートする外部プログラム xte (xautomation パッケージの一部)を実行するコマンドラインを登録しておくと、マウスボタンのダブルクリック動作を実行させることが可能。

xte 'mouseclick 1' 'mouseclick 1'

このアクションを選択して「Details」[詳細]欄に任意の文章を登録すれば、アクション実行時に登録文章がタイプされる。

アクションの名前欄と同じように、自分の環境では詳細欄に日本語テキストを入力しようと半角/全角キーを押しても SCIM が立ち上がらず。右クリックメニューから「入力メソッド」->  SCIM Input Method を指定することで日本語入力可能に。 Easystroke を 「 env GTK_IM_MODULE=scim easystroke 」 というコマンドで起動することで問題回避。

ジェスチャが認識されてこのアクションが実行されると、マウスポインタを動かすことによってスクロールすることが可能に。

詳細項目の方をクリックして、修飾キーを押しながら適当なアルファベットキーを押すと、修飾キーを登録することもできる。

アクションは、マウスボタンが押されるまでの間有効。

○通常のジェスチャがストロークとして登録されている場合、このアクションが実行されると、その後のジェスチャ・ボタンのジェスチャ認識開始としてのクリック/押下げを1回無視。

詳細項目の方をクリックして、修飾キーを押しながら適当なアルファベットキーを押すと、修飾キーだけの登録をすることもできる。

修飾キーを登録すると、アクション実行後、マウスボタンのいずれかが押されるまで、修飾キーが押された状態をエミュレート。

例えば使用しているウィンドウ・マネージャにおいて、ウィンドウの移動やサイズ変更のショートカットがそれぞれ ALT + マウス左ボタン、ALT + マウス中ボタン である場合に、 ウィンドウ内の好きな位置で ALT キーを押す必要なくマウスのみによる移動やサイズ変更を行わせるには、このアクションで ALT キーを登録。

ignore-action

アクションが実行されると ALT キーが押された状態をエミュレートするので、その後にマウスの左ボタンや中ボタンを押せば移動やサイズ変更の開始。

例えば中ボタンがジェスチャ・ボタンだったとしても、上述したようにジェスチャ・ボタンとしてのクリック/押下げは1回無視されるので、サイズ変更のショートカットとしての押下げとして働く。

「Button」[ボタン]で修飾キー+マウスボタンをフル登録することと比較すると、同じ修飾キーを使用する複数の動作を1つのアクション登録だけで済ませることができるところがポイントか。

○後述のタイムアウト・ジェスチャ高度ジェスチャがストロークとして登録されている場合、修飾キーのエミュレートが有効なのはジェスチャ・ボタンなどを離すまでの間。

timeout-gesture-ignore-action

例えば Super + マウスのスクロールボタンで Compiz のズームによる画面の拡大や縮小を行う場合、これをマウスだけで済ませるにはタイムアウト・ジェスチャをストロークとして登録する。上述したように、通常のジェスチャがストロークとして登録されている場合だと、アクション開始後に何らかのマウスボタンが押された時点で修飾キーのエミュレートが終了するので、スクロールボタンを1回動かしただけでズームが停止してしまう。(スクロールボタンの上下回転により何らかの数値の上げ下げを行うような場合、後述の 高度ジェスチャ + 修飾キー&ボタンのフル登録 にして専用アクションを作成しても良い。)

「その他」を選択した場合は、Details [詳細] 欄の方で表示されるドロップダウンメニューから、以下のうちの1つを選択。

None [何もしない]

Unminimized [最小化解除] : 一番新しく最小化したウィンドウを元に戻す。

Show/Hide [表示/隠す] : Easystroke の設定画面の表示や非表示。

Disable (Enable) [無効化(有効化)] : Easystroke のジェスチャ認識を無効化。

無効化状態のときに easystroke send "アクション名" コマンドラインでこのアクションを実行するとジェスチャ認識を有効化。


Applications [アプリケーション]

特定のアプリケーション・ウィンドウ上でのみ有効なアクションを登録できる機能を提供。

アプリケーション・リストを開くと、初期設定では Default [デフォルト] のみ。これがいわばツリーのルートに当り、ここに登録されたアクションはあらゆるウィンドウ上で有効。

Add application [アプリケーションを追加] ボタンを押すとマウスカーソルが十字型に変化するので、追加したいアプリケーションのウィンドウ内にそのカーソルを置いてクリック。

アプリケーションを追加した直後は、ルートで登録したアクションがそのまま引き継がれている。

追加されたアプリケーションの名前を選択状態にしたうえで、引き継がれたアクションを下のアクションリスト上で編集。

ルートでの登録内容と異なる編集部分は、そのアプリケーションのウィンドウ上でのみ有効。新規アクションを追加することももちろん可能。

注意: 例えば Easystroke インストール直後など、ツリーのルート、つまりデフォルトにアクションが1つも登録されていない状態のとき、リストにアプリケーションを追加し、さらにそのアプリのノードに新しいアクションを追加してストロークを登録しようとしても、ジェスチャ・ボタンが効かずストロークを登録できない。特定のアプリのウィンドウ上だけで有効なアクションのみをリストに追加したい場合、ストロークやアクション内容が未登録のいわば空のアクションをデフォルトの方にまず登録。

Application List

上のスクリーンショットでは、ファイルブラウザの Nautilus を追加。

ルートから引き継がれたアクションはアクションリストの上3つ。

Nautilus のウィンドウ上ではそれらを無効にしたいので、Remove action(s) [アクションを削除] ボタンを押して削除している。

削除したアクションはリストから消えるが、Show deleted rows [削除した行を表示] オプションにチェックを入れると、グレイアウトされた状態で表示。

それらを選択した状態で Reset action(s) [アクションを再設定] ボタンを押すと、再び有効にすることが可能。(ルートの方でこれらアクションを削除した場合は、完全消去。)

Nautilus アクション 1 と Nautilus アクション 2 は Nautilus ノードで新たに追加したアクションで、Nautilus のウィンドウ上でのみ有効。

Nautilus ノードで新たに追加されたアクションはルートの方に存在しないので、削除すると直ちに完全消去。

ルート以外の他ノードで新たに追加されたアクションはルートに追加されず、ルートで新たに追加されたアクションは他ノードにも追加される。


Timeout Gestures [タイムアウト・ジェスチャ]

通常は、マウスやペンでストロークを描き、タイムアウトになる前の時間制限内にジェスチャ・ボタンが離された場合にのみジェスチャとして認識されるが、Advenced [高度設定] タブ -> Behavior [動作] にある Timeout Gestures [タイムアウト・ジェスチャ] オプションにチェックを入れると、タイムアウトとなるまでジェスチャ・ボタンを離さない場合もジェスチャとして認識される。

タイムアウト・ジェスチャと通常のジェスチャは、同じ形のストローク同士であっても別のジェスチャとして認識される。

タイムアウト・ジェスチャの利点は、アクション実行時にジェスチャ・ボタンを押したままでいられることや、ジェスチャ・ボタンが離されるまで、キーやボタンの押下げのエミュレートが継続すること。

Timeout Gesture

赤い×印が、タイムアウト・ジェスチャを示す目印。

上のスクリーンショットのアクションは、Compiz のデスクトップ・キューブを自由回転させる修飾キー+マウスボタンのエミュレート。

このアクションのストロークに通常のジェスチャを登録すると、エミュレートは一瞬だけで終了するため、マウスを動かしてキューブを自由回転させることができない。


Advenced Gestures [高度ジェスチャ]

ジェスチャ・ボタンをホールドしている間に別のマウスボタンを押すジェスチャが高度ジェスチャ。

高度ジェスチャには、追加のボタンを押す前に描かれたストロークを有効とするものと、ストロークを無視するものの2種類がある。

ストロークを無視するかしないかの切り替えは、Advenced [高度設定] タブ -> Behavior [動作] にある Ignore strokes leading up to advenced gestures [高度ジェスチャに至ったストロークを無視] オプションで設定。

ストロークを無視する設定にしている場合、マウスやペンに付いているボタンの数(ジェスチャ・ボタン除く)が高度ジェスチャを登録できる上限数になる。

ストロークを無視しない設定にしている場合は、同じ追加のボタンを押しても、その前のストロークの形が違っていれば別のジェスチャとして認識される。

アクション実行後もジェスチャ・ボタンが押下げられ続けていれば、その間ストローク情報はキープされるので、同じ形のストロークで別の追加ボタンが登録された高度ジェスチャのアクションを、その追加ボタンを押すだけで実行させることができる。

Advenced Gestures

上のスクリーンショットは、Compiz の リング・スイッチャーのキーショートカットを実行するアクション。

ジェスチャ 4 でスイッチャーを開始。何度もスクロールを描く必要なく、ジェスチャ・ボタンを押さえ続けつつマウスのスクロールボタンを上に回すだけで(ボタン 4)、その度にジェスチャ 4 が実行されてウィンドウが左回りに切り替わっていく。

さらにそのまま、今度はスクロールボタンを下に回すと(ボタン 5)、それだけでジェスチャ 5が実行されてウィンドウが右回りに切り替わる。


その他

6件のコメント »

  1. kawaji said

    Ignore アクションに関して少し付け足し。

  2. kawaji said

    アプリケーション・リストに関する注意を追記。

  3. kawaji said

    「Ubuntu 用最新版 deb パッケージ」のリンク先が常にver.0.4.4のパッケージになってしまっていたので修正。
    Cairo-Dock 併用時の注意点を Exeptions [例外] の項目に追記。

  4. […] Linuxで他ボタンマウスを活用する簡単な方法として,汎用マウスジェスチャーソフトeasystrokeがある。 easystrokeの使い方は以下のサイトが詳しい。 Easystroke に関する覚書 | Kawaji’s Weblog […]

  5. ferragamo包的价格 婚約指輪 ランキング ブランド http://www.christiandonimposejp.org

  6. […] Easystroke に関する覚書 | Kawaji’s Weblog […]

RSS feed for comments on this post · TrackBack URI

コメントを残す