Linux Mittelklick durch physische Taste(nkombo) emulieren

Linux Betriebssystem

Ambrosius

Rather active member
Themenstarter
Registriert
23 Juni 2022
Beiträge
1.863
Gibt es einen Weg den Mittelklick der Maus durch eine beliebige Taste oder Tastenanordnung zu emulieren? (Wayland als auch Xorg wären hierbei gleichermaßen intressant)

Hintergrund ist nämlich der, dass ich exzessiv von der primären Zwischenablage "Auswahl" Gebrauch machen und mich immer wieder mit dem Umtand konfrontiert sehe, dass ich ganz fix die Auswahl in einem anderen Fenster/Programm einfügen möchte, aber ich erst die Zeige-Cursor an die richtige Stelle heranführen muss, was total unnötig ist, wo der Text-Cursor eh schon empfangsbereit an der richtigen Stelle platziert ist. Dabei kommt es manchmal echt auf Präzision an. Wie oft habe ich den Text falsch eingefügt, weil ich den Cursor mit meinen Wurstfingern wieder eine Zeile zu weit unten oder weiss der Geier wo platziert habe.

Was sich jetzt so bissi nach 1.Welt-Problem anhört ist allerdings im Alltag echt ein Ärgernis. Ihr kennt das Problem sicher auch und mich würde interessieren, ob dafür jemand einen Workaround hat. Das einzige was mir einfiele wäre die primäre und die sekundäre Zwischenablage zu synchronisieren, aber damit würde mir ein anderes Feature wiederum abhanden gehen und das fänd ich schade.
 
Lösung
Kann es aber sein, dass da ein Typo ist xdott..
Ja, das war ein Typo. Ich hatte zwar das alte Notebook neben mir zu stehen, den Beitrag selbst schrieb ich aber vom Desktop-PC. Und da habe ich es falsch abgetippt.
Ich habe meinen letzten Beitrag korrigiert.

Nun tatsächlich von Notebook:
Würd es also reichen, wenn ich keycode 20 als Auslöser für den Mittelklick konfiguriere, in etwa so:

