Як переключити клавішу Command та клавішу Control на MacBook Pro?


59

Я переглянув Інтернет і, здається, не можу отримати Xmodmap / що-небудь для належної роботи. Я хочу поміняти БОЛЬКИ свої клавіші Command моїм клавішею управління - по суті, інвертувати те, що вони роблять в даний час.

Як би я це зробив?

Я спробував xmodmap -e "keycode 133 = Control_L"і відповідні команди для клавішів 134 (команда справа) і 37 (керування ліворуч). Я навіть спробував ці команди, плюс xmodmap -pke > ~/.Xmodmapі xmodmap ~/.Xmodmapв .xinitrc.

Моя кінцева мета - я хочу, щоб HUD / Dash з'явився, коли я натискаю, controlі commandдо функціонального управління, тобто, control-vце комбінація ярликів для вставки, я б натиснувcommand-v

Відповіді:


63

Я зрозумів це. Помістіть наступне ~/.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

Для тестування запустіть команду:

xmodmap ~/.Xmodmap

Щоб запускати його щоразу, додайте його до програм запуску.

Це має працювати на будь-якому MacBook Pro; Проблема полягала в тому, що Xmodmap призначає Super_L лівій і правій командних клавіш, а Control_L - лівій клавіші управління. Чомусь Ubuntu за замовчуванням вважає, що MacBook Pro має стандартну клавіатуру 105 клавіатур (можливо, думає про повну клавіатуру Apple), але це неправильно. У будь-якому випадку я переназначив коди клавіш до правильних клавіш, а потім призначив ключі controlта mod4.


У мене є додаткове запитання: як я можу змінити ліву клавішу Control, щоб стати клавішею alt, і viceversa, клавішу alt поруч з лівою клавішею управління, щоб стати лівою клавішею управління?
719016

як утримувати праву кнопку виграшу правої руки?
арканін

Зверніть увагу, що це не добре працює з переключенням розкладки клавіатури. Отже, якщо ви використовуєте більше одного макета, вам доведеться запускати xmodmap після кожної зміни макета. Відповідь нижче, що пропонує редагувати / usr / share / X11 / xkb / символи / pc, не захищений від цього.
clorz

Чи працює він на VNCViewer. Я використовую робочий стіл Gnome і хотів би замінити мою яблучну клавіатуру (клавішу Command) клавішею Ctrl.
ахмед

32

Я щойно встановив подвійне завантаження Ubuntu 16.04 на своєму MBP13 "вчора. Для Ubuntu 16.04, ось як я це зробив:

Крок 1. Запуск терміналу

Крок 2: Редагування розширення клавіатури X

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

Крок 3: Внесіть такі зміни. Переконайтесь, що ваш файл виглядає так:

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

...

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

Крок 4: Очистіть кеш-пам'ять xkb

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

Крок 5 (умовний): Якщо ключі не поміняються після кроку 4, перезавантажте комп'ютер. Це працювало для мене після цього.

Сподіваюся, це допоможе, удачі!


Це набагато краще рішення, ніж прийнята відповідь.
Містер Аксілус

Не працювали для мене.
чові

Це фактична (2017) відповідь.
CESCO

Це відповідь. Потрібно перезапустити після зміни. Спасибі
lxm7

Це працювало для мене! Нарешті перемикання між Mac OS та Linux не передбачає майже стільки перепрограмування м’язової пам'яті :)
JoLoCo

15

Йти в System -> Preferences -> Keyboard

Перейдіть на вкладку "Макети", а потім натисніть кнопку "Параметри макета".

Клацніть на "Alt / Win key поведінка"

Виберіть "Керування відображається на клавіші Win (і звичайну клавішу ctrl).

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


9
Просто зверніть увагу - це не поміняти ключі, він просто робить командні клавіші додаткових клавіш управління.
Фабіан Тамп

Це не працює для Ubuntu 16.04.
Унікальний

Це, здається, призводить до бажаної поведінки в Ubuntu 18.04
RM de Vos

Я використовував "alt swapped with Win", оскільки я використовую клавіатуру Apple в Ubuntu.
С.М. Аднан

6

Перейдіть до системних налаштувань, а потім до розкладки клавіатури, потім до опцій, потім до поведінки клавіш Win / Alt, а потім встановіть прапорець "Meta switches Ctrl", а потім у позиції Ctrl встановіть прапорець "Ctrl перемикає Meta" і там у вас є!

12.04.1 ви змінюєте це на:

Спочатку перейдіть до "Налаштування системи", потім натисніть кнопку "Клавіатура", потім "Налаштування макета" (внизу ліворуч), потім "Параметри" в правому нижньому куті, потім розгорніть вкладку "Поведінка клавіш Alt / Win", потім виберіть " Керування відображається для вигравання ключів (і звичайних клавіш Ctrl) "


Працював для мене 12.04. Я не можу насправді повірити, але це спрацювало. Після години возитися з .xmodmap
jyoseph

Це чудово, дякую. У мене новіша система (що ви описуєте у другому абзаці). Ctrl відображається у клавішах Win, Cmd веде себе як Ctrl. Клавіша Ctrl -> Вліво Ctrl, як Meta робить зворотне. Також в якості побічної записки мені довелося перейти до запуску та вимкнення -> Диспетчер сервісів -> Служби запуску та активувати клавіатуру Daemon (це було вимкнено за замовчуванням).
0__

