Come posso cambiare il tasto Comando e il tasto Controllo su un MacBook Pro?


59

Ho esplorato il Web e non riesco a far funzionare Xmodmap / nulla in modo corretto. Voglio scambiare ENTRAMBI i miei tasti di comando con il mio tasto di controllo - in sostanza, invertendo quello che fanno attualmente.

Come potrei farlo?

Ho provato xmodmap -e "keycode 133 = Control_L"e corrispondenti comandi per i codici chiave 134 (comando a destra) e 37 (controllo a sinistra). Ho anche provato questi comandi, più xmodmap -pke > ~/.Xmodmape xmodmap ~/.Xmodmapin .xinitrc.

Il mio obiettivo finale è che voglio che HUD / Dash venga visualizzato quando faccio clic controle commandper il controllo funzionale, ovvero control-vè un collegamento rapido da incollare, farei cliccommand-v

Risposte:


64

L'avevo capito. Inserisci quanto segue ~/.Xmodmap:

clear control
clear mod4

keycode 105 =
keycode 206 =

keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Control_R NoSymbol Control_R
keycode 37 = Super_L NoSymbol Super_L

add control = Control_L
add control = Control_R
add mod4 = Super_L

Per testare, esegui il comando:

xmodmap ~/.Xmodmap

Per farlo funzionare ogni volta, aggiungilo alle applicazioni di avvio.

Questo dovrebbe funzionare su qualsiasi MacBook Pro; il problema era che Xmodmap stava assegnando Super_L ai tasti di comando sinistro e destro e Control_L al tasto di controllo sinistro. Per qualche ragione, per impostazione predefinita, Ubuntu pensa che il MacBook Pro abbia una tastiera standard da 105 tasti (probabilmente pensando alla tastiera Apple completa) ma è sbagliato. Ad ogni modo, ho riassegnato i codici chiave ai keyims giusti, quindi ho assegnato i keyims a controle mod4.


Ho una domanda in più: come posso cambiare il tasto Control sinistro per diventare il tasto alt, e viceversa, il tasto alt accanto al tasto Control sinistro per diventare il tasto Control sinistro?
719016

come faccio a far funzionare il pulsante di vittoria sul lato destro?
arcanina,

Ricorda che questo non funziona bene con il cambio di layout della tastiera. Quindi, se usi più di un layout, dovrai eseguire xmodmap dopo ogni modifica del layout. La risposta che segue suggerisce che la modifica / usr / share / X11 / xkb / simboli / pc è immune a questo.
Clorz,

Funziona su VNCViewer. Sto usando il desktop di Gnome e vorrei sostituire la mia tastiera Apple (tasto Comando) con il tasto Ctrl.
Ahmed

32

Ho appena installato Ubuntu 16.04 dual boot sul mio MBP13 "ieri. Per Ubuntu 16.04, ecco come l'ho fatto:

Passaggio 1: avviare il terminale

Passaggio 2: modifica l'estensione della tastiera X.

sudo nano /usr/share/X11/xkb/symbols/pc

Passaggio 3: apportare le seguenti modifiche. Assicurati che il tuo file sia simile al seguente:

key <LCTL> {    [ Super_L       ]   };
key <LWIN> {    [ Control_L     ]   };

...

key <RCTL> {    [ Super_R       ]   };
key <RWIN> {    [ Control_R     ]   };

Passaggio 4: svuota la cache di xkb