"xdotool click 2"
keycode 21[/code]
xbindkeys arbeitet mit Keysyms, nicht mit Keycodes. Das funktioniert so also nicht. Und wenn du einen Keysym nutzt, der ein Zeichen erzeugt (z.B. "ß"), dann beißt sich das mit xdotool.
Du müsstest also zunächst den Keysym der Taste neu definieren, z.B so :
Code:
xmodmap -e "keycode 20 = XF86Finance"
(Die...
Entweder "xbindkeys" + "xdotool" oder "xmodmap" ... hier ein beispiel aus meiner .xinitrc:
# Capslock --> HYPER_L
# PAUSE | Windows --> λ
# xmodmap -pke
(
sleep 20
setxkbmap -option caps:none
xmodmap -pm | tr -d ',' | sed 's#[(][^()]*[)]##g'|\
awk '/mod[2345]/ {if (NF>=2) { for (i=2; i<=NF; i++) { print "remove " $1 " =
xmodmap -
xmodmap - << XXX
keycode 66 = Greek_lambda
keycode 127 = Greek_lambda
keycode 133 = Hyper_L
XXX
) &
 
Kann ich das auch in meiner .xsessionrc einfügen?

und auf welche Taste hast du es umgemappt? Capslock?
 
Da ich seit 5 Wochen auch Linuxe (2 ältere Testmaschinen mit verschiedenen Distros) und mitten in der Lernphase bin, lese ich hier mal interessiert mit ... (y)
 
Der Vollständigkeit halber noch die Alternativlösung:
Entweder "xbindkeys" + "xdotool"
Der Vor-Vorgänger meines X250 hat keine dritte Touchpad-Taste, dafür aber ein paar nutzlose Multimediatasten, von denen ich eine auf den Mittelclick gemappt habe:
Code:
$ cat ~/.xbindkeysrc
"xdotool click 2"
   XF86AudioMedia
 
Zuletzt bearbeitet:
Der Vollständigkeit halber noch die Alternativlösung:

Der Vor-Vorgänger meines X250 hat keine dritte Touchpad-Taste, dafür aber ein paar nutzlose Multimediatasten, von denen ich eine auf den Mittelclick gemappt habe:
Code:
$ cat ~/.xbindkeysrc
"xdottool click 2"
   XF86AudioMedia
Klasse, das sieht vielversprechend aus. Kann es aber sein, dass da ein Typo ist xdott..
Jup, kannst du in deine .xsessionrc einbauen. Im Beispiel hab' ich "CapsLock" auf "λ" gemapt.

Für Keys nach Mousebuttons nimmst du am einfachsten "xbindkeys", hier ein "Tutorial": https://askubuntu.com/questions/624756/how-can-i-map-keyboard-buttons-to-my-mouse-buttons

Alternative geht über X11 Mouse Keys aka Mousemulation über Numblock, siehe 3.4 hier: https://wiki.archlinux.org/title/Xorg/Keyboard_configuration - ist aber ein bischen haarig.
Das sieht in der Tat nach etwas aus.

Es geht mir aber um den umgekehrten Weg, den Mittelklick mit einer Taste auslösen. So wie es hikaru geschrieben hat, könnte es klappen, allerdings hat es im ersten Durchgang bei mir nicht geklappt.

xev gib bei der ß-Taste folgendes aus:

Code:
KeyRelease event, serial 40, synthetic NO, window 0x3c00001,
    root 0x126, subw 0x0, time 30525639, (119,112), root:(670,417),
    state 0x0, keycode 20 (keysym 0xdf, ssharp), same_screen YES,
    XLookupString gives 2 bytes: (c3 9f) "ß"
    XFilterEvent returns: False

Würd es also reichen, wenn ich keycode 20 als Auslöser für den Mittelklick konfiguriere, in etwa so:

"xdotool click 2"
keycode 21[/code]

Außerdem sind die Einschübe mit drei Leerzeichen korrekt?
 
Kann es aber sein, dass da ein Typo ist xdott..
Ja, das war ein Typo. Ich hatte zwar das alte Notebook neben mir zu stehen, den Beitrag selbst schrieb ich aber vom Desktop-PC. Und da habe ich es falsch abgetippt.
Ich habe meinen letzten Beitrag korrigiert.

Nun tatsächlich von Notebook:
Würd es also reichen, wenn ich keycode 20 als Auslöser für den Mittelklick konfiguriere, in etwa so:

"xdotool click 2"
keycode 21[/code]
xbindkeys arbeitet mit Keysyms, nicht mit Keycodes. Das funktioniert so also nicht. Und wenn du einen Keysym nutzt, der ein Zeichen erzeugt (z.B. "ß"), dann beißt sich das mit xdotool.
Du müsstest also zunächst den Keysym der Taste neu definieren, z.B so :
Code:
xmodmap -e "keycode 20 = XF86Finance"
(Die "ß"-Taste hat bei mir auf beiden Rechnern Keycode 20, nicht 21. "XF86Finance" ist ein beliebiger Keysym ohne Ausgabe, der mir beim Aufruf von "xmodmap -pke" über den Weg lief.)

Dann kannst du mit xbindkeys und xdotool weitermachen:
Code:
"xdotool click 2"
  XF86Finance

Außerdem sind die Einschübe mit drei Leerzeichen korrekt?
Traditionell sind es zwei Leerzeichen. Aber es spielt im Endeffekt keine Rolle.
 
Lösung
Traditionell sind es zwei Leerzeichen. Aber es spielt im Endeffekt keine Rolle.
einrückungen gleich welcher Art dienen nur der lesbarkeit für menschen. das programm selbst interessiert das nicht die bohne ;)

BTW: Bei mir wird eine ähnliche Funktion mit der relativ überflüssigen Caps Lock-Taste ausgeführt. Also wenn sich mensch fragt, welche Taste für die Kombi herhalten sollte - Caps Lock is einge großartige Option. is auch schneller erreichbar als z.B. Print/Break.

cu, w0lf.
 
Also wenn sich mensch fragt, welche Taste für die Kombi herhalten sollte - Caps Lock is einge großartige Option. is auch schneller erreichbar als z.B. Print/Break.
Du gehörst der Church of Emacs an, oder? Anhänger des Cult of vi haben auf CapsLock längst Esc gemappt. ;)

Etwas ernsthafter, nochmal zurück zur Ausgangslage:
Hintergrund ist nämlich der, dass ich exzessiv von der primären Zwischenablage "Auswahl" Gebrauch machen und mich immer wieder mit dem Umtand konfrontiert sehe, dass ich ganz fix die Auswahl in einem anderen Fenster/Programm einfügen möchte, aber ich erst die Zeige-Cursor an die richtige Stelle heranführen muss, was total unnötig ist, wo der Text-Cursor eh schon empfangsbereit an der richtigen Stelle platziert ist.
Dieses Problem wirst du, so wie hier behandelt, nicht lösen können. Der primäre Puffer wird immer an der Position des Mauscursors eingefügt, egal ob du diese Aktion durch einen tatsächlichen Mittelklick ausführst oder nicht.

