Wie ordne ich die Suchtaste auf meinem Logitech MX400 neu zu?


10

Ich habe eine Logitech MX400 Wireless. Es hat eine Suchschaltfläche, die ich zum Einfügen verwenden möchte (anstelle des extrem empfindlichen, aber schwer zu drückenden Scrollrads). Ich habe bereits andere Schaltflächen mit xbindkeys neu zugeordnet und xev verwendet, um den Tastendruckcode zu finden, aber dies funktioniert nicht für die Suchtaste. Wenn ich xev benutze und auf die Suchschaltfläche klicke, erhalte ich die folgenden Ereignisse

FocusOut event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  4294967275 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
    atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue

Keine ButtonPress-Ereignisse. Es scheint, dass die Suchschaltfläche auf einer Ebene unterhalb der X-Ereignisse abgefangen wird. Irgendwelche Ideen? Ich habe Ubuntu 12.04. Ubuntu sieht den Klick tatsächlich und erzeugt einen Suchdialog, aber es gibt keine Spur eines Klickereignisses im xev.

Bearbeiten

Ich habe die mit xmodmap bereitgestellte Methode überprüft. Mein .Xmodmapenthält jetzt die folgende Zeile

keycode 225 = XF86Paste NoSymbol XF86Paste``

Wenn Sie xmodmap ~/.Xmodmapjetzt laufen, wird die Schaltfläche vollständig deaktiviert (oder zumindest erhalte ich kein Ergebnis, wenn Sie darauf drücken). Ich habe es versucht xmodmap -pkeund es wird ausgedruckt:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

Seltsam genug. Alle anderen Einträge sind ähnlich formatiert. Ich bin nah an der Lösung, aber es gibt immer noch etwas Seltsames.

Bearbeiten 2

Ich habe versucht, xinput auszuführen (noch nie von diesem Befehl gehört. Erstaunliches Zeug). Es gibt zwei Einträge für Logitech. Hier ist die Ausgabe der Auflistung jedes von ihnen (ID 9 und 10)

Logitech USB Receiver                       id=9    [slave  pointer  (2)]
    Reporting 7 classes:
        Class originated from: 9. Type: XIButtonClass
        Buttons supported: 24
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
        Button state:
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 3
          type: 1 (vertical)
          increment: -1.000000
          flags: 0x2 ( preferred )


Logitech USB Receiver                       id=10   [slave  pointer  (2)]
    Reporting 6 classes:
        Class originated from: 10. Type: XIButtonClass
        Buttons supported: 7
        Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
        Button state:
        Class originated from: 10. Type: XIKeyClass
        Keycodes supported: 248
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0

Das Testgerät 9 macht nichts mit der Taste. Das Testen von Gerät 10 funktioniert stattdessen, und dies ist die Ausgabe, wenn ich klicke

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225

Es scheint also, dass die Maus in dieser Hinsicht als Tastatur fungiert, aber aus irgendeinem Grund tut xmodmap nichts, wenn sie die Taste 225 empfängt.

** Bearbeiten **

Ich kann das Hinzufügen von keycode 225 = aAusdrucken ajedes Mal bestätigen, wenn ich auf die Schaltfläche klicke. Das Problem scheint also damit zu tun zu haben, wie XF86Paste tatsächlich behandelt wird. Ich sende es, aber es wird nicht eingefügt.


Sie haben xbindkeysfestgelegt, dass es beim Start ausgeführt werden soll, oder? Können Sie es deaktivieren und erneut versuchen?
Seth

@iSeth: xbindkeys getötet. Wieder versucht, das gleiche Ergebnis.
Stefano Borini

Öffnen Sie ein Terminal und führen Sie tail -f /var/log/dmesges aus. Drücken Sie dann die Taste. Erhalten Sie eine Ausgabe, die sich auf Tasten bezieht?
Seth

1
Bevor Sie eine weitere unsinnige Antwort veröffentlichen ... ermitteln Sie die Eingabe-ID Ihrer Maus mit xinput listund ermitteln Sie dann den Schaltflächencode Ihres Suchschlüssels mit xinput test <MOUSE ID>. Funktioniert das?
Mrcktz

1
Es scheint einen bestätigten Fehler zu geben , mit dem xevdie XF86Paste / XF86Copy-Ereignisse angezeigt werden können, aber es passiert nichts. Das bedeutet, dass Sie zum Einfügen die Tastenkombination STRG + v verwenden müssen. Xmodmap ordnet die Schaltflächen 1: 1 zu, aber Sie können die Einstellungen für Tastaturkürzel verwenden, um die Ausführung eines Befehls beim Tastendruck auszulösen (siehe meine Antwort).
Mrcktz

