Как заставить клавиатуру работать как OSX System Wide?


111

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

  • OSX Снежный Барс
  • Ubuntu 10.10

Мне бы хотелось, чтобы Ubuntu использовала те же сочетания клавиш, что и OSX System Wide , только для следующих последовательностей клавиш (т.е. я не хочу, чтобы 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, и я уверен, что именно для большинства приложений ... но я бы предпочел сделать это только один раз и сделать так, чтобы это работало в масштабе всей системы !

Я использую стандартную клавиатуру для ПК, то есть «Универсальный 105-клавишный ПК» в Ubuntu. Я также использую ту же клавиатуру на моем Mac mini.


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

Привет! Хотелось бы, чтобы я все еще работал, но сейчас я работаю исключительно на Mac, так как я перешел на другую работу ;-) Так что у меня нигде нет моей старой конфигурации ...
Брэд

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

Ответы:


38

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

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

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


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

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

Phrase Text: <ctrl>+C (actually type out the <ctrl>+ here)
Paste Using: Keyboard
Abbreviation: None
Hotkey: <super>+v
Window Filter: None

Привет! это выглядит очень многообещающе ... я установил и могу запустить вышеупомянутую команду xte из терминала, и она выводит "^ C" в терминале ... что выглядит хорошо для меня! но когда я сопоставляю его с помощью сочетаний клавиш, он ничего не делает ... Я попытался сопоставить другую программу с Meta-C, и она работает нормально (т.е. прекрасно запускается, когда я нажимаю Meta-C). Я также попытался указать полный путь к xte (/ usr / bin / xte), и это тоже не сработало ... Вы можете попробовать это в своей системе и посмотреть, работает ли он? Спасибо!
Брэд парки

1
Таким образом, xte отправляет коды клавиш правильно, но, очевидно, приложения видят комбинацию клавиш и нажатий клавиш, отправленных xte (например, Meta-Control-C). Я обновил свой ответ, чтобы имитировать отпускание сочетаний клавиш перед отправкой нажатий клавиш.
Скарни

2
При быстрой проверке это работает для меня, но я нашел решение, которое, вероятно, будет более надежным, чем xte (даже если оно будет работать). Проверьте исправленный ответ.
cscarney

1
Привет! спасибо @cscarney! Ваше «Альтернативное решение» для AutoKey полностью работает! Огромное спасибо за ваши постоянные усилия в этом!
Брэд

1
Решения не работают для Ubuntu 18.04
JZ.

17

Для Ubuntu 14 или новее вы можете сделать это:

sudo apt-get install gnome-tweak-tool

Затем найдите Tweak Tool> Typing> Alt / Win key.

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


Кажется, ничего не делает или не работает с Mac
chovy

В новой установке Ubuntu 16 для установки этого, по-видимому, требуется gnome-settings-daemon, который, по-видимому, ведет за пакетом пакетов, которые не чувствуются так, как будто предназначены для установки.
Том Лианза

Безусловно, самый простой вариант, если вы просто хотите, чтобы командная клавиша была похожа на клавишу cmd в Mac, в основном для копирования и вставки. Я на Ubuntu-gnome-desktop
lxm7

Это прекрасно работает для команд копирования и вставки и не позволяет мне постоянно открывать меню поиска в Ubuntu. Теперь мне просто нужно сопоставить Command-Tab с Alt-Tab
Рон Смит

1
Я не вижу Tweak Tool в моих приложениях. Что я должен делать?
Jadda

13

Существует способ для отображения Ctrlв Win/ Superключ:

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

  2. открыть вкладку Layouts ,

  3. нажмите Параметры ... ,

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

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

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

Для более подробного изучения, ознакомьтесь с общим руководством по клавиатуре Linux здесь .

С уважением


3
эй @danizmax - спасибо за ответ ... но я бы особенно хотел избежать изменения полного поведения Ctrl ... я нахожу это винтами с другими вещами, если я делаю ... я действительно хотел бы отобразить только сочетания клавиш, которые я упомянул в посте ... спасибо, хотя!
Брэд парки