Mit xdotool lässt sich auch die Position des Mauscursors manipulieren, was ein Ansatz für einen Workaround sein könnte. Aber mir ist keine Methode bekannt, die Position des Textcursors zu ermitteln.
 
Du gehörst der Church of Emacs an, oder? Anhänger des Cult of vi haben auf CapsLock längst Esc gemappt. ;)
nein. ich gehöre keinem christlichen Glaubensbekenntnis an. Ich bin Teil des nano- und Geany-Kultes :D

noch schlimmer, Caps Lock fungiert bei mir als "Menü"-Taste bzw. "rechte Maustaste => Kontextmenü öffnen"-Taste. Die ich nur für SSH-Sessions benötige :D
Mit xdotool lässt sich auch die Position des Mauscursors manipulieren, was ein Ansatz für einen Workaround sein könnte. Aber mir ist keine Methode bekannt, die Position des Textcursors zu ermitteln.
also, Stack Exchange is voll damit. Die Antwort lautet: Jain. Hängt vom Programm und Desktop Environment ab. In nem Terminal wohl relativ trivial, mit X - oder noch schlimmer, Wayland - ists augenscheinlich sehr vom benutzten Programm abhängig.

Wenn der OP das nur mit bestimmten Programmen macht, z.B. von Firefox in einen Editor, ließe sich womöglich eine sinnvolle Möglichkeit finden. Generisch? Tja.

cu, w0lf.
 
"XF86Finance" ist ein beliebiger Keysym ohne Ausgabe, der mir beim Aufruf von "xmodmap -pke" über den Weg lief.)
top, das war der rauchende Colt.
Ich hab die Taste Finance, wohl nicht gerade überraschend kommend, auch und hab das mal fix umgemapped. Es funktioniert zwar, aber nur bedingt.

Code:
xmodmap -e "keycode 20 = XF86Finance"
Das Ummapping muss irgendwie persistent geschehen, sonst wird es wieder vergessen.

Das Kernproblem aber bleibt bestehen. Wenn ich die umgemappedte Taste drücke, dann wird der zuvor ausgewählte Text dort eingefügt wo sich der Mauscursor befindet und nicht da wo der Textcursor ist.

Hier ein Bild um es zu verdeutlichen

Bildschirmfoto_20251117_202049.png

Der blinkende Textcursor war zuvor auf Zeile 1 und in der Theorie sollte er den Text ("wieder vergessen") dort einfügen, wenn ich die ß oder CapsLock Taste drücke. In der Praxis fügt er den Text aber dort ein wo der Mauscursor verortet ist, d.h. Zeile 22.

Damit hab ich zwar eine Taste umgemapped mit der ich die Auswahl per Tastendruck einfügen kann, aber unterm Strich hab ich nichts gewonnen, weil ich trotzdem die Maus dorthin bewegen muss, wo ich den Text einfügen möchte.

Es nützt ja alles nix, dann muss ich wohl das Handtuch werfen. Wie gesagt, First World Problems :cautious:
Beitrag automatisch zusammengeführt:

Dieses Problem wirst du, so wie hier behandelt, nicht lösen können. Der primäre Puffer wird immer an der Position des Mauscursors eingefügt, egal ob du diese Aktion durch einen tatsächlichen Mittelklick ausführst oder nicht.
Stimmt genau. Hab das gerade überlesen.
Beitrag automatisch zusammengeführt:

Teil des nano- und Geany-Kultes
Gerade Geany regt mich deswegen immer auf, wenn ich das immer vorinstalliert notgedrungen öffnen muss. Geany unterstützt z.b. ootb nicht das Einfügen aus dem primären Buffer, was mich rasend macht, da ich das inzwischen intuitiv tue und irgendwo voraussetze.

Caps Lock fungiert bei mir als "Menü"-Taste bzw. "rechte Maustaste => Kontextmenü öffnen"-Taste.
Hast dus mal mit der Taste zwischen Alt Gr und der rechten Str. Taste versucht?

