Как заставить клавиатуру работать как OSX в масштабах всей системы?

Я постоянно переключаюсь между двумя компьютерами:

  • OSX Snow Leopard
  • Ubuntu 10.10

Я хотел бы иметь возможность заставить Ubuntu использовать те же сочетания клавиш, что и OSX Общесистемный, только для следующих последовательностей клавиш (т.Е. Я не хочу, чтобы Ctrl действовал как Super)

  • Super+C> - Копия

  • Super+V> - Паста

  • Super+T> - Откройте новую вкладку в любом браузере, в котором я нахожусь.

  • Super+W> - Закройте вкладку в любом браузере, в котором я нахожусь.

Итак, вкратце, есть ли что-нибудь, что я мог бы сопоставить просто эти последовательности клавиш на следующие, общесистемные ?

  • Super+C> - Ctrl+C
  • Super+V> - Ctrl+V
  • Super+T> - Ctrl+T
  • Super+W> - Ctrl+W

Я знаю, что у меня есть способы сделать это для vim и Firefox, и я уверен, что специально для большинства приложений... но я бы предпочел сделать это только один раз и заставить его работать таким образом общесистемный!

Я использую стандартную клавиатуру ПК, которая называется "Generic 105 key (intl) ПК" на Ubuntu. Я также использую ту же клавиатуру на своем Mac mini.

Если вы устанавливаете пакет xautomation, вы можете добавить команду в System/Preferences /Сочетания клавиш /Custom, например:

xte "keyup Meta_L" "keyup c" "keydown Control_L" "key c" "keyup Control_L"

и сопоставьте это с Meta-C.


Альтернативное Решение:

Установите автозапуск (apt-get install autokey-gtk) и установите фразу в:

Phrase Text: <ctrl>+C (actually type out the <ctrl>+ here)Paste Using: KeyboardAbbreviation: NoneHotkey: <super>+vWindow Filter: None

Начиная с Ubuntu 14, вы можете использовать Настройки GNOME:

sudo apt install gnome-tweaks # formerly gnome-tweak-tool

Затем найдите инструмент настройки > Клавиатура и мышь > Дополнительные параметры компоновки > Поведение клавиш Alt / Win.

И проверьте: Ctrl сопоставляется с клавишами Win и обычными клавишами Ctrl.

screenshot

Есть способ нанести на карту Ctrl к Win/Super ключ:

  1. идти к >>система-настройки-клавиатура,

  2. открытая вкладка Макеты,

  3. щелчок Опции...,

  4. открывать Alt/Win ключевое поведение,

  5. и выберите Управление сопоставляется с ключами Win

И для консоли есть сообщение на форуме, как это сделать здесь.

Для получения дополнительной информации ознакомьтесь с инструкцией по работе с клавиатурой Linux general здесь.

с уважением

Некоторые из вышеперечисленных решений устарели и не работают с Ubuntu 18.04. Вот обновленный ответ

  1. Устанавливать gnome-хитрости если он не установлен в системе

    sudo apt-get install gnome-tweaks

  2. Откройте список приложений, нажав Показать приложения вкл. в левом нижнем углу.

  3. Обратите внимание, что это только изменит поведение клавиши WINDOWS на клавишу CMD и сохранит клавишу CTRL такой же, как и раньше (у вас будет 2 клавиши CTRL). Если вам это не нравится, пропустите шаг 4 и перейдите к шагу 5

  4. Искать Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Alt/Win behavior --> Select Control is mapped to Win keys and the usual Ctrl Keys.

  5. Пропустите этот шаг, если вы выполнили шаг 4. Этот шаг изменит поведение клавиш Windows на Ctrl и наоборот. Искать Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Ctrl Position --> Select Swap Left Win with Left Ctrl

  6. Еще одна вещь, которой мне не хватает в macOS, - это возможность переключать окна с помощью CMD + Tab (в данном случае Windows + Tab). Для достижения этой цели перейдите к Settings --> Keyboard --> Look for Switch Windows under navigation section --> Double Click it and press Windows+Tab when pop up appears

