を使用していますDebian 6.0.4
。マウスホイールがスクロールしすぎて使用できません。マウスホイールを一度回したときに「スクロール」回数を設定する方法はありますか?
修正する:
私のキーボードとマウスはワイヤレスで、KVMのUSBポートに接続されており、USB経由でコンピュータに接続されています(それでも機能します)。
xinput --list
出力:
⎡Virtual core pointer id=2 [master pointer (3)]
⎜↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=9 [slave pointer (2)]
⎜↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=10 [slave pointer (2)]
⎜↳ Justcom Technology USB KVM Switch id=12 [slave pointer (2)]
⎣Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=8 [slave keyboard (3)]
↳ Justcom Technology USB KVM Switch id=11 [slave keyboard (3)]
xinput --list-props 9
出力:
Device 'Microsoft Microsoft® 2.4GHz Transceiver v8.0':
Device Enabled (128): 1
Device Accel Profile (254): 0
Device Accel Constant Deceleration (255): 1.000000
Device Accel Adaptive Deceleration (257): 1.000000
Device Accel Velocity Scaling (258): 10.000000
Evdev Reopen Attempts (246): 10
Evdev Axis Inversion (259): 0, 0
Evdev Axes Swap (261): 0
Axis Labels (262): "Rel X" (136), "Rel Y" (137), "Rel Misc" (263)
Button Labels (264): "Button Left" (129), "Button Middle" (130), "Button Right" (131), "Button Wheel Up" (132), "Button Wheel Down" (133), "Button Horiz Wheel Left" (134), "Button Horiz Wheel Right" (135), "Button Side" (249), "Button Extra" (250), "Button Unknown" (247), "Button Unknown" (247), "Button Unknown" (247), "Button Unknown" (247)
Evdev Middle Button Emulation (265): 2
Evdev Middle Button Timeout (266): 50
Evdev Wheel Emulation (267): 0
Evdev Wheel Emulation Axes (268): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (269): 10
Evdev Wheel Emulation Timeout (270): 200
Evdev Wheel Emulation Button (271): 4
Evdev Drag Lock Buttons (272): 0
答え1
次の機能が正しく機能するには、xteおよびxbindkeysプログラムが必要です。 Debianおよびほとんどの派生製品(Ubuntuなど)の場合、それぞれxautomationパッケージとxbindkeysパッケージに含まれています。別のディストリビューションを使用している場合は、パッケージマネージャを検索して正しいパッケージを見つけてください。
これのアイデアは、実際にマウスホイールの動きを加速するのではなく、ホイールを回転させるたびに複数のボタンイベントを生成することです。これにより、複数のボタンイベントが生成されるたびに外部プログラムが実行されるため、CPUが節約されません。ホイールをスクロールするたびに。これは少し考える必要があるかもしれませんが、ハッカーはハッカーです。
まず、入力デバイスのIDを取得する必要があります。使用しているマウスです。の出力からこれを得ることができますxinput list
。
その後、デバイスのボタンマッピングを取得する必要があります。の出力からこれを得ることができますxinput get-button-map <device>
。
スクロールホイールにマップされたボタンを確認するには、実行して上下にxinput test <device>
数回スクロールします。これにより、指定したデバイスから端末にイベントが出力され、どのボタンがスクロールホイールにマップされているかを確認できます。
たとえば、2つの一般的なボタンとスクロールホイールを持つ古いMicrosoft USBマウスを使用します。車輪を上に転がすことはボタン4にマッピングされ、車輪を下に転がすことはボタン5にマッピングされる。幸い、デバイスのボタンマップには未使用のボタン2つ(6と7)があるので、これを使います。
まず、ボタン4と5を未使用のボタンに再マップします。
xinput set-button-map <devid> 1 2 3 6 7 4 5
これにより、ホイールイベントにボタン6と7のイベントを使用でき、これらのボタンのイベントを受信したときに必要な操作を実行できます。この場合、単一のマウスホイールスクロール(つまり、どちらの方向でもクリック)に対して複数のマウスイベントを生成します。
たとえば、3を乗算(加速)するには、次のように入力します~/.xbindkeysrc
。
"/usr/bin/xte 'mouseup 6' 'mouseclick 4' 'mouseclick 4' 'mouseclick 4' &"
b:6
"/usr/bin/xte 'mouseup 7' 'mouseclick 5' 'mouseclick 5' 'mouseclick 5' &"
b:7
実際には、ボタン6のリリースイベントとボタン4の3つのクリックイベントにバインドされています。ボタン 4 のドロップイベントに直接バインドすると、ボタン 4 を離すたびに同じタイプの 3 つの新しいイベントが生成されるため、無限ループが生成されます。ボタンが作成されました。これが私たちが以前にボタンを再マップした理由です。
設定をテストするにはxbindkeys -n -v
:
user@host:~$ xbindkeys -n -v
displayName = :0
rc file = /home/sjl/.xbindkeysrc
rc guile file = /home/sjl/.xbindkeysrc.scm
min_keycode=8 max_keycode=255 (ie: know keycodes)
"/usr/bin/xte 'mouseup 6' 'mouseclick 4' 'mouseclick 4' 'mouseclick 4' &"
m:0x0 + b:6 (mouse)
"/usr/bin/xte 'mouseup 7' 'mouseclick 5' 'mouseclick 5' 'mouseclick 5' &"
m:0x0 + b:7 (mouse)
starting loop...
Button press !
e.xbutton.button=6
e.xbutton.state=0
"/usr/bin/xte 'mouseup 6' 'mouseclick 4' 'mouseclick 4' 'mouseclick 4' &"
m:0x0 + b:6 (mouse)
got screen 0 for window ae
Start program with fork+exec call
Button release !
e.xbutton.button=6
e.xbutton.state=0
Button press !
e.xbutton.button=7
e.xbutton.state=0
"/usr/bin/xte 'mouseup 7' 'mouseclick 5' 'mouseclick 5' 'mouseclick 5' &"
m:0x0 + b:7 (mouse)
got screen 0 for window ae
Start program with fork+exec call
Button release !
e.xbutton.button=7
e.xbutton.state=0
これで、スクロール可能なウィンドウ(Firefoxなど)にフォーカスを移動すると、ホイールのスクロール速度が3倍速くなることがわかります。
xbindkeys
今残っているのは、Xセッションの開始時にバックグラウンドで開始するだけです。これは読者に練習問題として残す。
答え2
コマンドラインプログラムを使用してマウス(およびスクロールホイール)の加速を制御できますxinput
。xinput --list
入力デバイスを一覧表示するために使用されます。その後、マウスのIDを使用してそのプロパティを一覧表示できますxinput --list-props <ID>
。たとえば、ホイール加速のプロパティが必要です。に変更できますxinput --set-prop <ID> <propertyID> <value>
。正しい値を見つけるには、これらの値を少し試す必要があるかもしれません。
答え3
私のMicrosoft Wireless Mouse 1000には、「Evdevスクロール距離」プロパティがあります。
3、3、3に増やしてみてください。
xinput --set-prop 10 274 3, 3, 3
答え4
通常、マウスホイールの解像度は、使用しているデスクトップ環境によって決まります。現在どのデスクトップ環境を使用していますか?