Wie tausche ich Alt- und Windows-Tasten mit xmodmap aus?


9

Ich habe eine Mac-Tastatur, bei der die Alt / Win-Tasten (dh Option / Befehl) im Vergleich zu einer normalen PC-Tastatur invertiert sind, und ich möchte sie austauschen. Ich hatte bisher kein Glück mit xmodmap. Die Standardkonfiguration lautet wie folgt:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Derzeit sind die linken / rechten Alt-Tasten die Tastencodes 64 und 108, während die linken / rechten Windows-Tasten 133 und 134 sind.

Ich freue mich über jede Hilfe!


Für mich tauscht dies beide Paare von Alt und Win : setxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocaps. Ich möchte nur den richtigen Alt und Win tauschen. Dies "hebt" den linken Tausch nicht auf : setxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocaps. altwin:swap_ralt_rwinLaut gibt es anscheinend keine Option man xkeyboard-config.
Peter Becich

Antworten:


11

Das ist mein Xmodmaprc:

! Exchange left Alt and left Win
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
! Exchange tilde and lesser/greater
keycode  94 = grave asciitilde dead_grave dead_tilde grave asciitilde
keycode  49 = less greater less greater bar brokenbar bar brokenbar
! Steve, your keyboard sucks

Sie müssen Ihre .xsession oder .xinitrc ändern, um xmodmap .Xmodmaprc aufzurufen


7

Ich habe dies in Ubuntu 13.04 erreicht, indem ich Christophes Antwort kombiniert habe (was mir geholfen hat, aber für die Modifikatoren nicht funktioniert hat und ich brauche kein Grab und keine Tilde, um tote Schlüssel zu sein), eine weitere Antwort zu setxkbmap , die mit verschiedenen Optionen in den Einstellungen spielt. Tastatur-Layout-Optionen (auch wenn Sie sich den Quellcode ansehen ) und Überprüfen der aktuellen Konfiguration mit dem Befehl setxkbmap -query(den Sie auch ausführen sollten, um Ihr spezifisches Tastaturmodell und die Layout-Codes zu überprüfen, da diese möglicherweise abweichen).

Ich habe ein Skript, das ich aufrufe, wenn ich zu einer Apple-Tastatur wechsle (die entscheidende Option ist altwin:swap_lalt_lwindas Austauschen der Alt- und Super-Modifikatortasten):

# clear all options
setxkbmap -model "pc105" -layout "hr,us" -option ""  

# set the Apple keyboard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier,altwin:swap_lalt_lwin"

# swap the grave-tilde with less-greater key
#  - variant without dead keys
xmodmap -e "keycode  94 = grave asciitilde"
xmodmap -e "keycode  49 = less greater less greater bar brokenbar bar brokenbar"

Und noch eine, die ich anrufe, wenn ich wieder auf einer normalen Tastatur bin:

# clear settings
setxkbmap -model "pc105" -layout "hr,us" -option ""

# pc keyobard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier"

Beachten Sie, dass ich die Einstellungen hinzugefügt habe

terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier

Um die Beendigung der Gnome-Sitzung mit Strg + Alt + Rücktaste zu aktivieren, Zugriff auf die Taste 3 mit der rechten Win-Taste, Layoutverschiebung durch Drücken beider Umschalttasten und Verwandeln meiner Feststelltaste in eine zusätzliche Strg-Taste (jeweils). Möglicherweise möchten Sie einige oder alle ausschließen.

Sie können AutoKey verwenden , um den Anruf an eine Tastenkombination zu binden, oder Sie können ihn von Ihrem Telefon aus anrufen .profileoder .bashrcwenn Sie die Apple-Tastatur ständig verwenden.


1
Viel bla bla. Wenn Sie nur die linke Alt- und Supertaste tauschen möchten , verwenden Sie diesen Befehl: setxkbmap -option altwin:swap_lalt_lwinWenn Sie die linke und rechte Alt- und Supertaste wechseln möchten, verwenden Sie diesen Befehl : setxkbmap -option altwin:swap_alt_win.
Erik

