Jak sprawić, by klawiatura działała jak OSX System Wide?

111

Ciągle przełączam się między dwoma komputerami:

  • OSX Snow Leopard
  • Ubuntu 10.10

Chciałbym mieć możliwość, aby Ubuntu używał tych samych skrótów klawiaturowych co OSX System Wide , tylko dla następujących sekwencji klawiszy (tj. Nie chcę, aby Ctrl działał jak Super)

  • Super+C -> Kopiuj

  • Super+V -> Wklej

  • Super+T -> Otwórz nową kartę w dowolnej przeglądarce, w której korzystam.

  • Super+W -> Zamknij kartę w dowolnej przeglądarce, w której korzystam.

Krótko mówiąc, czy w ogóle mogę zmapować tylko te sekwencje klawiszy do następujących po całym systemie?

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

Wiem, że istnieją sposoby, aby to zrobić dla vima i Firefoksa, i jestem pewien, że w szczególności dla większości aplikacji ... ale wolałbym to zrobić tylko raz i pozwolić, aby działało w ten sposób w całym systemie !

Używam standardowej klawiatury komputera, czyli „Generic 105 key (intl) PC” na Ubuntu. Używam tej samej klawiatury na komputerze Mac mini.

Brad parki
źródło
4
Jeśli wybierzesz tę opcję dla wszystkich skrótów klawiaturowych na komputerze Mac, udostępnienie pliku konfiguracyjnego byłoby wspaniałe! Dzięki
Dolan Antenucci,
Hej! Chciałbym, żeby nadal tak było, ale teraz pracuję wyłącznie na komputerach Mac, ponieważ przeniosłem pracę ;-) Więc nie mam nigdzie mojej starej konfiguracji ...
Brad Parks
rozwiązania nie działają na podstawowym systemie operacyjnym. ”
Paschalis,

Odpowiedzi:

38

Jeśli zainstalujesz pakiet xautomation, możesz dodać polecenie w System / Preferencje / Skróty klawiaturowe / Niestandardowe, takie jak:

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

i zamapuj to na Meta-C.


Alternatywne rozwiązanie:

Zainstaluj AutoKey (apt-get install autokey-gtk) i ustaw frazę na:

Phrase Text: <ctrl>+C (actually type out the <ctrl>+ here)
Paste Using: Keyboard
Abbreviation: None
Hotkey: <super>+v
Window Filter: None
cscarney
źródło
Hej! wygląda to bardzo obiecująco ... zainstalowałem i mogę uruchomić powyższą komendę xte z terminala, i wypisuje "^ C" w terminalu ... co dla mnie wygląda dobrze! ale kiedy mapuję go w Skrótach klawiszowych, nic nie robi ... Próbowałem mapować inny program do Meta-C i działa dobrze (tzn. uruchamia się dobrze po naciśnięciu Meta-C). Próbowałem też podać pełną ścieżkę do xte (/ usr / bin / xte) i to też nie działało ... czy możesz wypróbować to w swoim systemie i zobaczyć, czy to działa? dzięki!
Brad Parks
1
Więc xte wysyła kody kluczy poprawnie, ale najwyraźniej aplikacje widzą kombinację skrótu i ​​naciśnięć klawiszy wysyłanych przez xte (np. Meta-Control-C). Zaktualizowałem moją odpowiedź, aby zasymulować zwolnienie klawiszy skrótu przed wysłaniem naciśnięć klawiszy.
cscarney,
2
Po szybkim sprawdzeniu działa dla mnie, ale znalazłem rozwiązanie, które prawdopodobnie będzie bardziej niezawodne niż xte (nawet jeśli zadziała). Sprawdź poprawioną odpowiedź.
cscarney,
1
Hej! dzięki @cscarney! Twoje „Alternatywne rozwiązanie” dla AutoKey całkowicie działa! dzięki tonie za twój wysiłek w tym zakresie!
Brad Parks
1
Rozwiązania nie działają dla Ubuntu 18.04
JZ.
17

W przypadku Ubuntu 14 lub nowszego możesz to zrobić:

sudo apt-get install gnome-tweak-tool

Następnie poszukaj zachowania Tweak Tool> Pisanie> Klawisz Alt / Win

I sprawdź: Ctrl jest mapowany na klawisze Win (i zwykłe klawisze Ctrl)

Caio Lopes
źródło
Wydaje się, że nic nie robi lub nie jest zachowaniem Maca
chovy
W nowej instalacji Ubuntu 16 instalacja tego wydaje się wymagać demona gnome-settings-demona, który zdaje się prowadzić ścieżkę pakietów, które nie wydają się być przeznaczone do zainstalowania.
Tom Lianza,
Zdecydowanie najprostsza opcja, jeśli chcesz, aby klawisz polecenia był podobny do klawisza cmd w systemie Mac, głównie do kopiowania i wklejania. Jestem na ubuntu-gnome-desktop
lxm7
Działa to doskonale dla poleceń kopiuj-wklej i powstrzymuje mnie od ciągłego otwierania menu wyszukiwania w Ubuntu. Teraz muszę tylko odwzorować Command-Tab na Alt-Tab
Ron Smith,
1
Nie widzę narzędzia Tweak Tool w moich aplikacjach. Co powinienem zrobić?
Jadda
13

