Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Wygrzebałem z szafy mega zajebistego trackaballa marki Kensington, po czym przypomniałem sobie dlaczego tam trafił- nie posiada scrollwheela.
Co więcej, posiada jedynie dwa przyciski. Zastanawiam się, czy jest sposób na emulację scrolleventów za pomocą kombinacji klawisza z klawiatury+ ruchów kursora, coś w podobie do firefox'owego middleclicka.
Znalazłem co prawda temat na bubuforum, ale jak widać bez odpowiedzi.
Więc jak, da się? Do wykorzystania mam np lewego windowsa :)
Edek: doszedłem by do xorg.conf dodać coś w serek
Section "InputClass" Identifier "liske rox" MatchIsPointer "on" option "emulate3buttons" "on" EndSection
Aczkolwiek średnio mnie to odpowiada, wolałbym z klawiatury ;)
edek: kolejny hint
xmodmap -e 'keysym Super_L = Pointer_Button2' xkbset m
Powoli do przodu :)
Ostatnio edytowany przez lis6502 (2016-01-14 19:47:10)
Offline
A takie coś się nada? https://en.wikipedia.org/wiki/Mouse_keys
Offline
Ale się usmiałem bawiąc xD. Niezłe, ale coś podobnego uzyskałem za pomocą xmodmapa o który pisałem wcześniej.
Mnie rozchodzi się by trzymając jakiś modyfikator (na ten przykład rzeczony Super_L) event MyszRuchWeLewo zamienić na MyszkSkrolKólkoWePrawo.
Offline
Da się:
Option "EmulateWheel" "boolean"
Enable/disable "wheel" emulation. Wheel emulation means emulating button press/release events when the mouse is moved while a specific real button is pressed. Wheel button events (typically buttons 4 and 5) are usually used for scrolling. Wheel emulation is useful for getting wheel-like behaviour with trackballs. It can also be useful for mice with 4 or more buttons but no wheel. See the description of the EmulateWheelButton, EmulateWheelInertia, XAxisMapping, and YAxisMapping options below. Default: off.
ftp://www.x.org/pub/X11R6.8.0/doc/mouse.4.html
U mnie na takiej zasadzie działa emulacja rolki przy użyciu Trackpointa.
Offline
Można także tym: mouseemu . W pliku /etc/default/mouseemu dodajesz np:
SCROLL="-scroll 125"
To jest lewy klawisz windows, wartość do odczytania w evtest. Po restarcie usługi, po tym jak przyciśniesz sobie klawisz windows i ruszysz myszką w górę, to strona się przewija w górę, jak w dół, to w dół. xD
Offline
@yossarian: wszystko fajnie tylko mój gryzoń ma fizycznie tylko dwa przyciski, więc se mogę. Hm, chyba żeby za pomocą xmodmapa podpiać wirtualny trzeci mysiklik pod windowsa i w ten sposób wymusić EmulateWheel- zaraz obaczę.
@morfik: jednak te wilki lisom są pomocne xD. Oczywiście w gentoo nie obyło się bez ręcznego patchowania źródełek i kompilacji modułu kernela pt. uinput. Po tych zabiegach Xy umarły xD
edek: nosz kuźwa
[331417.729] (II) config/udev: Adding input device Kensington Kensington USB/PS2 Orbit (/dev/input/event3) [331417.729] (**) Kensington Kensington USB/PS2 Orbit: Applying InputClass "evdev pointer catchall" [331417.729] (**) Kensington Kensington USB/PS2 Orbit: Applying InputClass "emul-wheen-on-left-winkey" [331417.729] (II) Using input driver 'evdev' for 'Kensington Kensington USB/PS2 Orbit' [331417.729] (**) Kensington Kensington USB/PS2 Orbit: always reports core events [331417.729] (**) evdev: Kensington Kensington USB/PS2 Orbit: Device: "/dev/input/event3" [331417.780] (--) evdev: Kensington Kensington USB/PS2 Orbit: Vendor 0x47d Product 0x1022 [331417.780] (--) evdev: Kensington Kensington USB/PS2 Orbit: Found 3 mouse buttons [331417.780] (--) evdev: Kensington Kensington USB/PS2 Orbit: Found relative axes [331417.780] (--) evdev: Kensington Kensington USB/PS2 Orbit: Found x and y relative axes [331417.780] (II) evdev: Kensington Kensington USB/PS2 Orbit: Configuring as mouse [331417.780] (**) Option "EmulateWheel" "true" [331417.780] (**) Option "EmulateWheelButton" "2" [331417.780] (**) evdev: Kensington Kensington USB/PS2 Orbit: YAxisMapping: buttons 4 and 5 [331417.780] (**) evdev: Kensington Kensington USB/PS2 Orbit: EmulateWheelButton: 2, EmulateWheelInertia: 10, EmulateWheelTimeout: 200 [331417.780] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:13.0/usb5/5-3/5-3:1.0/0003:047D:1022.0002/input/input4/event3" [331417.780] (II) XINPUT: Adding extended input device "Kensington Kensington USB/PS2 Orbit" (type: MOUSE, id 11) [331417.780] (II) evdev: Kensington Kensington USB/PS2 Orbit: initialized for relative axes. [331417.780] (**) Kensington Kensington USB/PS2 Orbit: (accel) keeping acceleration scheme 1 [331417.780] (**) Kensington Kensington USB/PS2 Orbit: (accel) acceleration profile 0 [331417.780] (**) Kensington Kensington USB/PS2 Orbit: (accel) acceleration factor: 2.000 [331417.780] (**) Kensington Kensington USB/PS2 Orbit: (accel) acceleration threshold: 4 [331417.780] (II) config/udev: Adding input device Kensington Kensington USB/PS2 Orbit (/dev/input/mouse1) [331417.780] (**) Kensington Kensington USB/PS2 Orbit: Applying InputClass "emul-wheen-on-left-winkey" [331417.780] (II) No input driver specified, ignoring this device. [331417.780] (II) This device may have been added with another device file.
Czyli wszystko działa.
xev po xmodmapowaniu też także również zgłasza lewy winklik jakp 'pointer2'. A działać nie chce :(
Ostatnio edytowany przez lis6502 (2016-01-16 17:36:23)
Offline
Powinno też działać z innymi klawiszami.
Offline
U mnie działało w porządku: xD
Jan 16 15:38:59 morfikownia systemd[1]: Starting LSB: Emulate mouse buttons and mouse wheel... Jan 16 15:39:00 morfikownia mouseemu[109696]: mouseemu 0.15 (C) Colin Leroy <colin@colino.net> Jan 16 15:39:00 morfikownia mouseemu[109696]: using (0+0) as middle button, (0+0) as right button, (125) as scroll. Jan 16 15:39:00 morfikownia mouseemu[109690]: Starting mouse emulation daemon: mouseemu. Jan 16 15:39:00 morfikownia systemd[1]: Started LSB: Emulate mouse buttons and mouse wheel. Jan 16 15:39:02 morfikownia mouseemu[109700]: Trying to open /dev/uinput... Jan 16 15:39:02 morfikownia mouseemu[109700]: ok. Jan 16 15:39:02 morfikownia kernel: input: Mouseemu virtual keyboard as /devices/virtual/input/input29 Jan 16 15:39:02 morfikownia kernel: input: Mouseemu virtual mouse as /devices/virtual/input/input30
Offline
No i działa przemega, tyle że z lewym kliikiem myszy xD. Normalnie się popłaczę. morfik z tymi od systemd nie rozmawiam <:. Nie no, u mnie zamraża otrzymywanie zdarzeń z urzadzeń wejścia, sieć działa i jak ręcznie ubiję proces mouseemu to wszystko wraca do normy. pewnie brakło jakiejś flagi w xorg-drivers, bo ja niedebianny i stricte bezwirkowy jestem ;p
edek: Wychodzi na to że xorg jest cwańszy niż user: mimo zmapowania do lewego winkeya mysiegobutona2 nadal nie chce skrolować <;:
edek: potwierdzam, mysz przypięta równolegle do trackballa (z kółkiem etc) po wduszeniu fizycznego drugiego mysiklika i ruchu góra-dół generuje skroliwenty. ;(. Skłaniam się do dolutowania trzeciego przycisku...
Ostatnio edytowany przez lis6502 (2016-01-16 23:34:16)
Offline
@morfik, tak, na pewno zmapowałem Pointer_Button2. Hardo googlując dokopałem się do informacji jakoby Xserwer rozróżniał udawany drugi mysiklik od fizycznego, wygenerowanego przez urządzenie.
Okazuje się, że jednak ktoś miał dokładnie takie same rozterki życiowe i co więcej podszedł bardzo sprytnie do tematu.
Otóż emulacja scroll eventów odbywa się, jeżeli prawy mysiklik jest przytrzymany dłużej niż xxx ms. W praktyce przy kliknięciu z zamiarem obejrzenia menu kontekstowego naciskamy przycisk na jakieś 15 ms, więc wszystko co powyżej możemy uznać za przytrzymanie i przerobć ruch kursora na przewijanie.
Naprawdę, elastyczność całego Linuksa nie przestanie mnie zadziwiać xD. Już myślałem że szczytem jest uruchomienie dwóch kursorów przy podpiętych dwóch myszach do komputera xD
edek; dabl kursor
dobra, pokazuje jeden ale wierzycie mi na słowo że są dwa xD
Ostatnio edytowany przez lis6502 (2016-01-17 13:38:25)
Offline
Teraz zdałem sobie sprawę z tego, że przecież kombo alt+RMB resize'uje okna ;_; czyli pozbawiłem się jednej z przydatniejszych opcji :> Szkoda że ten mouseemu nie chce za chiny u mnie działać ;/
Anyway, dla potomniastych zamieszczam xorg.confa
Section "InputClass" Identifier "Kotowy skrol" Driver "evdev" Option "EmulateWheel" "True" Option "EmulateWheelButton" "3" Option "YAxisMapping" "4 5" Option "XAxisMapping" "6 7" MatchProduct "Kensington USB/PS2 Orbit" EndSection
Offline
Ja mam troszeczkę inaczej, bo u mnie dziwne bugi się zaczęły pojawiać po implementacji tej emulacji:
Section "InputClass" Identifier "A4Tech USB Mouse" Driver "evdev" MatchIsPointer "yes" MatchDevicePath "/dev/input/event*" MatchProduct "USB" MatchVendor "A4Tech|Logitech" Option "Name" "A4Tech USB Mouse" Option "AccelerationNumerator" "2" Option "AccelerationDenominator" "1" Option "AccelerationThreshold" "4" Option "ButtonMapping" "1 2 3 4 5 6 7 8 9 10 11 12" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" # Option "SwapAxes" "on" # Option "InvertX" "on" # Option "InvertY" "on" Option "EmulateThirdButton" "on" Option "EmulateThirdButtonButton" "2" Option "EmulateThirdButtonMoveThreshold" "0" Option "EmulateThirdButtonTimeout" "400" Option "EmulateWheel" "1" Option "EmulateWheelButton" "3" EndSection
Poza tym, skąd ci się wziął ALT? U mnie nie trzeba żadnych przycisków na klawiaturze trzymać by ta emulacja działała. xD
Ostatnio edytowany przez morfik (2016-01-17 19:29:46)
Offline