Натыкаюсь на это! Твои мизинцы будут мне благодарны

Все часть моей мышечной памяти основана на Mac, и я использую Mac на работе и в личной жизни, но я случайно столкнулся с Dell Latitude E7470 и подумал, что я мог бы также попробовать Linux (поскольку мой Macbook Pro выпущен в 2012 году и довольно тяжелый, и я просто не хотел возиться с \r\n окончания строк). Так что это была медленная работа над тем, чтобы выяснить, как изменить систему в соответствии с моей мышечной памятью, вместо того, чтобы заново изучать сочетания клавиш.

>>Сначала я просто использовал Параметры раскладки клавиатуры... настройки для "Ctrl сопоставляется с Alt; Alt сопоставляется с Win" но, и это очень незначительная вещь, мне не понравилось, что мои настройки не применялись до тех пор, пока после Я прошел мимо встречающего. У меня также возникли проблемы с запуском ~ /.Xmodmap при запуске (либо сам по себе, как часть .xinitrc, либо как пользовательская команда запуска в приложениях запуска и в /etc/default/

В настоящее время я бегу Ubuntu MATE 19.10 (Eoan), и клавиатура распознается как пк105

Вам нужно будет изменить приведенный ниже сценарий (или отдельные файлы, если вы уже внесли в них другие изменения, которые хотите сохранить), чтобы они соответствовали любой клавиатуре, установленной на вашем компьютере.

Создайте ~/.Xmodmap:

echo '! -*- coding: utf-8 -*-! keycode  37 = Control_L NoSymbol Control_L! keycode  64 = Alt_L Meta_L Alt_L Meta_L! keycode 105 = Control_R NoSymbol Control_R! keycode 108 = Alt_R Meta_R Alt_R Meta_R! keycode 133 = Super_L NoSymbol Super_L! keycode 134 = Super_R NoSymbol Super_R! keycode 135 = Menu NoSymbol Menu! keycode 147 = XF86MenuKB NoSymbol XF86MenuKB! keycode 204 = NoSymbol Alt_L NoSymbol Alt_L! keycode 206 = NoSymbol Super_L NoSymbol Super_L!! keycode 105 = Alt_R Meta_Rclear controlclear mod1clear mod4keycode 37 = Super_Lkeycode 105 = Super_Rkeycode 133 = Alt_L Meta_Lkeycode 64 = Control_Lkeycode 108 = Control_Radd control = Control_L Control_Radd mod1 = Alt_L Meta_Ladd mod4 = Super_L Super_R' > ~/.Xmodmap

сделайте ~/.xinitrc:

echo 'if [ -s ~/.Xmodmap ]; then    xmodmap ~/.Xmodmapfixmodmap ~/.Xmodmap' > ~/.xinitrc

Измените файл символов клавиатуры X11 для вашей клавиатуры (важной частью здесь является include "altwin(ctrl_alt_win)" до // End of modifier mappings. Это неизмененный в остальном файл /usr/share/X11/xkb/symbols/pc):

echo 'default  partial alphanumeric_keys modifier_keysxkb_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> {    [ Control_L     ]   };    key <LWIN> {    [ Super_L       ]   };    key <RTSH> {    [ Shift_R       ]   };    key <RCTL> {    [ Control_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, Alt_L   ]   };    include "altwin(meta_alt)"    key <META> {    [ NoSymbol, Meta_L  ]   };    modifier_map Mod1   { <META> };    key <SUPR> {    [ NoSymbol, Super_L ]   };    modifier_map Mod4   { <SUPR> };    key <HYPR> {    [ NoSymbol, Hyper_L ]   };    modifier_map Mod4   { <HYPR> };    include "altwin(ctrl_alt_win)"    // End of modifier mappings.    key <OUTP> { [ XF86Display ] };    key <KITG> { [ XF86KbdLightOnOff ] };    key <KIDN> { [ XF86KbdBrightnessDown ] };    key <KIUP> { [ XF86KbdBrightnessUp ] };};hidden partial alphanumeric_keysxkb_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        ]   };};' >/usr/share/x11/xkb/symbols/pc

И на всякий случай, вот соответствующая часть /usr /share/X11/xkb/symbols/altwin, если вам нужно добавить ее вручную:

// Ctrl is mapped to the Alt, Alt to the Super, and Win to the Ctrl keys.partial modifier_keysxkb_symbols "ctrl_alt_win" {    key <LALT> { [ Control_L, Control_L  ] };    key <RALT> { type[Group1] = "TWO_LEVEL",                 symbols[Group1] = [ Control_R, Control_R ] };    key <LWIN> { [ Alt_L, Meta_L ] };    key <RWIN> { [ Alt_R, Meta_R ] };    key <LCTL> { [ Super_L ] };    key <RCTL> { [ Super_R ] };    modifier_map Control { <RALT>, <LALT> };    modifier_map Mod1 { <LWIN>, <RWIN> };    modifier_map Mod4 { <LCTL>, <RCTL> };};

Изменить /etc/defaults/keyboard:

echo '# KEYBOARD CONFIGURATION FILE# Consult the keyboard(5) manual page.XKBMODEL="pc105"XKBLAYOUT="us"XKBVARIANT=""XKBOPTIONS="caps:shift_nocancel,ctrl:alt,alt:win,win:ctrl"BACKSPACE="guess"' >/etc/default/keyboard

И, наконец, вот мои дампы GNOME и Marco keybinding dconf:

гном:

[org/gnome/desktop/wm/keybindings]activate-window-menu=['disabled']begin-move=['disabled']close=['<Control>q']maximize=['<Alt><Super>m']minimize=['<Control>m']move-to-corner-ne=['disabled']move-to-corner-nw=['disabled']move-to-corner-se=['disabled']move-to-corner-sw=['disabled']move-to-side-e=['disabled']move-to-side-n=['disabled']move-to-side-s=['disabled']move-to-side-w=['disabled']move-to-workspace-1=['<Shift><Super>Home']move-to-workspace-down=['<Shift><Super>Next']move-to-workspace-up=['<Shift><Super>Prior']show-desktop=['<Control>F3']switch-to-workspace-1=['<Super>Home']switch-to-workspace-down=['<Super>Next']switch-to-workspace-up=['<Super>Prior']switch-windows=['disabled']switch-windows-backward=['disabled']toggle-fullscreen=['<Control><Super>f']toggle-maximized=['<Shift><Control>m']toggle-shaded=['<Alt><Super>s']unmaximize=['<Control><Alt>m']

Марко:

[org/mate/marco/global-keybindings]cycle-group='<Primary>grave'cycle-panels='disabled'cycle-windows='<Alt>grave'run-command-screenshot='<Primary><Shift>numbersign'run-command-window-screenshot='<Primary><Shift>dollar'show-desktop='<Primary>F3'switch-group='<Alt>Tab'switch-to-workspace-1='<Primary><Mod4>1'switch-to-workspace-2='<Primary><Mod4>3'switch-to-workspace-3='<Primary><Mod4>2'switch-to-workspace-4='<Primary><Mod4>4'switch-to-workspace-down='<Mod4>Down'switch-to-workspace-left='<Mod4>Left'switch-to-workspace-prev='<Shift><Mod4>Tab'switch-to-workspace-right='<Mod4>Right'switch-to-workspace-up='<Mod4>Up'switch-windows='<Primary>Tab'[org/mate/marco/window-keybindings]activate-window-menu='disabled'begin-move='<Primary><Shift><Mod4>m'begin-resize='<Primary><Shift><Mod4>r'close='<Primary>q'maximize='<Alt><Mod4>m'maximize-horizontally='<Alt><Mod4>h'maximize-vertically='<Alt><Mod4>v'minimize='<Primary>m'move-to-corner-ne='<Alt><Mod4>2'move-to-corner-nw='<Alt><Mod4>1'move-to-corner-se='<Alt><Mod4>4'move-to-corner-sw='<Alt><Mod4>3'move-to-side-e='<Alt><Mod4>Left'move-to-side-n='<Alt><Mod4>Up'move-to-side-s='<Alt><Mod4>Down'move-to-side-w='<Alt><Mod4>Right'move-to-workspace-1='<Primary><Alt><Mod4>1'move-to-workspace-2='<Primary><Alt><Mod4>2'move-to-workspace-3='<Primary><Alt><Mod4>3'move-to-workspace-4='<Primary><Alt><Mod4>4'move-to-workspace-down='<Primary><Mod4>Down'move-to-workspace-left='<Primary><Mod4>Left'move-to-workspace-right='<Primary><Mod4>Right'move-to-workspace-up='<Primary><Mod4>Up'tile-to-corner-ne='<Shift><Alt>at'tile-to-corner-nw='<Shift><Alt>exclam'tile-to-corner-se='<Shift><Alt>dollar'tile-to-corner-sw='<Shift><Alt>numbersign'tile-to-side-e='<Shift><Alt>Right'tile-to-side-w='<Shift><Alt>Left'toggle-fullscreen='<Primary><Mod4>f'toggle-maximized='<Primary><Shift>m'toggle-shaded='<Alt><Mod4>s'unmaximize='<Alt><Mod4>r'

Чтобы подробнее остановиться на подсказка cscarney's AutoKey от cscarney, Я развиваю свой Автоключ конфигурация для достижения всего этого в Ubuntu (OS X-like <cmd>+c, <cmd>+v, ... В стиле Emacs <ctrl>+f, <ctrl>+b, ...) в моем репозиторий dotfile.

Я не использую базовые фразы (где фильтрация окон в настоящее время сломан), но скрипты Python, чтобы иметь возможность отключить автозапуск в таких приложениях, как Emacs, Eclipse, Vim, gnome-terminal... где я не хочу портить существующие ярлыки.

Вы можете ознакомиться с README внизу приведены инструкции по его настройке.

Редактировать: Простой подход, который я описываю здесь, имеет некоторые недостатки (упомянутые ниже, наиболее заметные с помощью липких клавиш). Так что теперь я рекомендую проверить Кинто что позволяет избежать подобных проблем, предварительно переназначив клавиатуру.


Мне нужно было решение, которое работало бы в любой среде рабочего стола / оконном менеджере, поэтому я объединил предложение cscarney использовать xautomation с SXHKD (простой демон горячих клавиш X).

Вот основные ~/.config/sxhkd/sxhkdrc конфигурационный файл, который я создал.

Продвинутый: Мой последняя версия является более полным и может отправлять разные нажатия клавиш для разных приложений, но для этого требуется внешний скрипт и, вероятно, имеет некоторые привязки, которые вам не нужны.

Вот фрагмент:

# Reload this configcontrol + alt + shift + r  killall -USR1 -u "$USER" sxhkd && echo 'sxhkd config reloaded'# Cut, copy and pastealt + x  xte "keyup x" "keyup Meta_L" "keydown Control_L" "key x" "keyup Control_L" "keydown Meta_L"alt + c  xte "keyup c" "keyup Meta_L" "keydown Control_L" "key c" "keyup Control_L" "keydown Meta_L"    alt + v  xte "keyup v" "keyup Meta_L" "keydown Control_L" "key v" "keyup Control_L" "keydown Meta_L"# Open tab, close tab, restore closed tabalt + t  xte "keyup t" "keyup Meta_L" "keydown Control_L" "key t" "keyup Control_L" "keydown Meta_L"alt + w  xte "keyup w" "keyup Meta_L" "keydown Control_L" "key w" "keyup Control_L" "keydown Meta_L"    alt + shift + t  xte "keyup t" "keyup Meta_L" "keydown Control_L" "key t" "keyup Control_L" "keydown Meta_L"# Move to home/endalt + Left  xte "keyup Meta_L" "keyup Left" "key Home" "keydown Meta_L"alt + Right  xte "keyup Meta_L" "keyup Right" "key End" "keydown Meta_L"alt + shift + Left  xte "keyup Meta_L" "keyup Left" "key Home" "keydown Meta_L"alt + shift + Right  xte "keyup Meta_L" "keyup Right" "key End" "keydown Meta_L"# Move one wordsuper + Left  xte "keyup Super_L" "keyup Left" "keydown Control_L" "key Left" "keyup Control_L" "keydown Super_L"super + Right  xte "keyup Super_L" "keyup Right" "keydown Control_L" "key Right" "keyup Control_L" "keydown Super_L"super + shift + Left  xte "keyup Super_L" "keyup Left" "keydown Control_L" "key Left" "keyup Control_L" "keydown Super_L"super + shift + Right  xte "keyup Super_L" "keyup Right" "keydown Control_L" "key Right" "keyup Control_L" "keydown Super_L"

Примечание:

  • Как вы можете видеть, если я нажму исходную клавишу-модификатор перед выполнением виртуального штриха, то после этого я снова нажму ее. Это означает, что пользователь может повторить нажатие клавиши без необходимости снова отпускать и нажимать клавишу-модификатор. Другими словами, после нажатия клавиши Alt-W система видит, что клавиша Alt нажата.

Предостережения:

  • Это может стать проблемой (особенно на более медленных машинах), если вы отпустите клавишу Alt во время выполнения команды xte все еще работает. В итоге вы получите "липкую" клавишу Alt, потому что xte нажал ее для вас!

  • Используя этот подход, триггеры не повторится если клавиша удерживается нажатой. (Таким образом, вы не можете переместить 12 слов, удерживая нажатой клавишу Super-Left.)

Это простая задача, если вы знаете, как это сделать.

  1. Проверьте код вашего ключа. Запустите эту программу в терминале.

    xev</pre>  

    В этом примере терминал показывает, что код ключа для моего k составляет "45".

  2. Измените их так, как вам нравится, создавая этот файл:

    gedit ~/.Xmodmap</pre>  
  3. Его содержимое должно выглядеть следующим образом:

    keycode 64 = Alt_L Meta_L Alt_L Meta_L  keycode 108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift  

    (Измените номер ключевого кода по мере необходимости - посмотрите на шаг "1")

    Илюстрация:

    Обс.: если я хочу изменить свое k Я должен использовать "код ключа 45", как показано на шаге "1".

  4. Выйдите из системы и снова войдите в систему, перезагрузитесь или запустите это:

    xmodmap ~/.Xmodmap</pre>  

    Надеюсь, вам понравится ;-)

Подобно и основываясь на отличной работе других, я создал репозиторий с моими ярлыками автозапуска и инструкциями по получению этой настройки:

https://github.com/bliles/autokey-macos

Первый
Установка компакт-диска с гостевыми дополнениями (Devices->Insert Guest Additions CD image).

Активировать общий доступ к буферу обмена
Затем, после перезагрузки, в Virtualbox перейдите в Machine->Settings->General->Advanced и установить
Shared Clipboard: Bidrectional

Изменить ключ хоста VirtualBox
В Vitualbox/Preferences/Input/Virtual Machine/Host Key Combination
выберите что-то другое, тогда

Сопоставление ключей:
Для cmd/ctrl отображение для меня добавление английской клавиатуры (Macintosh) кажется наиболее удобным решением :)

Идти к Ubuntu Settings->Text Entry
(Я предполагаю, что в более старых версиях это может быть в настройках раскладки клавиатуры)
Под Input sources to use: нажмите плюс (+)
добавлять English (Macintosh)

Я использую Ubuntu 14.04.3 LTS 64bit в VirtualBox 5.0.4

Если вы набрали это для всех сочетаний клавиш Mac, то поделиться своим конфигурационным файлом было бы потрясающе! Спасибо

Эй! Хотел бы я по-прежнему это делать, но сейчас я работаю исключительно на Mac, так как сменил работу :wink: Так что у меня нигде нет моей старой конфигурации…

решения не работают на элементарной ОС.’