使ってます Debian 6.0.4
。マウスホイールは、あらゆる用途に使用できるようにスクロールします。マウスのホイールを1回転させるだけで「スクロール」がどの程度行われるかを設定する方法はありますか
更新:
私のキーボードとマウスはワイヤレスで、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
以下が機能するためには、プログラム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のイベントを使用できるようになり、これらのボタンのイベントを受信したときに好きなことを実行できるようになります。この場合、1つのマウスホイールロール(つまり、いずれかの方向のクリック)に対して複数のマウスイベントを生成します。
たとえば、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がリリースされるたびに、同じタイプの3つの新しいイベントが同じであるため、ボタン4のリリースイベントに直接バインドすると無限ループが発生します。ボタンが生成されます。そのため、以前にボタンを再マップしました。
セットアップをテストするには、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倍の速度になっていることがわかります。
Xセッションを開始するときに、バックグラウンドでxbindkeys
を開始するだけです。それは読者のための練習として残されています。
コマンドラインプログラムxinput
を使用して、マウス(およびスクロールホイール)の加速を制御できます。 xinput --list
を使用して、入力デバイスを一覧表示します。次に、マウスのIDを使用して、xinput --list-props <ID>
などのプロパティを一覧表示できます。スクロールホイールの加速用に1つあるはずです。 xinput --set-prop <ID> <propertyID> <value>
を使用して変更できます。正しい値を見つけるために、値を少し試してみる必要があるかもしれません。
Microsoft Microsoft® 2.4GHz Transceiver
デバイスを使用しているようです。多くのLinuxユーザーがMicrosoftポインティングデバイスでスクロールホイール関連の狂気に遭遇しています。 問題を解決する手順はほとんどの場合:
私はこれがばかげて単純に聞こえることを知っています。同じ問題がありました。何時間もOSをグーグルして調べた後、デバイス/ドライバーの状態が悪いためにスクロールイベントが複製されていたことが判明しました。
私は、問題を解決するためにカーネルとXserverの間に位置するミドルウェアドライバーを書き始めるように自分自身を奮い立たせていました。 ( libevdev は、興味がある場合に開始する場所です。)しかし、時々切り替える切り替えで十分であると判断しました。
私のMicrosoftWireless Mouse 1000には、「EvdevScrollingDistance」プロパティがあります。
3、3、3に増やしてみてください
xinput --set-prop 10 274 3, 3, 3
通常、マウスホイールの解像度は、使用するデスクトップ環境によって決まります。現在、どのデスクトップ環境を使用していますか?
特定のデバイスの解決策を見つけました。それは他の人の助けになるかもしれません。マウス:統合レシーバー上のLogitech M560。
$ xinput出力:
Virtual core pointer id=2 [master pointer (3)]
↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
↳ Logitech Unifying Device. Wireless PID:4002 id=9 [slave pointer (2)]
↳ Logitech Unifying Device. Wireless PID:402d id=10 [slave pointer (2)]
...
私のマウスはid 10です(キーボードは9です)
$ xinput list-props 10
Device 'Logitech Unifying Device. Wireless PID:402d':
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (269): 2
Device Accel Constant Deceleration (270): 3.000000
Device Accel Adaptive Deceleration (271): 1.000000
Device Accel Velocity Scaling (272): 10.000000
Device Product ID (263): 1133, 50475
Device Node (264): "/dev/input/event2"
Evdev Axis Inversion (273): 0, 0
Evdev Axes Swap (275): 0
Axis Labels (276): "Rel X" (153), "Rel Y" (154), "Rel Horiz Wheel" (268), "Rel Vert Wheel" (296)
Button Labels (277): "Button Left" (146), "Button Middle" (147), "Button Right" (148), "Button Wheel Up" (149), "Button Wheel Down" (150), "Button Horiz Wheel Left" (151), "Button Horiz Wheel Right" (152), "Button Side" (291), "Button Extra" (292), "Button Forward" (293), "Button Back" (294), "Button Task" (295), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266), "Button Unknown" (266)
Evdev Scrolling Distance (278): -4, 1, 1
Evdev Middle Button Emulation (279): 0
Evdev Middle Button Timeout (280): 50
Evdev Third Button Emulation (281): 0
Evdev Third Button Emulation Timeout (282): 1000
Evdev Third Button Emulation Button (283): 3
Evdev Third Button Emulation Threshold (284): 20
Evdev Wheel Emulation (285): 0
Evdev Wheel Emulation Axes (286): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (287): 10
Evdev Wheel Emulation Timeout (288): 200
Evdev Wheel Emulation Button (289): 4
Evdev Drag Lock Buttons (290): 0
ドライバーのおかげで「Evdevスクロール距離(278)」ができて、-4、1、1に調整できたと思います。(マイナス)はホイールの方向を反転するためのものです(興味深いことに、ボタンの反転4 5-> 5この場合、4は機能しませんが、この設定は機能します)。デフォルト値は1、1、1でした。実験の結果、abs(number)が大きくなると遅くなるため、値は4になります。
私はドライバー「solaar」をインストールしました、多分ここに参照のためにリンクがあります Debianリポジトリ