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/.
Strony: 1
Jak w temacie.
Chciałbym zablokować możliwość wklejania po wciśnięciu środkowego klawisza (kółka znaczy). Nie chodzi mi tu o zablokowanie środkowego klawisza (bo to trywialne) ale wyłącznie o zablokowanie wklejenia. Powód: często zdarza mi się, że przy kręceniu kółkiem przypadkowo toto wcisnę, a moja ulubiona myszka ma bardzo czuły prztyczek... a chciałbym zachować resztę przydatnych funkcji.
XFCE, Ubuntu 20.04.
Ktoś coś?
Ostatnio edytowany przez ethanak (2021-09-19 21:18:21)
Offline
Nigdy się nad tym nie zastawiałem, mimo używania myszy o różnych czułościach.
Tu podobno to rozwiązali:
https://forum.mxlinux.org/viewtopic.php?t=61432
Ale autor jakiś taki „roztrzepany”?
W Debianie jest program imwheel, ale nie sprawdzałem go:
https://manpages.debian.org/buster/imwheel/imwheel.1.en.html
Ostatnio edytowany przez fnmirk (2021-09-16 14:57:21)
Offline
Trzeba poszukać za frazami "primary clipboard" , bo to on odpowiada za ten schowek przy zaznaczaniu myszką. Pewnie można by bez problemu odszukać numerek przycisku myszki i stosowna regułkę dla udev'a napisać, by odmapować ten przycisk -- mniej więcej tak jak to się robi z mapowaniem klawiszy klawiatury. xD
Ostatnio edytowany przez morfik (2021-09-16 19:50:49)
Offline
Wygląda na to, że tylko środowiska pokroju GNOME/KDE oferują tego typu funkcjonalność. W przypadku innych trzeba najwyraźniej paczować biblioteki gtk/qt, bo one tego w standardzie nie oferują.
Można by też tak w skrypcie uruchomionym w tle: xD
$ while true; do echo -n | xsel -n -i && sleep 0.1; done
Ostatnio edytowany przez morfik (2021-09-16 21:30:10)
Offline
Ech... liczyłem na jakiś koszerny sposób :(
Co do skryptu wpadłem właśnie na (chyba) lepszy pomysł: skrypt w pythonie który przez evdev przejmuje myszkę, i przepuszcza MMB tylko wtedy, gdy jakiś czas wcześniej nie było eventu od kółka, ewentualnie opóźnia event i przepuszcza tylko wtedy, gdy zaraz po nim nie było kółka.
Mam coś podobnego do mapowania klawiatury numerycznej na polecenia OpenSCAD-a, sprawdza się jak na razie, jutro spróbuję z tym co wymyśliłem - jak wyjdzie (albo nie) to dam znać.
A, co do posta z mxlinux , czytałem to już wcześniej, wszystko się sprowadziło do włączania/wyłączania MMB ręcznie, co mi absolutnie nie pasi.
Ostatnio edytowany przez ethanak (2021-09-17 12:35:11)
Offline
A próbowałeś zwyczajnie zmienić sposób trzymania myszy? Zacząłem się nad tym zastanawiać i zauważyłem u siebie ciekawe zjawisko.
Kiedy obsługuję kółko paliczkiem palca środkowego to mi się coś takiego z tym wklejaniem przytrafia.
Jednak przez większość czasu (właściwie to chyba przez cały czas) obsługuję kółko myszy opuszką palca środkowego i wtedy palec nie znajduje się nad mikroprzełącznikiem i go nie naciska. Chcąc go nacisnąć lekko przesuwam palec do przodu.
Offline
Wiesz - po prawie 40 latach używania myszek różnej maści jakoś trudno zmienić przyzwyczajenia :)
Poza tym mogę równie dobrze uważać żeby nie nacisnąć. Oba rozwiązania są tyle samo warte.
Takie dwa trudne słowa: usability i ergonomia.
Offline
Wspominałem o zmianie uchwytu myszy, bo przypomniałem sobie o tym, że mnie to przeszkadzało kiedy pojawiły się pierwsze myszy z kółkiem w win98.
Tam można to było wyłączyć, a jak się zapomniało to po naciśnięciu kółka można było stracić nawet dokument bo potrafił zniknąć poza ekranem, zanim zdążyło się zareagować. I wtedy pewnie przetrenowałem to przewijanie, bez naciskania. I robię to już podświadomie.
I dlatego zdziwiło mnie Twoje pytanie bo ja inaczej obsługuję kółko. A myszy dużo używam w programach graficznych.
PS W każdym wieku można zacząć trenować.
Ostatnio edytowany przez fnmirk (2021-09-17 15:47:28)
Offline
Masz znalazłem coś takiego:
https://linuxhint.com/change_mouse_touchpad_settings_xinput_linux/
https://www.mankier.com/4/libinput#Configuration_Details
Jedna moja mysz z dwoma kółkami, próbuję to uskutecznić:
xinput --list-props 9 Device 'A4Tech PS/2+USB Mouse': Device Enabled (173): 1 Coordinate Transformation Matrix (175): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Natural Scrolling Enabled (310): 0 libinput Natural Scrolling Enabled Default (311): 0 libinput Scroll Methods Available (312): 0, 0, 1 libinput Scroll Method Enabled (313): 0, 0, 0 libinput Scroll Method Enabled Default (314): 0, 0, 0 libinput Button Scrolling Button (315): 2 libinput Button Scrolling Button Default (316): 2 libinput Middle Emulation Enabled (317): 0 libinput Middle Emulation Enabled Default (318): 0 libinput Accel Speed (319): 0.000000 libinput Accel Speed Default (320): 0.000000 libinput Accel Profiles Available (321): 1, 1 libinput Accel Profile Enabled (322): 1, 0 libinput Accel Profile Enabled Default (323): 1, 0 libinput Left Handed Enabled (324): 0 libinput Left Handed Enabled Default (325): 0 libinput Send Events Modes Available (295): 1, 0 libinput Send Events Mode Enabled (296): 0, 0 libinput Send Events Mode Enabled Default (297): 0, 0 Device Node (298): "/dev/input/event5" Device Product ID (299): 2522, 6 libinput Drag Lock Buttons (326): <no items> libinput Horizontal Scroll Enabled (327): 1
Offline
No tal, ale przez xinput mogę co najwyżej wyłączyć MMB, a nie konkretną funkcję wklejania.
Próbowałem najprostszego rozwiązania: wyłączenia MMB z mapy i włączenia emulacji
O ile wyłącza się ślicznie - o tyle emulacja nie działa z przyczyn że nie:(
Niestety nie zdążyłem dzisiaj z tym skryptem o którym pisałem (zagonili do roboty), ale pomysł mi się podoba... może jutro się wyrobię.
Offline
Skrypcik w pythonie działa dokładnie tak jak trzeba - nie przepuszcza eventu MMB wcześniej niż sekundę po ostatnim wykrytym ruchu kółka, a i tak przepuszcza go dopiero (opóźnia), jeśli w ciągu sekundy nie zostało wykryte kółko lub został wykryty ruch myszy.
Muszę z niego tylko printy powyrzucać i umieścić gdzieś w autostarcie. No i ocztywiście ta sekunda to taka trochę prowizoryczna...
#!/usr/bin/env python3 import evdev, time, select from evdev import ecodes import fcntl fh=open(__file__,'r') try: fcntl.flock(fh,fcntl.LOCK_EX|fcntl.LOCK_NB) except: exit(0) def getEvDevMouse(): for fn in evdev.list_devices(): dev=evdev.InputDevice(fn) capa=dev.capabilities(absinfo=False) if capa.get(ecodes.EV_REL): return dev return None mouse = getEvDevMouse() if not mouse: exit(1) ui = evdev.UInput.from_device(mouse) if not ui: exit(1) mouse.grab() ctrl = 0 last_timestamp = 0 kev_timestamp = 0 pending=[0,0] def pend(now): if not now and pending[1] > 0 and pending[1] > time.time() - 1: return if pending[1]: ui.write(ecodes.EV_KEY, ecodes.BTN_MIDDLE, 1) pending[1] = 0 ui.syn() if pending[0]: time.sleep(0.1) ui.write(ecodes.EV_KEY, ecodes.BTN_MIDDLE, 0) pending[0] = 0 ui.syn() while True: r,w,s = select.select([mouse.fd],[],[],0.1) ui.syn() if r: locked = False eve=mouse.read() for ev in eve: if not ev: break kev = evdev.categorize(ev) if isinstance(kev, evdev.KeyEvent): keycode = kev.keycode keystate = kev.keystate if kev.keycode == 'BTN_MIDDLE': if last_timestamp > ev.timestamp()-2: if kev.keystate: locked=True else: if kev.keystate: pending[1]=ev.timestamp() locked=True elif pending[1]: pending[0]=ev.timestamp() locked=True kev_timestamp = ev.timestamp() if isinstance(kev, evdev.RelEvent): if ev.code == 8: last_timestamp = ev.timestamp() pending[0]=0 pending[1]=0 kev_timestamp = 0 elif ev.code != 11: pend(True) if not locked: pend(False) ui.write_event(ev) ui.syn() else: locked = False pend(False) mouse.ungrab() exit(0)
Ostatnio edytowany przez ethanak (2021-09-19 21:44:09)
Offline
Masz pan wymagania. Nie wypowiem się odnośnie skryptu bo nie znam pythona. Jak sprawdzę to przedstawię jakieś wyniki.
Offline
Strony: 1