Frage Wie ordne ich bestimmte Schlüssel oder Geräte neu zu?


Ich suche nach einer Möglichkeit, bestimmte Schlüssel in Ubuntu neu zuzuordnen.

d.h.

Ich würde mich gerne ändern Bild auf zu Zuhause oder PgDown zu Ende.

Verfügt ein eingebauter Befehl oder ein Tool über Schlüssel in Ubuntu / GNOME?


214
2018-02-05 13:20


Ursprung


Kasse meine Antwort Hier. Es lohnt sich nicht, dieselbe Antwort zu kopieren und einzufügen. Vielleicht würde es dir helfen. - Rahul Virpara
Irgendwelche Emacs-artigen Bindungen hier für CTRL-P / N für Einheitsschritte? - Léo Léopold Hertz 준영
Seit einiger Zeit xmodmap ist entzogen! um eine systemweite Einstellung zu erhalten, die Sie verwenden müssen xkb. Bearbeiten Sie die Sprachdatei in /usr/share/X11/xkb/symbols/ um deine Änderungen dort hinzuzufügen. Sehen askubuntu.com/a/898462/34298 - rubo77


Antworten:


Beachten: Ab 2013 werden Ubuntu und Derivate nicht mehr verwendet xmodmap, sondern stattdessen verwenden xkb. Für weitere Informationen siehe diese Antwort. Die folgende Antwort ist für aktuelle Releases nicht mehr relevant.


Zum Umordnen bestimmter Schlüssel benötigen Sie zwei Werkzeuge. Zuerst xev (Befehlszeilentool) und zweitens xmodmap (auch Befehlszeilentool). Beide sollten in Ubuntu verfügbar sein, ohne sie extra zu installieren.

  1. Starten Sie das Terminalfenster und führen Sie es aus xev. Jetzt ist es aktiv und wartet darauf, dass Sie eine Taste drücken. Drücken Sie dann die Taste, deren Verhalten Sie ändern möchten. d.h. Bild auf.

  2. xev gibt einige Informationen über die gedrückte Taste aus. Die dritte Zeile ist wichtig. Es sollte ähnlich aussehen:

    state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
    

    in diesem Beispiel Prior ist der Name des Verhaltens, dem der Schlüssel im Moment zugeordnet ist, der Zahlenschlüsselcode ist die interne ID, um den Schlüssel zu erkennen. Tue dies jetzt mit einem anderen Schlüssel, d.h. PgDown gib diese Ausgabe

    state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
    

    Auch hier ist der interessante Teil für uns keycode 115 und Next - Der Name des Verhaltens.

  3. Jetzt wenn Sie die zwei Schlüssel tauschen möchten, verwenden Sie xmodmap.

     xmodmap -e "keycode 110 = Next"
    

    Dies ändert den Schlüssel mit Keycode 110 auf Ihrer Tastatur zur Aktion Next. Es ist ziemlich einfach.

    Beachten Sie, dass der Schlüssel, den Sie zuordnen, eine andere Bedeutung haben sollte, wenn Sie ihn verwenden Verschiebung Schlüssel (zum Beispiel für britische Tastaturlayouts, Verschiebung+2 gibt Anführungszeichen), dann können Sie einfach den sekundären Befehl nach dem ersten auflisten. Wenn Sie beispielsweise möchten, dass der Schlüssel mit Code 53 normalerweise auf den umgekehrten Schrägstrich abgebildet wird, aber auf das Taktsymbol, wenn Sie ihn mit shift verwenden, können Sie Folgendes tun:

     xmodmap -e "keycode 53 = backslash bar"
    

Zusätzliche Information: Die Reihenfolge dieser Abbildungen ist Schlüssel, Umschalttaste + Taste, mode_switch + Schlüssel, mode_switch + Shift + Taste, AltGr + Taste, AltGr + Umschalt + Taste. Überspringen einer Spalte verwenden NoSymbol. Außerdem, Hier ist eine umfassende Liste aller Keysyms.

Hinweis: Diese Änderungen gelten nur für die aktive X-Sitzung und gehen nach dem Neustart verloren. Wenn Sie die Änderungen dauerhaft speichern möchten, müssen Sie die folgenden Befehle nach den obigen ausführen:

