Jak przełączyć klawisz Command i Control na MacBooku Pro?

59

Przeszukałem Internet i wydaje mi się, że Xmodmap / cokolwiek nie działa poprawnie. Chcę zamienić ZARÓWNO moje klawisze poleceń za pomocą klawisza Control - w zasadzie odwracając to, co robią obecnie.

Jak mam to zrobić?

Próbowałem xmodmap -e "keycode 133 = Control_L"i odpowiadające im polecenia dla kodów klawiszy 134 (prawe polecenie) i 37 (lewe sterowanie). Próbowałem nawet tych poleceń, a także xmodmap -pke > ~/.Xmodmapi xmodmap ~/.Xmodmapw .xinitrc.

Moim celem końcowym jest to, że chcę, aby HUD / Dash pojawił się po kliknięciu controli commanddo kontroli funkcjonalnej, tj. control-vJest to skrót do wklejania, kliknęcommand-v

kalaracey
źródło

Odpowiedzi:

63

Rozgryzłem to. Wprowadź następujące dane ~/.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

Aby przetestować, uruchom polecenie:

xmodmap ~/.Xmodmap

Aby działał za każdym razem, dodaj go do aplikacji startowych.

To powinno działać na każdym MacBooku Pro; Problem polegał na tym, że Xmodmap przypisywał Super_L do lewego i prawego klawisza poleceń, a Control_L do lewego klawisza sterowania. Z jakiegoś powodu domyślnie Ubuntu uważa, że ​​MacBook Pro ma standardową klawiaturę z 105 klawiszami (prawdopodobnie myśli o pełnej klawiaturze Apple), ale to źle. W każdym razie ponownie przypisałem kody do odpowiednich klawiszy, a następnie przypisałem klawisze do controli mod4.

kalaracey
źródło
Mam dodatkowe pytanie: jak mogę zmienić lewy klawisz Control, aby stał się klawiszem Alt, i odwrotnie, klawisz Alt obok lewego klawisza Control, aby stać się lewym klawiszem Control?
719016
jak mogę zachować przycisk wygranej po prawej stronie?
arcanine
Pamiętaj, że to nie działa dobrze przy przełączaniu układu klawiatury. Więc jeśli używasz więcej niż jednego układu, będziesz musiał uruchomić xmodmap po każdej zmianie układu. Odpowiedź poniżej sugeruje, że edycja / usr / share / X11 / xkb / symbols / pc jest na to odporna.
clorz
Czy działa w VNCViewer. Korzystam z pulpitu Gnome i chciałbym zastąpić klawiaturę Apple (klawisz Command) klawiszem Ctrl.
Ahmed
32

Właśnie zainstalowałem wczoraj podwójny rozruch Ubuntu 16.04 na moim MBP13 ". W przypadku Ubuntu 16.04 oto jak to zrobiłem:

Krok 1: Uruchom terminal

Krok 2: Edytuj rozszerzenie X Keyboard

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

Krok 3: Wprowadź następujące zmiany. Upewnij się, że plik wygląda następująco:

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

...

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

Krok 4: Wyczyść pamięć podręczną xkb

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

Krok 5 (warunkowy): Jeśli klucze nie zostaną zamienione po kroku 4, uruchom ponownie komputer. Po tym zadziałało dla mnie.

Mam nadzieję, że to pomaga, powodzenia!

clodal
źródło
Jest to znacznie lepsze rozwiązanie niż przyjęta odpowiedź.
Pan Axilus,
Nie działało dla mnie.
chovy
To jest rzeczywista odpowiedź (2017).
CESCO
Oto odpowiedź. Wymaga ponownego uruchomienia po zmianie. Dzięki
lxm7
To zadziałało dla mnie! Wreszcie przełączanie między Mac OS i Linux nie wymaga prawie tyle przeprogramowania pamięci mięśni :)
JoLoCo
15

Wejść do System -> Preferences -> Keyboard

Kliknij kartę „Układy”, a następnie przycisk „Opcje układu”.

Kliknij „Zachowanie klawiszy Alt / Win”