Istnieje sposób odwzorowania Ctrlna Win/ Superkey:

  1. przejdź do system-> preferencje-> klawiatura ,

  2. otwórz zakładkę Układy ,

  3. kliknij Opcje ... ,

  4. zachowanie otwarte Alt/ Winkluczowe ,

  5. i wybierz Sterowanie jest mapowane na klucze Win

A na konsoli jest post na forum, jak to zrobić tutaj .

Aby dowiedzieć się więcej, sprawdź ogólną klawiaturę Linux HOWTO tutaj .

pozdrowienia

danizmax
źródło
3
hej @danizmax - dziękuję za odpowiedź ... ale szczególnie chciałbym uniknąć zmiany pełnego zachowania Ctrl ... Uważam, że to wkręca się w inne rzeczy, jeśli to zrobię ... Naprawdę chciałbym zmapować tylko skróty klawiaturowe, o których wspomniałem w poście ... dziękuję jednak!
Brad Parks
Ctr + pozostaje bez zmian. Kopiuje tylko Ctrl + do Super +, więc po prostu dodajesz zachowanie. Chyba że naprawdę chcesz zmienić tylko te, o których wspomniałeś, będziesz musiał dużo kopać za pomocą xmodmap i loadkeys. Dodałem link do ogólnej klawiatury systemu Linux HOWTO. Mam nadzieję, że to pomaga: P
danizmax
1
To było najłatwiejsze rozwiązanie ze wszystkich proponowanych.
Datageek
1
Nie widzę już opcji „opcje” ani „zachowanie klawiszy Alt / Win” w ustawieniach systemu w Ubuntu 15.10.
user29020
1
to jest teraz w poprawkach
krasnalów
8

Aby rozwinąć na cscarney za Autokey nutą , Zajmuję mój Autokey konfigurację, aby osiągnąć to wszystko w Ubuntu (OS X-podobnych <cmd>+c, <cmd>+v... Emacs stylu <ctrl>+f, <ctrl>+b...) w moim dotfile repo .

Nie używam podstawowych zwrotów (gdzie filtrowanie okien jest obecnie zepsute ), ale skrypty Pythona, aby móc wyłączyć AutoKey w aplikacjach takich jak Emacs, Eclipse, Vim, gnome-terminal ... gdzie nie chcę zadzierać w górę istniejących skrótów.

Możesz sprawdzić READMEna dole, aby uzyskać instrukcje, jak to skonfigurować.

metakermit
źródło
link jest uszkodzony dla aplikacji
chifliiiii
@chifliiiii naprawił linki, ale pamiętaj, że połączona konfiguracja w moich plikach dot jest bardzo nieaktualna, ponieważ nie używałem jej od lat.
metakermit
5

Niektóre z powyższych rozwiązań są stare i nie działają z Ubuntu 18.04. Oto zaktualizowana odpowiedź

  1. Zainstaluj poprawki gnome, jeśli nie są zainstalowane w systemie

    sudo apt-get install gnome-tweaks

  2. Otwórz listę aplikacji, naciskając Pokaż aplikacje na w lewym dolnym rogu.

  3. Zauważ, że to zmieni tylko zachowanie klawisza WINDOWS na klucz CMD i zachowa ten sam klawisz CTRL, co wcześniej (będziesz mieć 2 klawisze CTRL). Jeśli ci się nie podoba, pomiń krok 4 i przejdź do kroku 5

  4. Szukać Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Alt/Win behavior --> Select Control is mapped to Win keys and the usual Ctrl Keys.

  5. Pomiń ten krok, jeśli wykonałeś krok 4. Ten krok spowoduje zamianę Zachowania klawisza Windows na Ctrl i odwrotnie. SzukaćTweaks application --> Keyboard and Mouse --> Additional Layout options --> Ctrl Position --> Select Swap Left Win with Left Ctrl

  6. Jeszcze jedną rzeczą, za którą tęsknię za macOS, jest możliwość przełączania okien za pomocą CMD + Tab (w tym przypadku Windows + Tab). Aby to osiągnąć, przejdź doSettings --> Keyboard --> Look for Switch Windows under navigation section --> Double Click it and press Windows+Tab when pop up appears

Jadda
źródło
5

Chciałem rozwiązania, które działałoby w każdym środowisku pulpitu / menedżerze okien, dlatego połączyłem sugestię cscarney, aby użyć xautomation z SXHKD (prosty demon skrótu X).

