Как заставить клавиатуру работать как 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.