xmodmap -pke >~/.Xmodmap

(Es erstellt eine Datei mit dem Namen .Xmodmap in Ihrem Home-Verzeichnis (~))

Dann müssen Sie eine Datei namens erstellen .xinitrc in Ihrem Home-Verzeichnis, in dem Sie den Befehl eingeben xmodmap .Xmodmap im.

Sie können jetzt ändern .Xmodmap und Renn xmodmap .Xmodmap von der Konsole, um die Änderungen sofort zu sehen. Die Änderungen in .Xmodmap wird bestehen bleiben.

Quelle: Ubuntu Foruns

Bonus Sachen:

Wenn der Schlüssel, den Sie neu zuordnen, abhängig von einem Status ein anderes Verhalten aufweist ( wie die Tasten in der numerischen Tastatur von NumLock abhängen) müssen Sie einfach tun xmodmap -pmum eine Liste von Modifikatoren zu erhalten und dann:

xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"

Angenommen, Sie möchten einen Punkt anstelle eines Kommas auf der numerischen Tastatur erhalten (nützlich für die meisten Programmierer), aber Sie möchten das Verhalten "Löschen" beibehalten, wenn NumLock deaktiviert ist.

xmodmap -e "keycode 91 mod2 = KP_Delete period"

mod2, weil xmodmap -pm sagt uns das mod2 ist Num_Lock, die anderen Namen werden durch Drücken der Tasten erhalten xev.


233
2017-12-17 18:46



xev ist nicht in der Lage zu fangen Fn Tastendrücke - om-nom-nom
Ich liebte es, wie du alles erklärt hast, anstatt nur die Syntax mit Ersatzstellen herauszuspritzen - Programming Noob
Die ausgewählte Antwort funktionierte nicht, um die Caps-lock-Taste für mich auf Ubuntu 12.10 neu zu ordnen. Ich konnte dies unter Systemeinstellungen -> Tastatur -> Layouteinstellungen -> Optionen erreichen, die eine Liste mit Schlüsseln und alternativen Verhaltensweisen enthält. Arbeitete einwandfrei in Unity und Terminal. - Allyl Isocyanate
Seltsam, ich habe alles gemacht, aber meine Keymappings sind nach dem Neustart immer noch zurückgesetzt. - Costa
Ich glaube nicht, dass ich eine habe -event Flagge in Ubuntu 12.04. Es wirft einen Fehler auf und erwähnt "Ereignis" nicht in man xev. - isomorphismes


Wenn Sie versuchen, eine Umschalttaste zu verschieben, gibt es ein paar zusätzliche Schritte:

 xmodmap -e "keycode 62 = Up" # Shift => Up
 xmodmap -e "keycode 111 = Shift_R" # Up => Shift
 xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
 xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
 xset r 62 # Make the new Up key autorepeat
 xset -r 111 # Prevent the new Shift key from autorepeating

18
2018-02-05 14:04



+1 Die meisten Unix-y Antwort von allen von denen für einen Modifikator (Ich hatte schon so, Weg zurück mit meinem iBook 2, wenn ich wollte, dass die Enter-Taste die Funktion von Control_R haben, aber die Details vergessen hatte). - rbrito
Eine wichtige Antwort für Benutzer, die Tastaturen auf Lenovo Laptops verwenden - Einar Ólafsson


Ich habe gerade einen nachträglichen Einfall gehabt. Ich denke, dass du vielleicht etwas ganz anderes durch "remap" meinst ... aber ich werde meine Antwort so lassen, wie sie ist ... (Ich weiß nicht, wie ich einen Schlüssel neu zuweisen soll verhält sich wie ein anderer)

AKTUALISIEREN: mein 'nachträglicher Einfall' wurde bestätigt; (Ich habe die falsche Frage beantwortet:) ... siehe NES Community Wiki Antwort (oben akzeptiert).

Es gibt zwei allgemeine Möglichkeiten neu zuordnen einen Schlüssel neu binden.

  • lokal zu einem bestimmten Programm
    (Ein Schlüssel kann für verschiedene Dinge in verschiedenen Apps / Fenstern verwendet werden)
  • global für einen bestimmten Benutzer
    (Ein Schlüssel hat in allen Fenstern die gleiche Funktion)

