을 사용하고 있습니다 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>
하고 위/아래로 몇 번 스크롤합니다. 그러면 지정된 장치에서 터미널로 이벤트가 출력되고 어떤 버튼이 스크롤 휠에 매핑되어 있는지 확인할 수 있습니다.
예를 들어, 두 개의 일반 버튼과 스크롤 휠이 있는 오래된 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의 세 가지 클릭 이벤트에 바인딩되어 있습니다. 버튼 4의 놓기 이벤트에 직접 바인딩하면 버튼 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배 빨라지는 것을 볼 수 있습니다.
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
일반적으로 마우스 휠 해상도는 사용 중인 데스크탑 환경에 따라 결정됩니다. 현재 어떤 데스크탑 환경을 사용하고 계시나요?