Wybierz „Sterowanie jest mapowane na klawisze Win (i zwykły klawisz Ctrl).

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

alex reska
źródło
9
Tylko uwaga - to nie zamienia klawiszy, tylko sprawia, że ​​klawisze poleceń są dodatkowymi klawiszami sterującymi.
Fabian Tamp
To nie działa dla Ubuntu 16.04.
Unikalny
Wydaje się, że prowadzi to do pożądanego zachowania w Ubuntu 18.04
RM de Vos
Użyłem „alt jest zamieniony z Win”, ponieważ używam klawiatury Apple na Ubuntu.
SM Adnan
6

Przejdź do ustawień systemowych, a następnie do układu klawiatury, następnie do opcji, następnie do zachowania klawisza Win / Alt, a następnie zaznacz „Meta przełącza Ctrl”, a następnie w pozycji Ctrl zaznacz „Ctrl przełącza Meta” i gotowe!

12.04.1 zmienisz to przez:

Najpierw przejdź do „Ustawień systemu”, następnie kliknij „Klawiatura”, a następnie „Ustawienia układu” (w lewym dolnym rogu), następnie „Opcje” w prawym dolnym rogu, a następnie rozwiń kartę „Zachowanie klawisza Alt / Win”, a następnie wybierz „ Sterowanie jest mapowane, aby wygrać Klucze (i zwykłe klawisze Ctrl) ”

TenorB
źródło
Pracował dla mnie w 12.04. Nie mogę w to uwierzyć, ale zadziałało. Po godzinach bałaganu w .xmodmap
jyoseph
To wspaniale, dzięki. Mam nowszy system (co opisujesz w drugim akapicie). Ctrl jest mapowany na klawisze Win, dzięki czemu Cmd zachowuje się jak Ctrl. Pozycja Ctrl -> Lewy Ctrl, ponieważ Meta robi coś przeciwnego. Na marginesie również musiałem przejść do opcji Uruchamianie i zamykanie -> Menedżer usług -> Usługi uruchamiania i aktywować Keyboard Daemon (domyślnie było wyłączone).
0__
Wydaje się, że 14.04 nie ma tego linku „Opcje”.
Waldir Leoncio
Jeśli chodzi o Ubuntu 15.04, ta opcja jest teraz dostępna w „Urządzeniach wejściowych> Klawiatura> karta Zaawansowane> sekcja Zachowanie klawiszy Alt / Win> Ctrl jest mapowany do wygrywania klawiszy (i zwykłych klawiszy Ctrl)”
Serj Zaharchenko
2
Nie mogę znaleźć żadnego z nich na Ubuntu 16.04
Houman
5

Społeczność Ubuntu strona pomocy dla klawiaturach Apple daje następujące kroki, aby dokonać tej zmiany na stałe (testowane 2017-05-27)

Uruchom następujące polecenie, aby w /etc/modprobe.d/hid_apple.confrazie potrzeby dołączyć wiersz konfiguracji do pliku, tworząc go:

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

Uruchom kopiowanie konfiguracji do pliku rozruchowego initramfs.

sudo update-initramfs -u -k all

Opcjonalnie uruchom ponownie

sudo reboot

Aby tymczasowo go przetestować, możesz uruchomić

echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd
RasmusWL
źródło
4

Zaktualizowano do 18.04, ponieważ żadna z podanych odpowiedzi nie działała w moim systemie. Zrobiłem czystą instalację 18.04 i próbowałem użyć przewodowej aluminiowej klawiatury Apple. Domyślne zachowanie Left Super w języku angielskim USA jest mapowane na pulpit Gnome Desktop Dashboard. Narzędzie Tweak miało wszystkie niezbędne ustawienia w łatwym w obsłudze GUI!

sudo apt install gnome-tweak-tool

Najpierw zamieniłem skrót klawiaturowy na prawą stronę, a następnie w „Dodatkowych opcjach układu” możesz użyć „Ctrl position / Swap Left Win z Left Ctrl ”, aby uzyskać dobry efekt.

Dan Rozelle
źródło
Narzędzie gnome-tweak jest niesamowite, dziękuję!
Dennis Golomazov,
To powinna być zaakceptowana odpowiedź. W przypadku komputerów Mac stwierdzam, że Gnome Tweak Tools ma ustawienie, które chcę, w obszarze Klawiatura i mysz> Dodatkowe opcje układu> Pozycja Ctrl> Zamień lewą wygraną za pomocą lewego Ctrl. Wydaje się, że klawisz Command na klawiaturze komputera Mac nazywany jest „Win”.
bhaller
W 2019 roku w Gnome jest to najłatwiejsze rozwiązanie. Dzięki
jymbob
1

Duplikat Jak zamieniać klawisze Command i Control krok po kroku za pomocą xkb?

W 16.04 oto jak w końcu udało mi się to uruchomić. Xmodmap nie działa uniwersalnie we wszystkich aplikacjach, narzędzie do dostosowywania gnomów nie posiadało tej funkcji, dconf edytowanie niestandardowej zamiany klawiszy altwin2 (jak główna odpowiedź tutaj) nie powiodło się, więc oderwałem włosy, aż połączyłem kilka odpowiedzi w ten kompletny, prosty i eleganckie rozwiązanie:

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

zmień na:

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        ]   };
};

Zapisać.

rm -rf /var/lib/xkb/*

(Nie wiem, czy jest to wymagane, ale zrobiłem to.)

Restart.

Tom Mercer
źródło
To było miłe, ale nie mogę użyć tej samej sztuczki, aby przełączyć moje klawisze ALT jak lewy klawisz Control. Wygląda na to, że klawisze ALT działają inaczej. Czy wiesz jak to zrobić?
Pierre Thibault,
Ta sama sztuczka działa na wszystko. Musisz przełączyć zarówno mapowania klawiszy, jak i mapowania modifier_map. Możesz również wskoczyć do poprawek gnome lub gconf, nie pamiętam które, i jest kilka ustawień przełączania, takich jak „zamień ctrl i alt”.
Tom Mercer
Nie możemy zrobić: klucza <LALT> {[Control_L]}; klawisz <RALT> {[Control_L]}; Alt jest traktowany inaczej. Więc użyłem Gnome Tweaks. Nie mogłem mieć dokładnie tego, czego chciałem, ale nie jest tak źle.
Pierre Thibault,
Nie jestem pewien, czy rozumiem twój problem. Jeśli chcesz, aby oba alty zachowywały się jak formanty, plik dokładnie taki jak powyżej sprawi, że oba klawisze alt będą się zachowywać jak formanty, a oba klawisze kontrolne będą zachowywać się jak alty. Jeśli możesz określić, jaki ma być każdy klucz, może mogę pomóc? Próbowałeś tego pliku? Z jakiej maszyny korzystasz i jakiej klawiatury? Francuski układ klawiatury może sprawiać nam problemy.
Tom Mercer
Nie, nie próbowałem pliku. Widzę, że później w pliku dokonujesz zamiany dwóch alt na dwa ctrl. Tęsknie za tym. Dziękuję za wskazanie tego. Spróbuję.
Pierre Thibault,
0

Kinto może się przydać. To projekt, który niedawno stworzyłem, po kilku latach rozwiązywania tego problemu na kilka różnych sposobów, a teraz czuję, że jest wystarczająco solidny, aby się nim podzielić.

Instalator Kinto po prostu używa Pythona do przeprowadzenia wstępnej instalacji, po czym jest to tylko usługa systemowa, bash, xprop, setxkbmap i xkbcomp. Moim zdaniem jest to najszybsze i najbardziej natywne rozwiązanie tego problemu.

https://github.com/rbreaves/kinto

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

Oto także Gist, jeśli chcesz zobaczyć, co jest w centrum tego wszystkiego, nie zmieni naprzemiennie mapy klawiszy, gdy zajdzie taka potrzeba. Gist nie obejmuje również niestandardowych plików map klawiszy xkb, które konfigurują kursory w stylu macOS / manipulacje słowne wykorzystujące Cmd i klawisze strzałek.

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

treść merytoryczna

# 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!
#
R Ben R.
źródło