このドキュメントでは mouse-processor の設定ファイルの内容 (書式、パラメータ等) について説明します。
付属の設定ファイル default.mprc で一通りの機能を利用できますが、
設定ファイルをカスタマイズすることで、より自分好みの動作をするよう設定を変更することができます。
設定ファイルはコマンドライン引数、または所定の場所から検索されます。
ホームディレクトリとは以下のいずれかです。上から順に検索されます。
指定したファイル名に "%
" (パーセント記号) でくくられた部分があると、それはくくられた文字列に対応する環境変数に置換されます。
設定ファイルの文字エンコードは UTF-8 です。 ASCII 文字以外、例えば日本語等を含める場合には必ず UTF-8 でファイルを保存して下さい。
設定はS式で表記され、主に連想リストで構成されます。
各設定項目は、項目名をあらわすシンボルから始まるリストとなります。
S式の詳細については Appendix: S-Expression で説明していますが、通常はそれほど意識する必要も無いでしょう。
このドキュメントでは以下のような表記をします。 (表示環境によっては区別できない場合があります)
some-value
[some-value]
...
各種設定は設定ファイルの先頭から順に読み込まれます。
同一の設定項目に対して複数回設定がされた場合、最後の設定が有効となります。
include
文include
文を記述すると他の設定ファイルを読み込むことができます。(include file-name ...)
file-name
にはファイル名を文字列で指定します。
複数のファイル名を指定したときは、順番に読み込まれます。(include "2button.mprc")
global
設定global
設定項目では全体の動作に影響する設定を記述します。
(combination-time . threshold-time)
threshold-time
ミリ秒以内に2つめのボタンを押すと、2ボタン同時押しをしたものと認識します。nothing
を指定したとき) も同様に2ボタン同時押しとは認識されません。
(global
(combination-time . 500)
...
)
(priority . process-priority)
process-priority
は次のいずれかから指定します。
high
above-normal
normal
below-normal
idle
(global
(priority . above-normal)
...
)
(tray-icon icon-file [index])
icon-file
で指定されたファイルの index
番目のアイコンを利用します。
指定可能なファイルは、.ico ファイルや .exe、.dll ファイルなどがあります。index
を省略すると 0
を指定したものとされます。icon-file
に #f
を指定するとタスクトレイにアイコンを表示しなくなります。
ただし、この場合はトレイアイコンからのメニュー等も利用できなくなりますので、十分注意して下さい。
(global
(tray-icon "main.cpl" 0)
...
)
(initial-mode . mode-name)
mode-name
には normal-mode
設定から一つ指定します。
normal-mode
、scroll-mode
設定normal-mode
および scroll-mode
設定項目では、
それぞれ通常モードとスクロールモードの動作を記述します。initial-mode
で指定された通常モードになります。
abc
、def
という名前の2つの通常モードと、uvw
、xyz
という名前の2つのスクロールモードを設定
(normal-mode (abc ... ) (def ... ) ) (scroll-mode (uvw ... ) (xyz ... ) )
(button-d-X . (action [args]))
(button-u-X . (action [args]))
X
には1から5までのボタン番号を指定します。action
には、どのような動作をするかを次のいずれかから指定します。
args
には action
への引数を指定できます。action
および args
については、それぞれの説明を参照して下さい。
(button-d-X+Y . (action [args]))
(button-u-X+Y . (action [args]))
X
と Y
には1から5までのボタン番号で2ボタン同時押しの組み合わせを指定します。action
には、どのような動作をするかを次のいずれかから指定します。
args
には action
への引数を指定できます。action
および args
については、それぞれの説明を参照して下さい。
(wheel . (action [args]))
action
には、どのような動作をするかを次のいずれかから指定します。
args
には action
への引数を指定できます。action
および args
については、それぞれの説明を参照して下さい。
(scroll-ratio x-ratio y-ratio)
x-ratio
および y-ratio
は、それぞれ X 方向 (横)、Y 方向 (縦) のスクロール速度で、何倍の速度でスクロールするかを指定します。
負の数を指定するとスクロールの向きが逆になります。
(scroll-mode
(half-x-reverse-double-y
(scroll-ratio 0.5 -2)
...
)
)
action
として指定できる設定には以下のものがあります。
(butto-d N)
(butto-u N)
N
には1から5までのボタン番号を指定します。(normal-mode (some-name (button-d-3 . (button-d 5)) (button-u-3 . (button-u 5)) ) )
(normal-mode [mode-name])
mode-name
には切り替え後の通常モードのモード名を指定します。
省略した場合は initial-mode
のモードが指定されたものとされます。mode-A
と、ボタン3のクリックがボタン5として動作するモード mode-B
の2つの通常モードをボタン1と2の同時押しで切り替える
(normal-mode (mode-A (button-d-1+2 . (normal-mode mode-B)) (button-d-3 . (button-d 4)) (button-u-3 . (button-u 4)) ) (mode-B (button-d-1+2 . (normal-mode mode-A)) (button-d-3 . (button-d 5)) (button-u-3 . (button-u 5)) ) )
(scroll-mode mode-name)
mode-name
には切り替え後のスクロールモードのモード名を指定します。mode-N
時にボタン3を押ししている間だけスクロールモード mode-S
に切り替え、ボタン3を離すと通常モードに戻る
(normal-mode (mode-N (button-d-3 . (scroll-mode mode-S)) ... ) ) (scroll-mode (mode-S (button-u-3 . (normal-mode mode-N)) ... ) )
(set-scroll-ratio x-ratio y-ratio)
x-ratio
と y-ratio
の意味は scroll-ratio
と同じです。(mul-scroll-ratio x-ratio y-ratio)
scroll-ratio
、set-scroll-ratio
で設定した X 方向のスクロール速度に x-ratio
を乗じ、Y 方向のスクロール速度に y-ratio
を乗じます。
(scroll-mode
(some-name
(button-d-3 . (mul-scroll-ratio -1 -1))
...
)
)
(wheel-input)
(post-wheel-message)
(nothing)
scroll-window
設定scroll-window
設定項目ではウィンドウごとのスクロール方法を記述します。:
" (コロン) で親ウィンドウのクラス・タイトルと連結して表現します。
最も右側が対象となる子ウィンドウで、一つ左側が親ウィンドウ、その左が親の親、というように連結します。
ただし、一番最初のウィンドウの左側はそのプログラムのパスとなります。C:\WINNT\system32\notepad.exe:Notepad:Edit
scroll-window
設定項目では、ウィンドウのクラス・タイトルの指定に正規表現を使えます。
正規表現の詳細については Appendix: Regular Expression を参照して下さい。
正規表現は文字列として記述します。
":Edit$"
\
" がエスケープ文字として利用されていることに注意して下さい。
"\
" 自身を表現するには "\\\\
" と記述する必要があります。
"^C:\\\\WINNT\\\\system32\\\\notepad\\.exe:Notepad:Edit$"
scroll-window
設定項目のウィンドウを指定する位置に文字列のみを記述すると、それはウィンドウクラスを示す正規表現であるとみなされます。(title "title-regexp")
と記述します。
同様に、ウィンドウクラスを指定するのに (class "class-regexp")
と記述することもできます。(and ...)
または (or ...)
を使います。
and
は両方に一致するウィンドウを、or
はどちらかに一致するウィンドウを示します。
(and (class "notepad\\.exe:.*:Edit$") (title ":default.mprc - メモ帳:"))
operator-config
設定operator-config
設定項目では、Scroll operator の動作設定を記述します。
Scroll operator は、スクロールモード時にマウスの動きに応じてウィンドウをスクロールさせます。
どのウィンドウでどの Scroll operator を用いるかの対応付けは scroll-window
設定で指定します。
スクロール速度や方向などの各 Scroll operator ごとの設定は、operator-config
設定で記述します。
また、scroll-window
設定で Scroll operator を指定するときの引数として個別に記述することもできます。
Scroll operator には以下のものを指定できます。
(window-scrollbar [mode x-ratio y-ratio])
mode
にはマウスを動かす速度とスクロールの速度をどのように対応づけるかを指定します。
省略した場合は、operator-config
設定の default-mode
の設定を使用します。x-ratio
と y-ratio
にはスクロール速度の比率を指定します。
省略した場合は、operator-config
設定の mode
に対応する項目に設定してある値を使用します。
最終的なスクロール速度は、scroll-ratio
の設定値と x-ratio
、y-ratio
それぞれの対応する値を乗じた結果に比例します。mode
には以下のモードを指定できます。
drag
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、サムを1ピクセル分ドラッグするのと同じだけスクロールします。
percentage
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、スクロールバー可動範囲の1%分がスクロールします。
bar-unit
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、スクロールバーの位置を1単位スクロールします。
line-scroll
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、スクロールバー両端のボタンを1回押したのと同じだけスクロールします。
page-scroll
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、スクロールバー両端のボタンとサムの間を1回押したのと同じだけスクロールします。
line-scroll
モードでスクロール、その他のエディットコントロールは drag
モード・通常の 1/10 の速度でスクロール、ワードパッドのリッチエディットコントロールは page-scroll
モードでスクロール
(scroll-window ("notepad\\.exe:.*:Edit$" (window-scroll)) (":Edit$" (window-scroll drag 0.1 0.1)) ("wordpad\\.exe:.*:RichEdit" (window-scroll page-scroll)) ... ) (operator-config (window-scrollbar (default-mode . line-scroll) (line-scroll 1 1) (drag 1 1) (page-scroll 0.1 0.1) ... ) ... )
drag
、percentage
、bar-unit
の各モードは対象ウィンドウのスタイルに WM_HSCROLL
または WM_VSCROLL
のうち少なくともいずれかが指定されている必要があります。
これらのスタイルが指定されていなかった場合はこの実行は失敗します。
(neighborhood-scrollbar [mode x-ratio y-ratio])
window-scrollbar
とは異なり、対象ウィンドウはスクロールバーを持たず、そのウィンドウの隣 (右側や下側など) にスクロールバーコントロールを個別に持っている場合に使います。
MS Office 製品や、Acrobat Reader などが該当します。mode
、x-ratio
、y-ratio
の指定値および設定方法は window-scrollbar
と同様です。
(scrollbar-control [mode x-ratio y-ratio])
mode
の指定値および設定方法は window-scrollbar
と同様です。x-ratio
と y-ratio
はスクロール速度を指定します。
スクロール速度は、
X 方向の動き *に比例します。x-ratio
+ Y 方向の動き *y-ratio
operator-config
設定では、水平スクロールバーは h-bar
、垂直スクロールバーは v-bar
をキーとして個別に設定を記述します。(scroll-window ... (":ScrollBar$" (scrollbar-control)) ... ) (operator-config (scrollbar-control (default-mode . drag) (h-bar (drag 1 0) ... ) (v-bar (drag 0 1) ... ) ) ... )
(trackbar-control [mode x-ratio y-ratio])
mode
、x-ratio
、y-ratio
の指定値および設定方法は scrollbar-control
と同様です
(ie-scroll [mode x-ratio y-ratio])
x-ratio
、y-ratio
の指定値および設定方法は window-scrollbar
と同様です。mode
にはマウスを動かす速度とスクロールの速度をどのように対応づけるかを指定します。
省略した場合は、operator-config
設定の default-mode
の設定を使用します。mode
には以下のモードを指定できます。
drag
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、サムを1ピクセル分ドラッグするのと同じだけスクロールします。
percentage
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、スクロールバー可動範囲の1%分がスクロールします。
pixel
scroll-ratio
、x-ratio
、y-ratio
で設定した値が全て 1
だった場合に、マウスカーソルが1ピクセル移動するぶんマウスを動かすと、1ピクセル分スクロールします。
(wheel-message [x-ratio y-ratio tick])
x-ratio
と y-ratio
はホイールの回転速度を指定します。
縦方向の回転速度は、
Y 方向の動き * y-ratio
に比例し、横方向の回転速度は、
X 方向の動き * x-ratio
に比例します。
省略した場合は、operator-config
設定の ratio
に設定してある値を使用します。tick
は一回のメッセージで送信する回転量です。
通常は 120
を指定します。
アプリケーションが対応していれば 120
より小さい値を指定できます。
省略した場合は、operator-config
設定の tick
に設定してある値を使用します。
(scroll-window (":SysListView32$" (wheel-message)) ... ) (operator-config (wheel-message (ratio 0.0 -5.0) (tick . 120)) ... )
Scroll operator には他の Scroll operator を引数としてとる Meta scroll operator も指定できます。
(or scroll-operator1 [scroll-operator2 ...])
scroll-window
の設定にも合致しなかった場合は window-scrollbar
、neighborhood-scrollbar
、wheel-message
から順次実行可能なものを試す
(scroll-window
(".*" (or (window-scrollbar)
(neighborhood-scrollbar)
(wheel-message)))
...
)
(apply-parent scroll-operator [nth])
scroll-operator
で指定した operator を nth
世代親のウィンドウに適用します。
nth
が省略された場合は 1
を使用します。
mouse-processor で利用するS式は、Scheme (R5RS) のもののサブセットです。
このS式は以下の要素で構成されます。
;
" (セミコロン) から、その行の末尾まではコメントとして扱われます。
#o #d #x
を付けることで、それぞれ8進数、10進数、16進数で表記できます。
26 #o32 #d26 #x1A
.
" を含めることで有限精度の実数を表記できます。
\
" を前置します。"\
" 自身を含めたい場合も同様です。
#f
、真は #f
以外となります。
明示的に真をあらわす #t
もあります。
.
" で区切り、全体を括弧 () でくくって表記します。
car
というシンボル、cdr 部に "cdr"
という文字列を入れた cons セルは、以下のように表記します。
(car . "cdr")
()
を保持します。
(1 . (2 . (3 . (4 . ()))))
(1 2 3 4) (1 . (2 3 4)) (1 . (2 . (3 . (4 . ()))))
BNF 記法っぽい定義は以下のとおり。
<datum> = <boolean> | <number> | <flonum> | <symbol> | <string> | <list> <boolean> = #t | #f <number> = <number 2> | <number 8> | <number 10> | <number 16> <number R> = <radix R> <integer R> <integer R> = <sign> <digit R>+ <sign> = <empty> | + | - <radix 2> = #b <radix 8> = #o <radix 10> = <empty> | #d <radix 16> = #x <digit 2> = 0 | 1 <digit 8> = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 <digit 10> = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <digit 16> = <digit 10> | a | b | c | e | f <flonum> = <sign> <fraction> <fraction> = . <digit 10>+ | <digit 10>+ . <digit 10>* <symbol> = <identifier> <identifier> = <initial> <subsequent>* | <peculiar identifier> <initial> = <letter> | <special initial> <subsequent> = <initial> | <digit> | <special subsequent> <letter> = a | b | c | ... | z <special initial> = ! | $ | % | & | * | / | : | < | = | > | ? | ^ | _ | ~ <digit> = <digit 10> <special subsequent> = + | - | . | @ <peculiar identifier> = + | - | ... <string> = " <string element>* " <string element> = <any character other than " or \> | \" | \\ <list> = ( <datum>* ) | ( <datum>+ . <datum> ) <empty> =
利用可能な正規表現は VBScript と同じです。
これは egrep や perl 等の一般的な正規表現とほぼ同じです。