XでWheel Mouseを使う
XFree86のバージョン3.3.1以上(だったかな?)では、正式にWheelMouseに対応しているらしく、XF86Config内で設定をしてやれば、Wheel機能を使えるようになる。
まず、XF86ConfigのPointerセクションを以下のように変更する。
Section "Pointer"
Protocol "imps/2"
Device "/dev/mouse"
BaudRate 1200
Resolution 200
Buttons 5
ZAxisMapping 4 5
EndSection
Protocolのimps/2は、多分IntelliMouse PS/2の略だと思われる。(笑)
X Serverは、ホイールの回転をボタン4、5として検出するので、Button 5と5ボタンマウスの設定をして、ZAxisMapping 4 5でZ軸方向の動きにマッピングしている。
ホイールを押すことがボタン2に対応するので、Emulate3Buttonsは必要ない。
これでXサーバー自体はホイールの動きを検出できるようになったので、次はアプリケーション側の設定をする。
まず、NetscapeNavigator。.Xresourcesなどのリソース定義ファイルに、以下の設定を書いておく。
!! Netscape Communicator 4.xx
Netscape*drawingArea.translations: #replace\
<Btn1Down>: ArmLink()\n\
<Btn2Down>: ArmLink()\n\
~Shift<Btn1Up>: ActivateLink()\n\
~Shift<Btn2Up>: ActivateLink(new-window)DisarmLink()\n\
Shift<Btn1Up>: ActivateLink(save-only)DisarmLink()\n\
Shift<Btn2Up>: ActivateLink(save-only)DisarmLink()\n\
<Btn1Motion>: DisarmLinkIfMoved()\n\
<Btn2Motion>: DisarmLinkIfMoved()\n\
<Btn3Motion>: DisarmLinkIfMoved()\n\
<Motion>: DescribeLink()\n\
<Btn3Down>: xfeDoPopup()\n\
<Btn3Up>: ActivatePopup()\n\
\
None<Btn4Down>: LineUp()LineUp()LineUp()LineUp()LineUp()\n\
None<Btn5Down>: LineDown()LineDown()LineDown()LineDown()LineDown()\n\
Shift<Btn4Down>: ColumnLeft()\n\
Shift<Btn5Down>: ColumnRight()\n\
Ctrl<Btn4Down>: PageUp()\n\
Ctrl<Btn5Down>: PageDown()\n\
Alt<Btn4Down>: xfeDoCommand(back)\n\
Alt<Btn5Down>: xfeDoCommand(forward)
Netscape*globalNonTextTranslations: #override\
~Meta ~Alt ~Ctrl<Key>space: xfeDoCommand(spacebar)\n\
~Meta ~Alt ~Ctrl<Key>Delete: PageUp()\n\
~Meta ~Alt ~Ctrl<Key>BackSpace: PageUp()\n\
~Meta ~Alt ~Ctrl<Key>Up: LineUp()\n\
~Meta ~Alt ~Ctrl<Key>Down: LineDown()\n\
~Meta ~Alt ~Ctrl<Key>Left: ColumnLeft()\n\
~Meta ~Alt ~Ctrl<Key>Right: ColumnRight()\n\
~Meta ~Alt ~Ctrl<Key>osfDelete: PageUp()\n\
~Meta ~Alt ~Ctrl<Key>osfBackSpace: PageUp()\n\
Meta Ctrl<Key>f: fishcam()\n\
Alt Ctrl<Key>f: fishcam()\n\
Meta Ctrl<Key>t: net_showstatus()\n\
Alt Ctrl<Key>t: net_showstatus()\n\
~Meta ~Alt ~Ctrl<Key>osfUp: LineUp()\n\
~Meta ~Alt ~Ctrl<Key>osfDown: LineDown()\n\
~Meta ~Alt ~Ctrl<Key>osfLeft: ColumnLeft()\n\
~Meta ~Alt ~Ctrl<Key>osfRight: ColumnRight()\n\
~Meta ~Alt ~Ctrl<Key>Prior: PageUp()\n\
~Meta ~Alt ~Ctrl<Key>Next: PageDown()\n\
~Meta ~Alt ~Ctrl<Key>osfPageUp: PageUp()\n\
~Meta ~Alt ~Ctrl<Key>osfPageDown: PageDown()\n\
\
None<Btn4Down>: LineUp()LineUp()LineUp()\n\
None<Btn5Down>: LineDown()LineDown()LineDown()\n\
Shift<Btn4Down>: ColumnLeft()\n\
Shift<Btn5Down>: ColumnRight()\n\
Alt<Btn4Down>: xfeDoCommand(back)\n\
Alt<Btn5Down>: xfeDoCommand(forward)
これで、普通に回すと上下スクロール、Shift押しながらだと左右スクロール、Ctrl押しながらだと、1ページづつ上下スクロールするようになる。
次は、emacs。.emacsに以下の設定を書いておく。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; MouseのWheelでスクロールさせるための設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun up-slightly () (interactive) (scroll-up 5))
(defun down-slightly () (interactive) (scroll-down 5))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)
(defun up-one () (interactive) (scroll-up 1))
(defun down-one () (interactive) (scroll-down 1))
(global-set-key [S-mouse-4] 'down-one)
(global-set-key [S-mouse-5] 'up-one)
(defun up-a-lot () (interactive) (scroll-up))
(defun down-a-lot () (interactive) (scroll-down))
(global-set-key [C-mouse-4] 'down-a-lot)
(global-set-key [C-mouse-5] 'up-a-lot)
これで、普通に回すと上下スクロール、Shift押しながらだと1行ずつ上下スクロール、Ctrl押しながらだと1ページずつ上下スクロールができるようになる。
rxvtは、デフォルトでホイールマウスに対応しているらしく、何も設定しなくても動いてくれる。GTKも1.2からはデフォルトで対応している。
なお、ここに書いた設定は、このサイトの情報を元にしている。
Debian雑記帳に戻る