sudo rm -rf /var/lib/xkb/*

Passaggio 5 (condizionale): se le chiavi non vengono scambiate dopo il passaggio 4, riavviare il computer. Ha funzionato per me dopo questo.

Spero che ti aiuti, buona fortuna!


Questa è una soluzione molto migliore della risposta accettata.
Mr Axilus,

Non ha funzionato per me.
Chovy

Questa è la risposta effettiva (2017).
CESCO,

Questa è la risposta È necessario riavviare dopo la modifica. Grazie
racemico,

Questo ha funzionato per me! Infine, il passaggio tra Mac OS e Linux non comporta una riprogrammazione della memoria muscolare quasi
uguale

15

Entra System -> Preferences -> Keyboard

Fai clic sulla scheda "Layout", quindi fai clic sul pulsante "Opzioni layout".

Fai clic su "Comportamento chiave Alt / Win"

Selezionare "Il controllo è associato ai tasti Win (e al solito tasto ctrl).

da http://ubuntuforums.org/showthread.php?t=1293081


9
Solo una nota: questo non scambia i tasti, rende solo i tasti di comando tasti di controllo aggiuntivi.
Fabian Tamp,

Questo non funziona per Ubuntu 16.04.
Unico

Questo sembra portare al comportamento desiderato in Ubuntu 18.04
RM de Vos

Ho usato "alt viene scambiato con Win" mentre sto usando la tastiera Apple su Ubuntu.
SM Adnan,

6

Vai alle impostazioni di sistema e poi al layout della tastiera, quindi alle opzioni, quindi al comportamento dei tasti Win / Alt, quindi controlla i "Meta switch Ctrl" e poi nella posizione Ctrl controlla "Ctrl switch Meta" e il gioco è fatto!

il 12.04.1 lo cambi di:

Innanzitutto, vai su "Impostazioni di sistema", quindi fai clic su "Tastiera", quindi su "Impostazioni layout" (in basso a sinistra), quindi su "Opzioni" in basso a destra, quindi espandi la scheda "Comportamento tasto Alt / Win", quindi seleziona " Il controllo è mappato per vincere i tasti (e i soliti tasti Ctrl) "


Ha funzionato per me in 12.04. Non ci posso credere, ma ha funzionato. Dopo ore di pasticciare con .xmodmap
joseph

Questo è fantastico, grazie. Ho il sistema più recente (quello che descrivi nel secondo paragrafo). Ctrl è mappato su Win keys fa sì che Cmd si comporti come Ctrl. Posizione tasto Ctrl -> Ctrl sinistro come Meta fa il contrario. Inoltre, come nota a margine, ho dovuto andare su Avvio e spegnimento -> Service Manager -> Servizi di avvio e attivare Keyboard Daemon (questo era disattivato per impostazione predefinita).
0__

14.04 non sembra avere quel link "Opzioni".
Waldir Leoncio,

Per quanto riguarda Ubuntu 15.04, questa opzione è ora disponibile in "Dispositivi di input> Tastiera> scheda Avanzate> sezione Comportamento tasto Alt / Win> Ctrl è mappato per vincere i tasti (e i soliti tasti Ctrl)"
Serj Zaharchenko

2
Non
riesco a

5

La pagina della guida di Ubuntu della community per le tastiere Apple fornisce i seguenti passaggi per apportare in modo permanente questa modifica: (testato 2017-05-27)

Eseguire il comando seguente per aggiungere la riga di configurazione al file /etc/modprobe.d/hid_apple.confcreandola se necessario:

echo options hid_apple swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf

Attiva la copia della configurazione nel file di avvio di initramfs.

sudo update-initramfs -u -k all

Facoltativamente, riavviare

sudo reboot

Per provarlo temporaneamente, puoi eseguirlo

echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd

4

Aggiornato per il 18.04 poiché nessuna delle risposte fornite sembrava funzionare sul mio sistema. Ho fatto un'installazione pulita di 18.04 e tentando di utilizzare una tastiera Apple in alluminio cablata. Il comportamento predefinito di Left Super su English US è mappato su Gnome Desktop Dashboard. Lo strumento Tweak aveva tutte le impostazioni necessarie in una GUI facile da usare!

sudo apt install gnome-tweak-tool

Per prima cosa ho scambiato il tasto di scelta rapida del cruscotto sul lato destro, quindi in "Opzioni di layout aggiuntive" è possibile utilizzare "Posizione Ctrl / Scambia vittoria a sinistra con Ctrl a sinistra " per ottenere buoni risultati.


gnome-tweak-tool è fantastico, grazie!
Dennis Golomazov,

Questa dovrebbe essere la risposta accettata. Per Mac, attualmente sto scoprendo che Gnome Tweak Tools ha l'impostazione desiderata in Tastiera e mouse> Opzioni di layout aggiuntive> Posizione Ctrl> Scambia vincita a sinistra con Ctrl a sinistra. Il tasto Comando della tastiera Mac sembra essere indicato come "Win".
Bhaller

Nel 2019, in Gnome, questa è la soluzione più semplice. Grazie
jymbob il

1

Duplica di Come scambiare i tasti di comando e controllo con xkb passo dopo passo?

Nel 16.04, ecco come ho finalmente fatto funzionare tutto questo. Xmodmap non funziona universalmente in tutte le app, lo strumento gnome tweak non ha funzionato, dconf modifica di uno scambio di chiavi altwin2 personalizzato (come la risposta principale qui) fallito, quindi mi sono strappato i capelli fino a quando ho combinato diverse risposte in questa semplice, completa ed elegante soluzione:

gksudo gedit /usr/share/X11/xkb/symbols/pc

cambiarlo in:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC>  {    [ Escape        ]   };

// The extra key on many European keyboards:
key <LSGT> {    [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> {    [ backslash,    bar ]   };
key <SPCE> {    [    space      ]   };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {    [ BackSpace, BackSpace  ]   };

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return        ]   };

key <CAPS> {    [ Caps_Lock     ]   };
key <NMLK> {    [ Num_Lock      ]   };

key <LFSH> {    [ Shift_L       ]   };
key <LCTL> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_R     ]   };
key <RWIN> {    [ Super_R       ]   };
key <MENU> {    [ Menu          ]   };

// Beginning of modifier mappings.
modifier_map Shift  { Shift_L, Shift_R };
modifier_map Lock   { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2   { Num_Lock };
modifier_map Mod4   { Super_L, Super_R };

// Fake keys for virtual<->real modifiers mapping:
key <LVL3> {    [ ISO_Level3_Shift  ]   };
key <MDSW> {    [ Mode_switch       ]   };
modifier_map Mod5   { <LVL3>, <MDSW> };

key <ALT>  {    [ NoSymbol, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
modifier_map Mod1   { <META> };

key <SUPR> {    [ NoSymbol, Super_L ]   };
modifier_map Mod4   { <SUPR> };

key <HYPR> {    [ NoSymbol, Hyper_L ]   };
modifier_map Mod4   { <HYPR> };
// End of modifier mappings.

key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> {    [  Scroll_Lock      ]   };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key  <INS> {    [  Insert       ]   };
key <HOME> {    [  Home         ]   };
key <PGUP> {    [  Prior        ]   };
key <DELE> {    [  Delete       ]   };
key  <END> {    [  End          ]   };
key <PGDN> {    [  Next         ]   };

key   <UP> {    [  Up           ]   };
key <LEFT> {    [  Left         ]   };
key <DOWN> {    [  Down         ]   };
key <RGHT> {    [  Right        ]   };
};

Salva.

rm -rf /var/lib/xkb/*

(Non so se questo è necessario, ma l'ho fatto.)

Reboot.


È stato bello, ma non riesco a usare lo stesso trucco per cambiare i tasti ALT come tasto di controllo sinistro. Sembra che i tasti ALT funzionino diversamente. Sai come posso farlo?
Pierre Thibault,

Lo stesso trucco funziona per qualsiasi cosa. Devi cambiare sia i mapping dei tasti sia i mapping modifier_map. Puoi anche saltare a gnome tweaks o gconf, dimentico quale, e ci sono diverse impostazioni di commutazione come "swap ctrl e alt".
Tom Mercer,

Non possiamo fare un: key <LALT> {[Control_L]}; chiave <RALT> {[Control_L]}; Alt è trattato in modo diverso. Quindi ho usato Gnome Tweaks. Non sono stato in grado di avere esattamente quello che volevo, ma non è poi così male.
Pierre Thibault,

Non sono sicuro di aver capito il tuo problema. Se vuoi che entrambi gli alt si comportino come controlli, il file esattamente come sopra farà sì che entrambi i tasti alt si comportino come controlli ed entrambi i tasti di controllo si comportano come alts. Se riesci a specificare quale vuoi che sia ogni chiave, forse posso aiutarti? Hai provato questo file? Quale macchina stai usando e quale tastiera? Il layout della tastiera francese potrebbe darci problemi.
Tom Mercer,

No, non ho provato il file. Vedo che più avanti nel file stai facendo il passaggio da due alt a due ctrl. Ho perso questo. Grazie per averlo indicato. Lo proverò.
Pierre Thibault,

0

Potresti trovare utile Kinto. È un progetto che ho creato di recente, dopo alcuni anni in cui ho affrontato questo problema in diversi modi e proprio ora mi sento abbastanza solido da condividere.

Il programma di installazione di Kinto usa semplicemente Python per eseguire l'installazione iniziale, dopodiché è solo un servizio systemd, bash, xprop, setxkbmap e xkbcomp. Per quanto mi riguarda, è la soluzione più rapida e nativa a questo problema che troverai.

https://github.com/rbreaves/kinto

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

Anche qui c'è un Gist, se vuoi solo vedere ciò che è al centro di tutto, non cambierà la tua keymap quando necessario. Il Gist non include anche file keymap xkb personalizzati che configurano cursori in stile macOS / manipolazioni sagge che usano Cmd e i tasti freccia.

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

contenuto essenziale

# 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!
#
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.