Як змусити клавіатуру працювати як OSX System Wide?


111

Я постійно перемикаюся між двома комп'ютерами:

  • OSX Snow Leopard
  • 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, і я впевнений, що спеціально для більшості програм ... але я вважаю за краще зробити це лише один раз і дозволити йому працювати таким чином по всій системі !

Я використовую стандартну клавіатуру ПК, тобто "Generic 105 key (intl) PC" на Ubuntu. Я також використовую ту саму клавіатуру на своєму Mac mini.


4
Якщо ви набрали це для всіх комбінацій клавіш Mac, спільний доступ до вашого конфігураційного файлу був би приголомшливим! Дякую
Dolan Antenucci

ей! Мені б хотілося, що я все-таки це робив, але зараз працюю виключно над Mac, тому що я переїхав на роботу ;-) Так що я не маю своєї старої конфігурації ніде ...
brad parks

рішення не працюють на елементарній ОС. '
Пашаліс

Відповіді:


38

Якщо ви встановите пакет xautomation, ви можете додати команду в System / Preferences / Комбінації клавіш / Custom /, наприклад:

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), і це не спрацювало ... чи можете ви спробувати це у вашій системі та побачити, чи працює він? Дякую!
brad parks

1
Отже xte коректно надсилає коди ключів, але, мабуть, програми бачать комбінацію клавіш швидкого доступу та натискання клавіш, що надсилаються xte (наприклад, Meta-Control-C). Я оновив свою відповідь, щоб імітувати звільнення клавіш швидкого доступу, перш ніж надсилати натискання клавіш.
cscarney

2
Після швидкої перевірки це працює для мене, але я знайшов рішення, яке, ймовірно, буде більш надійним, ніж xte (навіть якщо ви працюєте з ним). Перевірте переглянуту відповідь.
cscarney

1
ей! дякую @cscarney! ваше "Альтернативне рішення" для AutoKey повністю працює! дякую тонну за ваші постійні зусилля щодо цього!
брад парки

1
Рішення не працюють для Ubuntu 18.04
JZ.

17

Для Ubuntu 14 або новішої версії ви можете зробити це:

sudo apt-get install gnome-tweak-tool

Тоді шукайте інструмент "Налаштування"> "Набір тексту"> "Клавіша Alt / Win"

І перевірте: Ctrl відображається на клавіші Win (і звичайні клавіші Ctrl)


Здається, нічого не робить або не є поведінкою Mac
човен

У новому встановленні Ubuntu 16, для встановлення цього, схоже, потрібен gnome-settings-daemon, який, здається, веде вниз слід пакетів, які не відчувають, що вони мали бути встановлені.
Tom Lianza

На сьогоднішній день найбільш прямий варіант, якщо ви просто хочете, щоб командна клавіша була схожа на ключ cmd у mac, головним чином для копіювання та вставки. Я на робочому столі ubuntu-gnome
lxm7

Це чудово підходить для команд копію-вставки та не дає мені постійно відкривати річ із меню пошуку в Ubuntu. Тепер мені просто потрібно намалювати Command-Tab на Alt-Tab
Рон Сміт

1
Я не бачу інструменту підстроювання в своїх додатках. Що я повинен зробити?
Джадда

13

Існує спосіб для відображення Ctrlв Win/ Superключ:

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

  2. відкриті вкладки Layouts ,

  3. натисніть Опції ... ,

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

  5. і виберіть Керування відображається на клавіші Win

А для консолі є повідомлення на форумі, як це зробити тут .

Щоб дізнатися більше, перегляньте загальну клавіатуру Linux HOWTO тут .

з повагою


3
Ей @danizmax - дякую за відповідь ... але я спеціально хотів би уникати зміни повної поведінки Ctrl ... Я вважаю, що це гвинти з іншими речами, якщо я це роблю ... Мені б дуже хотілося скласти карту лише комбінації клавіш, про які я згадував у публікації ... хоч дякую!
брад парки