Für "lokal zu einem Programm" -Methoden gibt es manchmal eine Möglichkeit, die Tastenbelegung zu ändern, die von der App selbst angeboten wird ... z.

Firefox hat ein Addon namens Schlüsselkonfiguration ... für einige Infos siehe dies MozillZine Beitrag 

Die meisten Ubuntu-Programme sind Gnome-basiert und es gibt ein spezielles Dienstprogramm, um die Tastatur für jeden Menüpunkt dieser Gnome-Apps zu modifizieren ... Es heißt Editable Menu Accelerator ... Es ist ein sehr "heimeliges" Werkzeug, aber ziemlich mächtig. Sie können es aktivieren, indem Sie laufen gconf-editor (über Terminal oder Alt + F2) ... navigieren Sie zu desktop-gnome-interface und wählen Sie can_change_accels .... Sie können dann Menüpunkte zu virtuellen alles, was Sie wollen (pro Programm / Fenster) ändern ... Ich schlage vor, Sie deaktivieren, sobald Sie getan haben, was Sie brauchen ..

Ansonsten können Sie Globale Hotkeys einrichten. Ich benutze ein Programm namens xbindkeys  Install xbindkeysund es gibt auch eine Option über das Hauptmenü - Einstellungen, aufgerufen Keyboard Shortcuts 

Wenn Sie xbindkeys verwenden, müssen Sie es zu Ihren "Startup Applications" (Hauptmenü - Einstellungen) hinzufügen ... Auch (wie von Stefano Palazzo vorgeschlagen) habe ich zuvor eine ausführlichere Beschreibung von xbindkeys in einer Antwort darauf geschrieben askubuntu Seite


16
2018-01-27 03:04



+1, sehr nett! Ein Vorschlag: Du solltest deine integrieren große Antwort von einer anderen Frage in diesen, vielleicht auch das Konfigurationsformat von xbindkeys ein wenig erklären. - Stefano Palazzo♦
Das Bit über das Zuweisen anderer Schlüssel könnte durch behandelt werden xdotool, schau dir die Manpage an, die ich zum Lösen benutzt habe dieses Problem. - Stefano Palazzo♦
Ich habe kürzlich einen anderen Ansatz mit einem Tool namens xmodmap in Kombination mit einem Tool namens xev gefunden. Ich weiß nicht, was die Unterschiede zwischen xmodmap und xbindkeys sind, aber das funktioniert ziemlich gut für mich. einige Ratschläge mit Werkzeug, um die beiden genannten zu bevorzugen? Hier ist eine sehr hilfreiche Schritt-für-Schritt-Anleitung, die xmodmap und xev beschreibt ubuntuforums.org/showpost.php?p=7675138&postcount=2 - NES
@NES .. Es scheint, dass ich den falschen Punkt adressiert habe. Sie scheinen tatsächlich die Art neu zuordnen zu wollen, wie ein bestimmter Schlüssel vom OS interpretiert wird, dh eine nicht standardmäßige Tastaturinterpretation, während ich auf a verwiesen habe Standard-Tastatur-Interpretation, und einfach überladen die Standard-Tastenbelegungen. (Ich denke, was Sie suchen, ist vergleichbar mit dem Austauschen der linken und rechten Maustaste). Nun, es scheint, dass meine Antwort für die falsche Sache gut war :) - Peter.O
Ja, aber kein Problem. Die Antwort ist auch interessant. Die Schritt für Schritt Anleitung, die ich oben verlinkt hatte, war der richtige Weg. Also werde ich eine kurze Antwort mit der Lösung posten, dass andere Benutzer eine gute Anleitung haben. Danke, Fred - NES


Hier ist, wie ich versucht habe, die Zuordnung der zu ändern EINGEBEN Schlüssel zum VERSCHIEBUNG Schlüssel (und umgekehrt):

$ uname -a

BERICHTE:

Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux

$ which xmodmap

BERICHTE:

/usr/bin/xmodmap

$ which xev

BERICHTE:

/usr/bin/xev

$ xev

(ignoriere die nächsten fünfzig Zeilen oder so)

PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XmbLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
    state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
    state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Was wichtig ist, ist die dritte Zeile jedes Tastendrucks:

FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".

state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".