Oto podstawowy ~/.config/sxhkd/sxhkdrcplik konfiguracyjny, który stworzyłem.

Zaawansowane: Moja najnowsza wersja jest bardziej kompletna i może wysyłać różne naciśnięcia klawiszy dla różnych aplikacji, ale wymaga zewnętrznego skryptu i prawdopodobnie zawiera pewne wiązania, których nie chcesz.

Oto fragment:

# 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"

Uwaga:

  • Jak widać, jeśli utworzę oryginalny klucz modyfikujący przed wykonaniem wirtualnego obrysu, następnie ponownie go zwolnię. Oznacza to, że użytkownik może powtórzyć naciśnięcie klawisza bez konieczności zwalniania i ponownego wciśnięcia klawisza modyfikującego. Innymi słowy, po naciśnięciu Alt-W system widzi wciśnięty klawisz Alt.

Ostrzeżenia:

  • Może to stanowić problem (szczególnie na wolniejszych komputerach), jeśli zwolnisz klawisz Alt, gdy polecenie xte jest nadal uruchomione . Skończysz z „lepkim” klawiszem Alt, ponieważ xte nacisnął go dla ciebie!

  • Przy takim podejściu wyzwalacze nie będą się powtarzać, jeśli klawisz zostanie przytrzymany. (Więc nie możesz przenieść 12 słów, przytrzymując Super-Left.)

joeytwiddle
źródło
Kiedyś używałem bbkeysw przeszłości, ale niestety nie jest on obecnie pakowany na tak wielu dystrybucjach.
joeytwiddle
4

To łatwe zadanie, gdy wiesz, jak to zrobić.

1) Sprawdź kod swojego klucza. Uruchom ten program na terminalu.

Xev


W tym przykładzie terminal pokazuje, że kluczem dla mojego kjest „45”.

2) Zmień je tak, jak chcesz utworzyć ten plik:

gedit ~ / .Xmodmap

Jego zawartość powinna wyglądać następująco:

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

(W razie potrzeby zmień numer kodu klucza - spójrz na krok „1”)

Ilustracja:
(Obs .: jeśli chcę zmienić swój kkod, powinienem użyć kodu „keycode 45”, jak pokazano w kroku „1”).

4) Wyloguj się i zaloguj ponownie lub uruchom ponownie lub uruchom to:

xmodmap ~ / .Xmodmap

Mam nadzieję, że ci się podoba ;-)

desgua
źródło
2

Podobnie i w oparciu o doskonałą pracę innych, zrobiłem repozytorium za pomocą skrótów Autokey i instrukcji, jak uzyskać tę konfigurację:

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

bliles
źródło
1

Najpierw
zainstaluj dysk CD z dodatkami gości ( Devices->Insert Guest Additions CD image).

Aktywuj udostępnianie schowka
Następnie po ponownym uruchomieniu w Virtualbox przejdź do Machine->Settings->General->Advancedi ustaw
Shared Clipboard: Bidrectional

Zmień klucz hosta VirtualBox
W Vitualbox/Preferences/Input/Virtual Machine/Host Key Combination
wybierz inny niż

Mapowanie klawiszy :
dla cmd/ctrlmapowania wydaje mi się, że dodanie klawiatury angielskiej (Macintosh) jest najwygodniejszym rozwiązaniem :)

Idź do Ubuntu Settings->Text Entry
(Myślę, że w starszych wersjach może to być w Ustawieniach układu klawiatury)
Pod Input sources to use:hitem plus (+)
dodajEnglish (Macintosh)

Jestem na Ubuntu 14.04.3 LTS 64bit w VirtualBox 5.0.4

Wszystko jest jednym
źródło
1

Oto znacznie prostsze rozwiązanie, Kinto. Pracuję nad tym od 3 lat .. i wreszcie czuję, że mogę coś wnieść z powodu tego, jak dobrze to działa, w przeciwieństwie do moich dwóch ostatnich prób. Jest przeznaczony dla dystrybucji opartych na x11 i systemowych, ale koncepcja przeniesie się do Wayland, gdy tylko znajdę dobry sposób na jego wdrożenie, pomimo zwiększonego bezpieczeństwa, który utrudnia pracę.

1) Gist (dla tych, którzy chcą tylko zobaczyć przesłankę lub wdrożyć własne przemienne rozwiązanie, przypadki brzegowe nie są uwzględnione).

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

2) Pełna wersja instalatora, która korzysta z systemd, bash i xprop. (Obudowy Edge, podobnie jak Chromebooki, były zaskakująco trudne do obsługi, ale lubię moje, więc każdy może skorzystać!)

https://github.com/rbreaves/kinto