Ну а Ctr залишається таким, яким він є. Він лише копіює всі Ctrl + в Super +, тому ви просто додаєте поведінку. Якщо ви дійсно не хочете змінити лише ті, про які ви згадали, вам доведеться багато копати за допомогою xmodmap та loadkeys. Я додав посилання на загальну клавіатуру Linux HOWTO. Сподіваюся, що це допомагає: P
danizmax

1
Це було найпростішим рішенням із усіх запропонованих.
Datageek

1
У системних налаштуваннях Ubuntu 15.10 я більше не бачу опції «параметри» або «поведінка клавіш alt / win» в системних налаштуваннях.
user29020

1
це зараз у налаштуваннях gnome, "клавіатура та миша"
Yrogirg

8

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

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

Ви можете ознайомитись із READMEвнизу, щоб дізнатися, як його налаштувати.


для програми додано посилання
chifliiiii

@chifliiiii виправив посилання, але зауважте, що пов'язаний конфігурація в моїх dotfiles, швидше за все, застарів, тому що я не використовував його вже роками.
metakermit

5

Деякі з перерахованих вище рішень старі і не працюють з Ubuntu 18.04. Ось оновлена ​​відповідь

  1. Встановити gnome-tweaks, якщо він не встановлений у системі

    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) Перевірте код вашого ключа. Запустіть цю програму на терміналі.

xev


У цьому прикладі термінал показує, що код ключа для мого k"45".

2) Змініть їх так, як вам подобається створити цей файл:

gedit ~ / .Xmodmap

Його вміст повинен виглядати приблизно так:

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

(Змініть номер коду за потребою - подивіться крок "1")

Ілюстрація:
( Повідомлення: якщо я хочу змінити свою, kя повинен використовувати "keycode 45", як показано на кроці "1").

4) Вийдіть із системи та увійдіть назад або перезавантажте або запустіть це:

xmodmap ~ / .Xmodmap

Сподіваюся, вам сподобається ;-)


2

Подібно до та на основі чудової роботи інших людей, я зробив репо з своїми ярликами Autokey та інструкціями щодо отримання цієї настройки:

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


1

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

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

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

Картографування клавіш :
Для cmd/ctrlвідображення для мене додавання англійської (Macintosh) клавіатури здається найзручнішим рішенням :)

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

Я на Ubuntu 14.04.3 LTS 64bit у VirtualBox 5.0.4


1

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

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

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

2) Повна програма для встановлення, яка використовує systemd, bash та xprop. (Висвітлюються випадки кромки, як-от хронічні книги, це було напрочуд важко підтримати, але мені подобається моє, тому кожен може отримати користь!)

https://github.com/rbreaves/kinto

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

По суті, з цим рішенням ви не боретеся, як правильно створити нові клавіші швидкого доступу або не намагаєтеся уникнути конфліктів ярликів у своїх додатках Terminal порівняно з іншими вашими програмами GUI. Ви просто отримуєте найкраще з обох слів, і воно працює так само легко, наскільки це можливо - крім включення файлів конфігурації ярликів за замовчуванням для різних терміналів та популярних текстових редакторів, які я можу включити пізніше. Навіть текстові редактори на зразок 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 (внутрішній) ПК" намагалася переключити "модель клавіатури" на постачальник Apple / Модель Apple, але це, схоже, не має ніякого значення .... Я також спробував Veckor Apple / Model Macbook, і це, схоже, нічого не змінило ...
brad parks

і для чого це варто, я використовую точно таку ж клавіатуру ПК на своєму macmini, як і я придбав її в секонд-хенді, і вона не поставляється з mac-клавіатурою. знову дякую.
брад парки

0

Автомобільні ключі працювали для мене. Тепер win + c (v, x, a) працюйте навколо моєї системи так, як я цього очікував.

1. Встановіть автоматичні ключі

sudo apt install autokey-gtk

2. Налаштуйте автоматичні ключі

  1. Додайте кореневу папку, назвіть її чимось на зразок MacKeys чи будь-чого іншого
  2. Ви створите там 4 сценарії для ctrl-c, v, x та a
  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-інструмент, перейдіть на клавіатуру та перемкніть перемикання з робочого столу на огляд. Це працювало для мого гнома ubuntu 16.04.

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