14.04, схоже, не має посилання "Параметри".
Вальдір Леонсіо

Що стосується Ubuntu 15.04, цей параметр доступний зараз на "Пристрої введення> Клавіатура> вкладка" Додаткові "> Розділ поведінки клавіш Alt / Win> Ctrl відображається для вигравання ключів (та звичайних клавіш Ctrl)"
Серж Захарченко

2
Не можете знайти що-небудь з цього в Ubuntu 16.04
Хоуман

5

Сторінка довідки спільноти Ubuntu для клавіатур Apple дає наступні кроки для постійного внесення змін: (перевірено 2017-05-27)

Виконайте таку команду, щоб додати рядок конфігурації до файлу, що /etc/modprobe.d/hid_apple.confстворює її, якщо потрібно:

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

Тригер копіювання конфігурації у завантажувальний файл initramfs.

sudo update-initramfs -u -k all

За бажанням перезавантажте

sudo reboot

Щоб тимчасово перевірити його, можна запустити

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

4

Оновлено 18.04, оскільки жодна із наданих відповідей не могла працювати в моїй системі. Я зробив чисту установку 18.04 і намагався використовувати дротову алюмінієву яблучну клавіатуру. Поведінка Left Super за англійською мовою за замовчуванням відображається на інформаційній панелі Gnome Desktop. Інструмент Tweak мав усі необхідні настройки у простому користуванні графічним інтерфейсом!

sudo apt install gnome-tweak-tool

Спочатку я поміняв гарячу клавішу приладної панелі на праву сторону, а потім у розділі "Додаткові параметри макета" ви можете використовувати "Позиція Ctrl / Поміняти перемогу вліво на лівий Ctrl " для гарного ефекту.


gnome-tweak-tool дивовижний, дякую!
Денніс Голомазов

Це має бути прийнятою відповіддю. В даний час для Mac я зараз виявляю, що інструменти для налаштування Gnome Tweak Tools мають потрібне мені налаштування під клавіатурою та мишею> Додаткові параметри макета> Положення клавіш Ctrl> Поміняти перемогу вліво на Left Ctrl. Здається, клавішу Command клавіатури Mac називають "Win".
bhaller

У 2019 році в Gnome це найпростіше рішення. Спасибі
jymbob

1

Дублікат того, як поетапно поміняти клавіші Command та Control на xkb?

У 16.04 ось ось я нарешті змусив це працювати. Xmodmap не працює універсально у всіх додатках, у інструмента налаштування гнома не вистачало функції, dconf редагування користувацького підключення клавіш altwin2 (як головна відповідь тут) не вдалося, тому я виривав волосся, поки не з’єднав кілька відповідей у ​​цей повний простий та елегантне рішення:

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

змінити його на:

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

Зберегти.

rm -rf /var/lib/xkb/*

(Я не знаю, чи потрібно це, але я це зробив.)

Перезавантажте.


Це було приємно, але я не в змозі використовувати той самий трюк для перемикання моїх клавіш ALT, як ліва клавіша Control. Здається, клавіші ALT працюють по-різному. Ви знаєте, як я можу це зробити?
П’єр Тібо

Цей же трюк працює ні на що. Ви повинні переключити як ключові відображення, так і відображення modifier_map. Ви також можете стрибати в налаштування gnome або gconf, я забуваю, який є, і є кілька налаштувань перемикання типу "swap ctrl і alt".
Том Мерсер

Ми не можемо зробити: ключ <LALT> {[Control_L]}; клавіша <RALT> {[Control_L]}; Альт трактується по-різному. Тому я використав Gnome Tweaks. Я не зміг мати того, чого саме хотів, але це не так вже й погано.
П’єр Тібо

Я не впевнений, що розумію вашу проблему. Якщо ви просто хочете, щоб обидва альти поводилися як елементи керування, файл точно так само, як і вище, змусить обидві клавіші alt поводитись як елементи керування, а обидві клавіші управління ведуть себе як alt. Якщо ви можете вказати, яким ви хочете бути кожним ключем, можливо, я можу допомогти? Ви спробували цей файл? Яку машину ви використовуєте та яку клавіатуру? Французька розкладка клавіатури може доставляти нам проблеми.
Том Мерсер

Ні, я не спробував файл. Я бачу, що пізніше у файлі ви перемикаєте два альти на два ctrl. Я пропустив це. Дякую, що вказали на це. Я спробую.
П’єр Тібо

0

Ви можете вважати Kinto корисним. Це проект, який я нещодавно створив, після декількох років вирішення цієї проблеми декількома різними способами, і я просто відчуваю, що це досить міцно, щоб поділитися.

Інсталятор Kinto просто використовує python для початкового встановлення, після чого це просто системний сервіс, bash, xprop, setxkbmap та xkbcomp. Що стосується мене, це найшвидше і найновіше рішення цієї проблеми, яке ви збираєтесь знайти.

https://github.com/rbreaves/kinto

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

Ось також історія, якщо ви просто хочете побачити, що лежить в основі всього цього, він не буде чергувати вашу ключову карту, коли це потрібно. Також Gist не включає власні файли з клавішними файлами xkb, які встановлюють курсори стилю macOS / маніпуляції зі словом, які використовують Cmd та клавіші зі стрілками.

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

зміст суті

# 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!
#
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.