Antworten:


3

Um Tastaturereignisse zu simulieren, empfehle ich Ihnen das großartige Tool xdotoolInstallieren Sie xdotool .

1. Installationxdotool über Terminal ( CTRL+ ALT+ T):

sudo apt-get install xdotool

oder nutzen Sie das Software CenterInstallieren Sie xdotool .

2. Erstellen Sie ein Skript , das xdotool verwendet, um die Key-Down-Ereignisse von CTRLund zu emulieren v. Im Terminal:

mkdir -p ~/bin  
gedit ~/bin/fakepaste

Kopieren Sie den folgenden Inhalt in das sich öffnende Editorfenster. Speichern Sie den Code nach dem Kopieren und schließen Sie ihn:

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF

Machen Sie das Skript nun ausführbar:

chmod +x ~/bin/fakepaste

3. Melden Sie sich ab und wieder an, um Ihren PATH neu zu laden .

4. Erstellen Sie die benutzerdefinierte Verknüpfung

Gehe zu System Settings, dann gehe zu Keyboard, dann Shortcuts.

Drücken Sie die +Taste am unteren Rand des Dialogfelds. Geben Sie einen Namen für die Verknüpfung ein, die Sie erstellen möchten, und geben Sie für den Befehl Folgendes ein : fakepaste. Drücken Sie OK.

Neben Ihrer neuen Verknüpfung sehen Sie disabled. Klicken Sie auf diesen Text und drücken Sie dann die Taste, die Sie Ihrer Tastaturemulation zuweisen möchten.

Sie sollten jetzt in der Lage sein, Ihren Suchschlüssel zum Einfügen zu verwenden!


1
Ich sehe nicht, wie dies auf einer Maustaste helfen wird, es ändert Tastaturkürzel .
Seth

2
@iSeth: Der Punkt ist, dass sich herausstellte, dass die Logitech-Maus sowohl eine Tastatur als auch eine Maus ist. Es ist eine Maus für alles außer der Suchtaste, wo sie sich wie eine Tastatur
verhält

2

xbindkeys Lösung mit xdotool

Für diese Lösung benötigen Sie xbindkeysundxdotool

Töte xbindkeys und speichere deine Button-Konfiguration

killall xbindkeys

und

xbindkeys --defaults >> ~/.xbindkeysrc

Fügen Sie Ihre neuen Bindungen hinzu

Jetzt können Sie diese Datei ändern, um benutzerdefinierte Bindungen hinzuzufügen. Diese haben das Formular

"<command>"
  <key combination>

Also, wenn Sie hinzufügen

"gedit"
  m:0x0 +b:4

Sie werden geditjedes Mal geöffnet, wenn Sie nach oben scrollen.

Jetzt können Sie eine der folgenden Möglichkeiten ausprobieren und diejenige auswählen, die für Sie am besten geeignet ist. In jedem Fall xdotool click 2wird emuliert, dies ist das Drücken der mittleren Maustaste, und dies fügt sowohl interne als auch externe Terminals ein.

  1. Fangen Sie den 225 mit Ihrer Maus ab :

    "xdotool click 2"
      m:0x0 +b:225
    
  2. Intercept Keycode 225 im Allgemeinen :

    "xdotool click 2"
      c:225
    
  3. Ersetzen Sie alle XF86SearchEreignisse (setzen Sie zuerst Ihre Mauseinstellungen auf die ursprünglichen Einstellungen zurück, damit Sie die XF86SearchRückseite erhalten):

    "xdotool click 2"
      XF86Search
    

Starten Sie xbindkeys und testen Sie

Lauf

xbindkeys

und sehen, ob es funktioniert.


Ich möchte Sie wissen lassen, dass ich denke, dass Sie beide das Kopfgeld verdienen, da Sie mir sehr geholfen haben. Ich weiß immer noch nicht, ob Ihre Lösungen funktionieren, ich werde sie morgen testen, aber das Kopfgeld läuft ab und ich möchte nicht, dass es verschwendet wird. Sobald ich genug Punkte habe, werde ich Ihnen das gleiche Kopfgeld gewähren. Danke
Stefano Borini

Oke, danke (obwohl ich nicht weiß, ob das möglich ist). Freut mich zu helfen;)
Gerhard Burger

Ähm ... du hast recht. Ich kann hier nur einen vergeben. Mach dir keine Sorgen, sobald ich genug Repräsentanten habe, werde ich dir eine deiner anderen Antworten geben.
Stefano Borini

Nein, nein, mach dir keine Sorgen. Mir geht es ganz gut;)
Gerhard Burger
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.