Хорошо Ctr + остается как есть. Он только дублирует все Ctrl + до Super +, поэтому вы просто добавляете поведение. Если вы действительно не хотите менять только те, о которых упоминали, вам придется много копаться с помощью xmodmap и loadkeys. Я добавил ссылку на общую клавиатуру Linux HOWTO. Надеюсь, это поможет: P
danizmax

1
Это было самое простое решение из всех предложенных.
Datageek

1
Я больше не вижу опций «опции» или «поведения клавиш alt / win» в системных настройках в Ubuntu 15.10.
user29020

1
это теперь в
гномах

8

Для того, чтобы расширить Autokey намек cscarney в , я развиваю свой Autokey конфигурацию , чтобы достичь всего этого в Ubuntu (OS X-как <cmd>+c, <cmd>+v, ... Emacs стиле <ctrl>+f, <ctrl>+b...) в моем dotfile репо .

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

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


ссылка не работает для приложения
chifliiiii

@chifliiiii исправил ссылки, но учтите, что связанная конфигурация в моих точечных файлах, скорее всего, устарела, потому что я не использовал ее годами.
metakermit

5

Некоторые из вышеперечисленных решений устарели и не работают с 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


5

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

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

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

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

# Reload this config
control + alt + shift + r
  killall -USR1 -u "$USER" sxhkd && echo 'sxhkd config reloaded'

# Cut, copy and paste
alt + 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 tab
alt + 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/end
alt + 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 word
super + 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.)


Раньше я использовал его bbkeys, но, к сожалению, в наши дни его не упаковывают в такое количество дистрибутивов.
Joeytwiddle

4

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

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

Ксев


В этом примере терминал показывает, что код клавиши для my k- «45».

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

gedit ~ / .Xmodmap

Это содержимое должно выглядеть следующим образом:

код клавиши 64 = Alt_L Meta_L Alt_L Meta_L
код ключа 108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift

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

Иллюстрационная:
(Обс .: если я хочу изменить свой, kя должен использовать «код 45», как показано на шаге «1»).

4) Выйдите из системы и снова войдите в систему или перезагрузите компьютер или выполните следующее:

xmodmap ~ / .Xmodmap

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


2

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

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


1

Сначала
установите CD с гостевыми дополнениями ( Devices->Insert Guest Additions CD image).

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

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

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

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

Я на Ubuntu 14.04.3 LTS 64bit в VirtualBox 5.0.4


1

Вот гораздо более простое решение, Кинто. Я работаю над этим уже 3 года ... и, наконец, чувствую, что могу внести свой вклад в ответ из-за того, насколько хорошо это работает, в отличие от моих последних 2 попыток. Он предназначен для x11 и системных дистрибутивов, но эта концепция будет перенесена в Wayland, как только я найду хороший способ ее реализовать, несмотря на повышенную безопасность, с которой сложно работать.

1) Суть (для тех, кто просто хочет увидеть предпосылку или внедрить собственное альтернативное решение, крайние случаи не рассматриваются).

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

2) Полный установщик, который использует systemd, bash и xprop. (Крайние случаи, как хромбуки покрыты, было удивительно трудно поддерживать, но я наслаждаюсь, так что каждый может получить выгоду!)

https://github.com/rbreaves/kinto

Причина для Kinto, японского языка для флип, заключается в том, что даже если вы усовершенствовали перераспределение клавиш для каждого обычного приложения с графическим интерфейсом, используя другой метод, вы не будете иметь такой же опыт работы с терминалом, как в Linux, просто на Mac. И это прискорбно - потому что Mac портят нас разработчиками с помощью карты ключей, которая на удивление хорошо работает для терминальных приложений. Смысл того, что я сделал, изменив вашу раскладку ключей на 1 из 2 вариантов макета с помощью setxkbmap и используемого активного приложения, заключается в том, что вам нужно создать наименьшее количество дополнительных сочетаний клавиш, специфичных для любого конкретного приложения.