Gute Antwort. Aber wie mache ich genau das nur für den richtigen Gewinn und das richtige Alt (AltGr)? Ich habe vor kurzem ein Unicomp bekommen, bei dem der richtige Gewinn neben der Leertaste anstelle von AltGr steht, wie ich es gewohnt bin
Professor

6

Ich habe festgestellt, dass Sie unter Ubuntu 16.04, das xkb und gnome verwendet, im Vergleich zu Christopher Devines Antwort oben einige zusätzliche Schritte benötigen, wenn Sie das gesamte Shortcut- Verhalten für die Alt- und Super-Tasten beibehalten möchten. Dies war die einfachste Lösung, die ich gefunden habe.

Um Ihre $ xev Schlüsselcode- Nummern zu erhalten, geben Sie in der Befehlszeile die Schlüssel ein, für die Sie die Nummer erhalten möchten. Weitere Informationen hierzu finden Sie in diesem Beitrag: Verwendung von xev und xmodmap

Das gibt mir: Super_Lhat Schlüsselcode 133 Alt_Lhat Schlüsselcode 64

Um den Windows aka Command (auf Mac) aka Super Key gegen den linken Alt Key auszutauschen, mache ich:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 133 = Alt_L
keycode 64 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

In den letzten beiden Zeilen werden mod1 und mod4 wieder in das Keysym für Alt_L und Super_L eingefügt, sobald sie entfernt wurden. Wenn dies nicht getan wird, verliere ich die Verknüpfungen, die mit der Super-Taste (Suche) verknüpft sind, und es bricht auch die Alt + Tab-Kombination, um zwischen Fenstern zu wechseln.

Sie können diese Befehle zu einer Datei wie .xmodmap hinzufügen und sie dann $ xmodmap .xmodmapausführen.

Alternativ können Sie diese nacheinander in der Befehlszeile ausführen: $ xmodmap -e <expression here>

Wenn Sie zu den Standardtastenzuordnungen zurückkehren möchten, können Sie die Zahlen im obigen Code wie folgt umkehren:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 64 = Alt_L
keycode 133 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

oder in Ubuntu laufe ich einfach: $ setxkbmap


hatte ein Problem in Intellij, bei dem die Alt-Taste nicht erkannt wird, wenn nur die Tasten mit mod1 und mod4 getauscht werden. Aber das Zurücksetzen des Schlüsselcodes funktioniert wunderbar in Intellij. Großartige Arbeit
Jimubao

2

Sie können die hid_appleKernelmoduloptionen auch so einstellen , dass nur Ihre Apple-Tastatur geändert wird, nicht jedoch normale PC-Tastaturen. Xkbmap oder Xmodmapr müssen nicht verwendet werden. Erstellen Sie einfach die Datei /etc/modules.d/hid_apple.confmit dem Inhalt

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2ordnet die Funktionstasten zu, F1...F12ohne drücken zu müssen Fn. Lassen Sie es weg, wenn Sie die Medientasten bevorzugen. Weitere Informationen finden Sie im Arch Wiki .

Permanent unter Ubuntu :

echo options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all

0

Ich würde empfehlen, xmodmap in Zukunft nicht mehr zu verwenden, da es in Wayland nicht funktioniert. Abgesehen von setxkbmap oder xkbcomp wäre dies jedoch die beste Methode für die Zukunft, und mein Projekt Kinto verwendet es.

Kinto tauscht die gewünschten Tasten aus, wartet aber auch auf die von Ihnen verwendete App, sodass Sie die richtige Keymap für Terminal-Apps beibehalten können, damit sie Ihrer Erfahrung mit einem Mac entspricht.

Hier sind die relevanten Links, aber ich werde auch das Herzstück dessen einbeziehen, was Kinto tut - abzüglich benutzerdefinierter Keymaps und alternierender Keymap-Fähigkeiten, sodass Sie eine Vorstellung davon haben, was Kinto tatsächlich tut.

https://github.com/rbreaves/kinto

https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

Inhalt

# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all

# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd

# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win

# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win

#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#
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.