also, Stack Exchange is voll damit. Die Antwort lautet: Jain. Hängt vom Programm und Desktop Environment ab. In nem Terminal wohl relativ trivial, mit X - oder noch schlimmer, Wayland - ists augenscheinlich sehr vom benutzten Programm abhängig.
ja auch richtig, weil es im Terminal auch stets nur eine Zeile gibt. Da nützt es mir aber wenig, da es dann auch egal ist wo ich den Mittelklick auslöse


Danke dennoch für die ganzen wertvollen Tipps und Hinweise. Immer Toll neuen Input zu kriegen. Xorg ist ein richtiger Kaninchenbau, schade dass sich das keiner zutraut in Rust umzuschreiben ;)
 
Zuletzt bearbeitet:
Das Ummapping muss irgendwie persistent geschehen, sonst wird es wieder vergessen.
Um das noch abzuschließen, auch wenn es das eigentliche Problem nicht löst, zwei Möglichkeiten:

1. Das xmodmap-Kommando in den Autostart deiner X-Session eintragen (.xinitrc, oder was auch immer dein DE anbietet).

2. Der etablierte Weg wäre, mit diesem Kommando die aktuelle Konfiguration von xbindkeys in eine Datei zu schreiben:
Code:
xbindkeysrc -pke > ~/.xbindkeysrc
In dieser Datei machst du die nötigen Änderungen, hier also "keycode 20 = XF86Finance" setzen.
Diese Datei lädst du dann:
Code:
xbindleys [-f ~/.xbindkeysrc]
Das Laden passsiert natürlich idealerweise ebenfalls im Autostart, weshalb ich bei nur einer Änderung Variante 1 vorziehen würde.
 
Aber nicht vergessen: manche (wenn nicht alle) DEs laden die Keymap beim Start --> wenn deine Mods vorher geladen werden sind sie nacher Geschichte - deskalb auch das "sleep 20" in meinem Snipplet
 
Gerade Geany regt mich deswegen immer auf, wenn ich das immer vorinstalliert notgedrungen öffnen muss. Geany unterstützt z.b. ootb nicht das Einfügen aus dem primären Buffer, was mich rasend macht, da ich das inzwischen intuitiv tue und irgendwo voraussetze.
interessant, bei mir macht es das komplett problemlos? auch "out of the box".

vtl. ein Problem mit deiner Distro oder Clash mit GTK+ vs. der gewählten Desktop-Umgebung? Kann da nur raten, Hatte noch nie SOLCHE Probleme mit Geany (dagegen: SCSS/Sass-Highlighting geht nicht, weil die zugrunde liegende Highlighting-Bibliothek das auch nicht richtig kann - finde ich viel anstrengender) :)

Nachtrag: Ein kurzer DuckDuckGo fördert irgendwelche asbach-uralten Gnome / GTK-Bugs zutage (z.B. Verweise auf Bugs von 2005 / 2006, mit Tags a la "Closed" oder "Obsolete").

Hast dus mal mit der Taste zwischen Alt Gr und der rechten Str. Taste versucht?
mit der Fn-Taste? Hm .. nein, kein Glück. Liegt wohl daran, dass die dafür nicht gedacht ist. Sprich: Meine Tastatur HAT KEINE "Menü"-Taste :rolleyes:🤷‍♀️

Ich hab sie auch nie vermisst, bis zu dem Zeitpunkt, dass ich in ner SSH-Session mal was copy + pasten wollte.


Ansonsten wie schon gesagt: Von welchem Programm zu welchem Programm?


D.h. wenn du das auf bestimmte Programme eingrenzen kannst, könnte da sogar was machbar sein. Also wenn du z.B. häufig Sachen aus dem Browser in irgendeinen bestimmten Editor kopierst, etwa Firefox zu VS Code. Hinter letzterem steckt i.W. Chromium, weil Electron. Und Firefox is Firefox. Da gibts denke ich genug Ansätze. Das is dann zwar noch nich allgemeingültig, aber immerhin schon mal eine Erleichterung.


Unter Windoof hast du diese ganzen Scherereien ja genauso
Und noch schlimmer, denn da ist das, was unter Unix oder Linux eine harte Trennlinie und Ansage ist, nur eine Richtlinie, an die sich quasi kein Entwickler hält; das fängt schon bei so Basics wie dem verwendeten Character Encoding für Textdateien an, UTF-16 vs. UTF-8, und wird von dort ausgehend immer ekliger und grauenhafter; kein Fass ohne Boden, sondern ein Schwarzes Loch!
.

cu, w0lf.
 
  • ok1.de
  • IT Refresh - IT Teile & mehr
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben