Bagaimana cara mengganti tombol Perintah dan tombol Kontrol di MacBook Pro?


59

Saya telah menjelajahi web, dan sepertinya saya tidak bisa mendapatkan Xmodmap / apapun agar berfungsi dengan baik. Saya ingin menukar KEDUA kunci Command saya dengan kunci Control saya - pada dasarnya, membalikkan apa yang mereka lakukan saat ini.

Bagaimana saya melakukannya?

Saya mencoba xmodmap -e "keycode 133 = Control_L"dan sesuai perintah untuk kode kunci 134 (perintah kanan) dan 37 (kontrol kiri). Saya bahkan mencoba perintah-perintah ini, plus xmodmap -pke > ~/.Xmodmapdan xmodmap ~/.Xmodmapin .xinitrc.

Tujuan akhir saya adalah saya ingin HUD / Dash muncul ketika saya mengklik controldan commanduntuk kontrol fungsional, yaitu, control-vadalah pintasan commond untuk menempel, saya akan mengklikcommand-v

Jawaban:


64

Saya menemukan jawabannya. Masukkan yang berikut ini ~/.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

Untuk menguji, jalankan perintah:

xmodmap ~/.Xmodmap

Untuk membuatnya berjalan setiap saat, tambahkan ke Aplikasi Startup.

Ini harus bekerja pada MacBook Pro apa pun; masalahnya adalah Xmodmap menetapkan Super_L ke tombol perintah kiri dan kanan, dan Control_L ke tombol kontrol kiri. Untuk beberapa alasan, secara default, Ubuntu berpikir bahwa MacBook Pro memiliki keyboard kunci standar 105 (mungkin berpikir tentang Keyboard Apple lengkap) tetapi itu salah. Bagaimanapun, saya menugaskan kembali kode kunci ke keysims kanan, kemudian menetapkan keysims ke controldan mod4.


Saya punya pertanyaan tambahan: bagaimana saya bisa mengubah tombol Kontrol kiri menjadi tombol alt, dan sebaliknya, tombol alt di sebelah tombol Kontrol kiri untuk menjadi tombol Kontrol kiri?
719016

bagaimana cara menjaga tombol win sisi kanan berfungsi?
arcanine

Pikiran bahwa ini tidak bekerja dengan baik dengan beralih tata letak keyboard. Jadi jika Anda menggunakan lebih dari satu tata letak, Anda harus menjalankan xmodmap setelah setiap perubahan tata letak. Jawaban di bawah ini menunjukkan pengeditan / usr / share / X11 / xkb / simbol / pc kebal terhadap itu.
clorz

Apakah ini berjalan di VNCViewer. Saya menggunakan desktop Gnome dan ingin mengganti keyboard apple saya (tombol Command) dengan Ctrl Key.
ahmed

32

Saya baru saja menginstal Ubuntu 16,04 dual boot pada MBP13 saya "kemarin. Untuk Ubuntu 16,04, inilah cara saya melakukannya:

Langkah 1: Buka terminal

Langkah 2: Edit X Keyboard Extension

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

Langkah 3: Buat perubahan berikut. Pastikan file Anda terlihat seperti ini:

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

...

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

Langkah 4: Bersihkan cache xkb

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

Langkah 5 (bersyarat): Jika tombol tidak diganti setelah langkah 4, hidupkan ulang komputer Anda. Ini berhasil untuk saya setelah ini.

Semoga ini bisa membantu, semoga berhasil!


Ini adalah solusi yang jauh lebih baik daripada jawaban yang diterima.
Tuan Axilus

Tidak bekerja untuk saya.
chovy

Ini adalah jawaban aktual (2017).
CESCO

Ini jawabannya. Perlu memulai ulang setelah perubahan. Terima kasih
rasemik

Ini berhasil untuk saya! Akhirnya beralih antara Mac OS dan Linux tidak melibatkan pemrograman ulang memori otot hampir seperti :)
JoLoCo

15

Pergi ke System -> Preferences -> Keyboard

Klik pada tab "Layouts" dan kemudian klik tombol "Layout Options".

Klik pada "Alt / Win key behaviour"

Pilih "Kontrol dipetakan ke tombol Win (dan tombol ctrl biasa).

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


9
Hanya catatan - ini tidak menukar kunci, itu hanya membuat kunci perintah tombol kontrol tambahan.
Fabian Tamp

Ini tidak berfungsi untuk Ubuntu 16.04.
Unik

Hal ini tampaknya mengarah pada perilaku yang diinginkan di Ubuntu 18.04
RM de Vos

Saya menggunakan "alt bertukar dengan Win" karena saya menggunakan keyboard Apple di Ubuntu.
SM Adnan

6

Pergi ke pengaturan sistem dan kemudian ke tata letak keyboard, lalu ke opsi, lalu ke perilaku kunci Win / Alt, dan kemudian periksa "Meta switches Ctrl" dan kemudian di centang Posisi Ctrl "Ctrl switches Meta" dan di sana Anda memilikinya!

pada 12.04.1 Anda mengubahnya dengan:

Pertama, pergi ke "Pengaturan Sistem" kemudian mengklik "Keyboard" lalu "Pengaturan Tata Letak" (di kiri bawah), kemudian "Opsi" di kanan bawah, kemudian memperluas tab "Alt / Menangkan perilaku kunci" tab, lalu memilih " Kontrol dipetakan untuk memenangkan Kunci (dan tombol Ctrl biasa) "


Bekerja untuk saya di 12.04. Saya benar-benar tidak percaya, tapi itu berhasil. Setelah berjam-jam main-main dengan .xmodmap
jyoseph

Ini bagus, terima kasih. Saya memiliki sistem yang lebih baru (apa yang Anda jelaskan di paragraf kedua). Ctrl yang dipetakan ke tombol Win membuat Cmd berperilaku sebagai Ctrl. Posisi tombol Ctrl -> Kiri Ctrl saat Meta melakukan sebaliknya. Juga sebagai catatan tambahan, saya harus membuka Startup and Shutdown -> Service Manager -> Startup Services dan mengaktifkan Keyboard Daemon (ini dinonaktifkan secara default).
0__

14,04 sepertinya tidak memiliki tautan "Opsi" itu.
Waldir Leoncio

Sedangkan untuk Ubuntu 15.04, opsi ini sekarang tersedia di "Perangkat Input> Keyboard> Tab Tingkat Lanjut> Bagian perilaku kunci Alt / Menang> Ctrl dipetakan untuk memenangkan Kunci (dan tombol Ctrl biasa)"
Serj Zaharchenko

2
Tidak dapat menemukan semua itu di Ubuntu 16.04
Houman

5

The komunitas Ubuntu halaman bantuan untuk Apple keyboard memberikan langkah-langkah berikut untuk secara permanen membuat perubahan ini: (diuji 2017/05/27)

Jalankan perintah berikut untuk menambahkan baris konfigurasi ke file yang /etc/modprobe.d/hid_apple.confmembuatnya jika perlu:

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

Pemicu menyalin konfigurasi ke bootfile initramfs.

sudo update-initramfs -u -k all

Secara opsional, reboot

sudo reboot

Untuk mengujinya sementara, Anda dapat berlari

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

4

Diperbarui untuk 18,04 karena tidak ada jawaban yang tampak bekerja pada sistem saya. Saya melakukan instalasi bersih 18,04 dan mencoba menggunakan keyboard apel aluminium kabel. Perilaku default Left Super on English US dipetakan ke Gnome Desktop Dashboard. Alat Tweak memiliki semua pengaturan yang diperlukan dalam GUI yang mudah digunakan!

sudo apt install gnome-tweak-tool

Pertama saya menukar hotkey dashboard ke sisi kanan dan kemudian di bawah "Opsi Layout Tambahan" Anda dapat menggunakan "Ctrl posisi / Tukar Menangkan Kiri dengan Ctrl Kiri " untuk efek yang baik.


gnome-tweak-tool luar biasa, terima kasih!
Dennis Golomazov

