Как переключить клавишу «Command» и «Control» на MacBook Pro?


60

Я искал в Интернете, и я не могу заставить Xmodmap / что-либо работать должным образом. Я хочу поменять обе мои клавиши Command с моей клавишей управления - по сути, инвертировать то, что они делают в настоящее время.

Как бы я это сделал?

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

Моя конечная цель я хочу HUD / тир придумать , когда я нажимаю controlи commandфункциональный контроль, т.е. control-vявляется commond ярлыка приклеить, я щелкалcommand-v

Ответы:


64

Я понял. Поместите следующее в ~/.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

Чтобы он запускался каждый раз, добавьте его в Startup Applications.

Это должно работать на любом MacBook Pro; проблема заключалась в том, что Xmodmap назначал Super_L для левой и правой командных клавиш, а Control_L для левой управляющей клавиши. По какой-то причине, по умолчанию Ubuntu считает, что MacBook Pro имеет стандартную 105-клавишную клавиатуру (вероятно, думает о полной клавиатуре Apple), но это неправильно. Во всяком случае, я переназначил коды клавиш на нужные им ключи, а затем назначил их на controlи mod4.


У меня есть дополнительный вопрос: как я могу изменить левую клавишу управления, чтобы она стала клавишей alt, и наоборот, клавишей alt рядом с левой клавишей управления, чтобы она стала левой клавишей управления?
719016

Как сохранить работающую кнопку выигрыша с правой стороны?
арканин

Имейте в виду, что это не работает с переключением раскладки клавиатуры. Поэтому, если вы используете более одного макета, вам придется запускать xmodmap после каждого изменения макета. Ответ ниже, который предлагает редактировать / usr / share / X11 / xkb / symbols / pc, защищен от этого.
clorz

Работает ли он на VNCViewer. Я использую рабочий стол Gnome и хочу заменить клавиатуру Apple (клавиша Command) клавишей Ctrl.
Ахмед

32

Вчера я только что установил двойную загрузку Ubuntu 16.04 на свой MBP13 ". Для Ubuntu 16.04 вот как я это сделал:

Шаг 1: Запустить терминал

Шаг 2: Редактировать расширение X Keyboard

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,

Это ответ. Необходимо перезапустить после изменения. Спасибо
рацемическое

Это сработало для меня! Наконец, переключение между Mac OS и Linux не требует почти
такого же

15

Войти в System -> Preferences -> Keyboard

Нажмите на вкладку «Макеты», а затем нажмите кнопку «Параметры макета».

Нажмите «Alt / Win key поведения»

Выберите «Управление сопоставлено с ключами Win (и обычным сочетанием клавиш Ctrl).

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


9
Просто примечание - это не меняет местами клавиши, оно просто делает клавиши управления дополнительными клавишами управления.
Фабиан Тамп

Это не работает для Ubuntu 16.04.
Уникальный

Похоже, что это приводит к желаемому поведению в Ubuntu 18.04
РМ де Вос

Я использовал «alt is swap with Win», так как я использую клавиатуру Apple в Ubuntu.
СМ Аднан

6

Перейдите к настройкам системы, затем к раскладке клавиатуры, затем к параметрам, затем к поведению клавиши Win / Alt, а затем проверьте «Meta переключатели Ctrl», а затем в позиции Ctrl проверьте «Ctrl переключатели Meta», и вот оно!

12.04.1 вы меняете это:

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


Работал на меня в 12.04. Я не могу поверить, но это сработало. После нескольких часов возни с .xmodmap
jyoseph

Это здорово, спасибо. У меня более новая система (что вы описываете во втором абзаце). Ctrl отображается на клавиши Win, заставляет Cmd вести себя как Ctrl. Положение клавиши Ctrl -> Левый Ctrl, поскольку Meta делает противоположное. Также, как примечание, я должен был пойти в Запуск и завершение работы -> Диспетчер служб -> Службы запуска и активировать демон клавиатуры (по умолчанию это было отключено).
0

14.04, похоже, не имеет этой ссылки «Опции».
Вальдир Леонсио

Что касается Ubuntu 15.04, эта опция теперь доступна в разделе «Устройства ввода> Клавиатура> вкладка« Дополнительно »> раздел поведения клавиш Alt / Win> Ctrl сопоставлен с выигрышными клавишами (и обычными клавишами Ctrl)»
Серж Захарченко,

2
Не могу найти что-нибудь
подобное

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

5

Обновлено 18.04, поскольку ни один из предоставленных ответов не работал в моей системе. Я сделал чистую установку 18.04 и пытался использовать проводную алюминиевую клавиатуру Apple. Поведение Left Super по умолчанию на английском языке в США привязано к Gnome Desktop Dashboard. Инструмент Tweak имел все необходимые настройки в удобном графическом интерфейсе!

sudo apt install gnome-tweak-tool

Сначала я поменял горячую клавишу панели инструментов на правую сторону, а затем в разделе «Дополнительные параметры макета» вы можете использовать «Ctrl position / Swap Left Win with Left Ctrl » для хорошего эффекта.


gnome-tweak-tool потрясающий, спасибо!
Денис Голомазов

Это должен быть принятый ответ. В настоящее время для Mac я обнаружил, что в Gnome Tweak Tools есть нужная настройка: «Клавиатура и мышь»> «Дополнительные параметры макета»> «Положение Ctrl»> «Поменять местами левый выигрыш с помощью левого Ctrl». Клавиша Command на клавиатуре Mac называется «Win».
Бэллер

В 2019 году в Gnome это самое простое решение. Спасибо
Jymbob

1

Дубликат Как поменять местами клавиши Command и Control с xkb шаг за шагом?

В 16.04, вот как я, наконец, получил это на работу. Xmodmap не работает универсально во всех приложениях, в инструменте настройки gnome отсутствовала функция, 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 в качестве левой клавиши управления. Кажется, клавиши ALT работают по-другому. Вы знаете, как я могу это сделать?
Пьер Тибо

Тот же трюк работает для всего. Вы должны переключить как сопоставления клавиш, так и сопоставления modifier_map. Вы также можете перейти к настройкам gnome или gconf, я забыл, какие есть, и есть несколько параметров переключения, таких как «swap ctrl and alt».
Том Мерсер

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

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

Нет, я не пробовал файл. Я вижу, что позже в файле вы делаете переключение двух alt на два ctrl. Я пропустил это. Спасибо, что указали на это. Я попробую.
Пьер Тибо

0

Вы можете найти Кинто, чтобы быть полезным. Это проект, который я недавно создал, после нескольких лет решения этой проблемы несколькими различными способами, и я только сейчас чувствую, что он достаточно тверд, чтобы поделиться.

Установщик Kinto просто использует python для первоначальной установки, после этого это просто служба systemd, bash, xprop, setxkbmap и xkbcomp. Насколько мне известно, это самое быстрое и наиболее нативное решение этой проблемы, которое вы найдете.

https://github.com/rbreaves/kinto

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

Вот также Gist, если вы просто хотите увидеть, что лежит в основе всего этого, он не будет чередовать вашу таблицу клавиш при необходимости. 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.