По сути, с этим решением вы не боретесь с тем, как правильно создавать новые сочетания клавиш или пытаетесь избежать конфликтов сочетаний клавиш в ваших терминальных приложениях с остальными приложениями с графическим интерфейсом. Вы просто получаете лучшее из обоих слов, и это работает настолько легко, насколько это возможно - помимо включения стандартных конфигурационных файлов ярлыков для различных терминалов и популярных текстовых редакторов, которые я могу включить позже. Даже текстовые редакторы, такие как Sublime, не просто меняют клавишу Cmd с помощью Ctrl на каждом ярлыке, но они выровнены правильно примерно в 95% или более случаев, как я бы сказал.

И говоря о Wayland, у меня есть доказательство того, как заставить этот трюк с переключением клавиш работать на KDE Plasma 5 с существующим виджетом, который извлекает имена приложений. Если у кого-то есть лучшее решение, то я весь в ушах, особенно если оно может работать и на x11. Xprop вполне достаточно на x11, но, очевидно, бесполезно на Wayland.

https://github.com/rbreaves/applet-window-title/commit/ff17e694579a52a9848d6bea87b2d11f22033718


0

У меня нет Ubuntu под рукой (Mac здесь, Ubu в офисе), но я использую клавиатуру Mac там и по тем же причинам, что и вы, хотели это сделать.

Прежде всего, убедитесь, что ваша клавиатура установлена ​​как клавиатура Mac. Я думаю, что вы можете изменить это в системе-> настройки-> клавиатура. Пока вы там, одна из вкладок откроет вам страницу сопоставления клавиш, где вы можете настроить работу клавиши cmd.

Как я уже сказал, я не могу вспомнить точно - я могу указать на биты на моем экране здесь, но это не работает, потому что меня там нет.

Если вы все еще застряли завтра, я посмотрю еще раз.


система-> настройки-> клавиатура-> раскладки-> параметры
Лев

Привет, Лео ... Я не использую клавиатуру Mac с Ubuntu, хотя ... Я использую стандартную клавиатуру ПК, то есть "Универсальный 105-клавишный ПК" попытался переключить мою "модель клавиатуры" на Vendor Apple / Модель Apple, но, похоже, это не имело никакого значения .... Я также попробовал Vendor Apple / модель Macbook, и это тоже ничего не изменило ...
Брэд

и что бы это ни стоило, я использую ту же самую клавиатуру ПК на моем Macmini, так как я купил ее подержанным, а не с клавиатурой Mac. еще раз спасибо.
Брэд

0

Autokeys работал на меня. Теперь win + c (v, x, a) работает вокруг моей системы, как я и ожидал.

1. Установите автоключи

sudo apt install autokey-gtk

2. Настройте автоключи

  1. Добавьте корневую папку, назовите ее как MacKeys или как угодно
  2. Там вы создадите 4 скрипта для Ctrl-C, V, X и
  3. назначить каждому скрипту горячие клавиши super-c, super-v и т. д.
  4. заполните сценарии с кодом ниже (замените букву c для других комбинаций)

winClass = window.get_active_class() keys = "<ctrl>+c" if winClass == "gnome-terminal-server.Gnome-terminal": keys = "<ctrl>+<shift>+c"; keyboard.send_keys(keys)

4а. Для CmdZ, CmdA или CmdX работают с более простым скриптом, таким какkeyboard.send_keys("<ctrl>+x")

3. Добавьте / usr / bin / autokey-gtk в автозагрузку приложений

4. Отключить win-A в настройках клавиатуры

Обычно win-a переключается на обзор.

5. Опционально, полностью предотвратить победу, чтобы переключить обзор

Возможно, вы захотите удалить его. Установите gnome-tweak-tool, перейдите к клавиатуре и повторите переключение с рабочего стола на обзор. Это сработало для моего гнома Ubuntu 16.04.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.