Ini harus menjadi jawaban yang diterima. Untuk Mac, saat ini saya menemukan bahwa Gnome Tweak Tools memiliki pengaturan yang saya inginkan di bawah Keybord & Mouse> Opsi Tata Letak Tambahan> posisi Ctrl> Tukar Menang Kiri dengan Ctrl Kiri. Tombol Perintah keyboard Mac tampaknya disebut sebagai "Menang".
bhaller

Pada 2019, di Gnome, ini adalah solusi termudah. Terima kasih
jymbob

1

Duplikat Cara menukar kunci Perintah dan Kontrol dengan xkb langkah demi langkah?

Di 16,04, inilah cara saya akhirnya berhasil. Xmodmap tidak bekerja secara universal di semua aplikasi, alat tweak gnome tidak memiliki fungsi, mengedit dconf altwin2 key swap kustom (seperti jawaban utama di sini) gagal, jadi saya mencabut rambut saya sampai saya menggabungkan beberapa jawaban ke dalam ini lengkap, sederhana , dan solusi elegan:

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

ubah ke:

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

Menyimpan.

rm -rf /var/lib/xkb/*

(Saya tidak tahu apakah ini diperlukan, tetapi saya melakukannya.)

Mulai ulang.


Ini bagus tetapi saya tidak dapat menggunakan trik yang sama untuk mengganti kunci ALT saya sebagai tombol Kontrol kiri. Tampaknya kunci ALT bekerja secara berbeda. Apakah Anda tahu bagaimana saya bisa melakukannya?
Pierre Thibault

Trik yang sama bisa digunakan untuk apa saja. Anda harus beralih baik pemetaan kunci maupun pemetaan modifier_map. Anda juga dapat melompat ke gnome tweak atau gconf, saya lupa yang mana, dan ada beberapa pengaturan beralih seperti "swap ctrl dan alt".
Tom Mercer

Kami tidak dapat melakukan: kunci <LALT> {[Control_L]}; key <RALT> {[Control_L]}; Alt diperlakukan berbeda. Jadi saya menggunakan Gnome Tweaks. Saya tidak dapat memiliki apa yang saya inginkan, tetapi tidak terlalu buruk.
Pierre Thibault

Saya tidak yakin saya mengerti masalah Anda. Jika Anda hanya ingin kedua alts berperilaku sebagai kontrol, file persis seperti di atas akan membuat kedua tombol alt berperilaku sebagai kontrol, dan kedua tombol kontrol berperilaku sebagai alts. Jika Anda dapat menentukan apa yang Anda inginkan dari setiap kunci, mungkin saya dapat membantu? Apakah Anda mencoba file ini? Mesin apa yang Anda gunakan, dan keyboard mana? Tata letak keyboard Prancis mungkin memberi kita kesulitan.
Tom Mercer

Tidak, saya tidak mencoba file tersebut. Saya bisa melihat nanti di file Anda beralih dari dua alt ke dua ctrl. Saya melewatkan itu. Terima kasih telah menunjukkannya. Saya akan mencobanya.
Pierre Thibault

0

Anda mungkin menemukan Kinto berguna. Ini adalah proyek yang saya buat baru-baru ini, setelah beberapa tahun menangani masalah ini dengan beberapa cara yang berbeda dan saya sekarang merasa cukup solid untuk dibagikan.

Penginstal Kinto cukup menggunakan python untuk melakukan instalasi awal, setelah itu hanya layanan systemd, bash, xprop, setxkbmap dan xkbcomp. Sejauh yang saya ketahui, ini adalah solusi tercepat dan paling asli untuk masalah ini yang akan Anda temukan.

https://github.com/rbreaves/kinto

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

Ini intinya juga, jika Anda hanya ingin melihat apa yang menjadi inti dari semuanya, itu tidak akan mengganti keymap Anda saat dibutuhkan. Gist juga tidak termasuk file keymap xkb khusus yang mengatur kursor macOS style / manipulasi kata-bijaksana yang menggunakan Cmd dan tombol panah.

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

konten inti

# 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!
#
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.