Powodem dla Kinto, japońskiego dla flipa, jest to - nawet jeśli udoskonaliłeś mapowanie klucza dla każdej normalnej aplikacji GUI przy użyciu innej metody, nie będziesz mieć tego samego rodzaju terminalu, łatwo, na Linuksie, jak to robisz na komputerze Mac. I to jest niefortunne - ponieważ komputery Mac rozpieszczają nas programistami mapą klawiszy, która działa zaskakująco dobrze dla aplikacji terminalowych. Istotą tego, co zrobiłem, zmieniając mapę klawiszy na 1 z 2 opcji układu za pomocą setxkbmap i aktywnej aplikacji w użyciu, jest to, że powoduje to, że musisz utworzyć jak najmniej dodatkowych klawiszy skrótu specyficznych dla konkretnej aplikacji.

Zasadniczo dzięki temu rozwiązaniu nie walczysz, jak prawidłowo tworzyć nowe klawisze skrótów ani nie próbujesz unikać konfliktów skrótów w aplikacjach terminalowych w porównaniu z pozostałymi aplikacjami GUI. Po prostu dostajesz to, co najlepsze z obu słów, i działa tak płynnie, jak to możliwe - poza domyślnymi plikami konfiguracyjnymi skrótów dla różnych terminali i popularnych edytorów tekstu, które mogę dołączyć później. Nawet edytory tekstu, takie jak Sublime, po prostu nie zamieniają klawisza Cmd z Ctrl na każdym skrócie, ale wyrównuje się odpowiednio w około 95% lub więcej czasu.

Mówiąc o Wayland, mam dowód na to, jak sprawić, by sztuczka polegająca na zamianie klawiszy na klawisze działała na KDE Plasma 5 z istniejącym widgetem, który pobiera nazwy aplikacji. Jeśli ktoś ma lepsze rozwiązanie, to jestem cały w uszach, szczególnie jeśli może również działać na x11. Xprop jest całkowicie wystarczający na x11, ale oczywiście nie ma zastosowania na Wayland.

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

R Ben R.
źródło
0

Nie mam pod ręką Ubuntu (Mac jest tutaj, Ubu w biurze), ale używam tam klawiatury Mac i z tych samych powodów, co Ty, chciałeś to zrobić.

Pierwszą rzeczą jest upewnienie się, że klawiatura została zainstalowana jako klawiatura Mac. Myślę, że możesz to zmienić w systemie-> preferencje-> klawiatura. Gdy tam będziesz, jedna z kart przeniesie Cię na stronę mapowania klawiszy, na której możesz ustawić sposób działania klawisza cmd.

Tak jak mówię, nie pamiętam dokładnie - mogę wskazać tutaj fragmenty ekranu, ale to nie działa, ponieważ mnie tam nie ma.

Jeśli nadal utkniesz jutro, spojrzę jeszcze raz.

Lew
źródło
system-> preferencje-> klawiatura-> układy-> opcje
Leo
cześć leo ... Nie używam jednak klawiatury Mac z systemem Ubuntu ... Używam standardowej klawiatury PC, tzn. „Komputer generyczny z 105 klawiszami (intl)” próbował zmienić mój „model klawiatury” na Apple / Model Apple, ale to chyba nie miało znaczenia ... Próbowałem też od Apple / Model Macbook i to też nic nie zmieniło ...
Brad Parks
i za to, co jest warte, używam dokładnie tej samej klawiatury PC na moim macmini, ponieważ kupiłem ją z drugiej ręki i nie była dostarczana z klawiaturą Mac. dzięki jeszcze raz.
Brad Parks
0

Autokeys działało dla mnie. Teraz win + c (v, x, a) działa w moim systemie tak, jak się tego spodziewałam.

1. Zainstaluj autokeys

sudo apt install autokey-gtk

2. Skonfiguruj autokeys

  1. Dodaj folder główny, nazwij go jak MacKeys lub cokolwiek innego
  2. Utworzysz tam 4 skrypty dla ctrl-c, v, x i a
  3. przypisuj do każdego skryptu skrótu super-c, super-v itp
  4. wypełnij skrypty kodem poniżej (zastąp literę c dla innych kombinacji)

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

4a. Dla CmdZ, CmdA lub CmdX pracuj z prostszym skryptem jakkeyboard.send_keys("<ctrl>+x")

3. Dodaj / usr / bin / autokey-gtk do aplikacji startowych

4. Wyłącz Win-A w ustawieniach klawiatury

Zwykle wygrana-a powoduje przejście do przeglądu.

5. Opcjonalnie, całkowicie zapobiegaj wygranej, aby przełączyć przegląd

Prawdopodobnie będziesz chciał go usunąć. Zainstaluj gnome-tweak-tool, przejdź do klawiatury i ponownie powiązaj przełączanie z pulpitu na przegląd. To działało na moim gnome Ubuntu 16.04.

Lauri
źródło