UMKEHREN SIE DIE KARTE:

$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"

SPEICHERN SIE DIE ERGEBNISSE:

$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc

HINZUFÜGEN

 xmodmap ~/.Xmodmap

$ sudo reboot

Das Hauptproblem war, dass die Umkehrung NICHT funktionierte. Das EINGEBEN Schlüssel wurde dem zugeordnet UMSCHALT_R Schlüssel; aber die UMSCHALT_R Schlüssel wurde nicht zugeordnet EINGEBEN Schlüssel. Stelle dir das vor.


8
2018-01-20 05:30





Um globale Remaps unabhängig von X zu machen, können Sie davon Gebrauch machen Konsolen-Setup (5) stattdessen.

In meinem Fall wollte ich neu zuordnen Feststelltaste Schlüssel zu D, seit mein D-Schlüssel ist kaputt :)

Zuerst habe ich gebraucht Dumpschlüssel (1) um eine Vorlage für ein Mapping zu erhalten, im Falle der D-Schlüssel, das interessante Bit ist das Mapping für Keycode 32 (auf meiner Tastatur); Beachten Sie, dass es im Grep-Muster zwei Leerzeichen gibt!

$ sudo dumpkeys | grep "keycode  32" > tempfile
$ cat tempfile
keycode  32 = +d
    shift   keycode  32 = +D
    altgr   keycode  32 = +eth
    shift   altgr   keycode  32 = +ETH
    control keycode  32 = Control_d
    shift   control keycode  32 = Control_d
    altgr   control keycode  32 = Control_d
    shift   altgr   control keycode  32 = Control_d
(121 lines total...)

Um die Karte für die Anwendung zu ändern Feststelltaste (Keycode 58 auf meiner Tastatur) statt

sed 's/32/58/' -i tempfile

Jetzt liest es

keycode  58 = +d
    shift   keycode  58 = +D
    altgr   keycode  58 = +eth
(etc...)

Um diese Neuzuordnung der Standardzuordnung hinzuzufügen, muss sie einfach an die Remap-Include-Datei für hinzugefügt werden Konsolen-Setup

sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'

und Konsolen-Setup muss neu konfiguriert werden (Fragen mit niedriger Priorität mit überspringen -phigh)

sudo dpkg-reconfigure console-setup -phigh

Jetzt sollte die Neuzuordnung abgeschlossen sein und beim Booten automatisch geladen werden.


6
2017-07-28 12:15





Ich habe einen ganzen Tag damit verbracht, eine Verknüpfung zu erstellen Ctrl+Pageup.

Ich habe es zuerst versucht xmodmap aber das kann keine Modifikator-Ereignisse erzeugen. So ist es unmöglich, eine Verknüpfung zu erstellen, die zum Beispiel die Control Veranstaltung.

Ich habe es dann versucht xbindkeys mit xmacro. Diese Art von Arbeiten, aber xbindkeys ist nicht in der Lage, einige Tastenkombinationen auf meinem System zu erfassen, wie z Alt + ___.

Also habe ich endlich die eigenen Tastaturkürzel von Unity -> Custom Shortcuts benutzt, um meine Abkürzung einzurichten.

Und statt xmacroHabe ich jetzt benutzt xvkbd Programm, um die Tastaturereignisse zu erzeugen, aber das ist nur eine persönliche Vorliebe. Beide xmacro und xvkbd arbeiten fast gleich. Ein zusätzlicher Tipp ist es, einen Verzögerungsparameter hinzuzufügen in xmacro oder xvkbd um sicherzustellen, dass die Ereignisse nicht verloren gehen.


3





Für mich funktionierte AutoKey vom Software Center am besten. Es hat intuitive GUI, um neue Bindung hinzuzufügen klicken Sie auf Neu -> Phrase und

  1. Fügen Sie einen Namen hinzu und klicken Sie auf OK
  2. Stellen Sie sicher, dass im Bereich "Phraseneinstellungen" das Einfügen mit Tastatur eingestellt ist
  3. Fügen Sie den Hotkey hinzu, den Sie verwenden möchten
  4. Fügen Sie den Befehl in das Textfeld ein, zB um die linke Pfeiltaste zu emulieren - so wäre es <left> (Liste der Sondertasten ist Hier).

0