Como fazer o teclado funcionar como o OSX System Wide?


111

Eu alterno entre dois computadores constantemente:

  • OSX Snow Leopard
  • Ubuntu 10.10

Eu gostaria de poder fazer o Ubuntu usar os mesmos atalhos de teclado que o OSX System Wide , apenas para as seguintes seqüências de teclado (ou seja, não quero que o Ctrl aja como Super)

  • Super+C -> Copiar

  • Super+V -> Colar

  • Super+T -> Abra uma nova guia em qualquer navegador em que eu esteja.

  • Super+W -> Feche uma guia em qualquer navegador em que eu esteja.

Em resumo, existe uma maneira de mapear apenas essas seqüências de teclado para o seguinte, em todo o sistema?

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

Eu sei que existem maneiras de fazer isso no vim e no Firefox, e tenho certeza especificamente para a maioria dos aplicativos ... mas eu preferiria ter que fazer isso apenas uma vez e fazê-lo funcionar dessa maneira em todo o sistema !

Estou usando um teclado de PC padrão, que é o "PC genérico de 105 teclas (intl)" no Ubuntu. Também estou usando o mesmo teclado no meu Mac mini.


4
Se você discou todos os atalhos de teclado do Mac, o compartilhamento do seu arquivo de configuração seria fantástico! Obrigado
Dolan Antenucci

Ei! Eu gostaria de continuar, mas agora estou trabalhando exclusivamente no Mac, pois mudei de emprego ;-) Portanto, não tenho minha configuração antiga em nenhum lugar ...
Brad

soluções não funcionam no sistema operacional elementar. '
Paschalis

Respostas:


38

Se você instalar o pacote xautomation, poderá adicionar um comando em Sistema / Preferências / Atalhos de Teclado / Personalizado, como:

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

e mapeie para Meta-C.


Solução alternativa:

Instale o AutoKey (apt-get install autokey-gtk) e defina uma frase para:

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

Ei! isso parece muito promissor ... eu instalei e posso executar o comando xte acima do terminal e ele gera "^ C" no terminal ... o que parece bom para mim! mas quando mapeio em Atalhos de teclado, ele não faz nada ... Tentei mapear outro programa para o Meta-C, e ele funciona bem (ou seja, é iniciado quando pressiono o Meta-C). Eu também tentei especificar o caminho completo para o xte (/ usr / bin / xte) e isso também não funcionou ... você pode tentar isso no seu sistema e ver se funciona? obrigado!
parques brad

1
Então o xte envia os códigos das teclas corretamente, mas aparentemente os aplicativos veem a combinação do atalho e das teclas enviadas pelo xte (por exemplo, Meta-Control-C). Atualizei minha resposta para simular a liberação das teclas de atalho antes de enviar as teclas pressionadas.
Cscarney #

2
Na verificação rápida, funciona para mim, mas eu encontrei uma solução que provavelmente será mais confiável que o xte (mesmo se você conseguir fazê-lo funcionar). Verifique a resposta revisada.
Cscarney

1
Ei! obrigado @cscarney! sua "Solução alternativa" para AutoKey funciona totalmente! muito obrigado pelo seu esforço contínuo nisso!
parques brad

1
As soluções não funcionam no Ubuntu 18.04
JZ.

17

Para o Ubuntu 14 ou mais recente, você pode fazer o seguinte:

sudo apt-get install gnome-tweak-tool

Em seguida, procure Ferramenta Tweak> Digitação> Comportamento das teclas Alt / Win

E verifique: Ctrl está mapeado para as teclas Win (e as teclas Ctrl normais)


Não parece fazer qualquer coisa ou não é Mac comportamento
Chovy

Em uma nova instalação do Ubuntu 16, a instalação parece exigir o gnome-settings-daemon, que parece levar a uma trilha de pacotes que parecem não ter sido instalados.
Tom Lianza 5/02

De longe, a opção mais direta, se você deseja que a chave de comando seja semelhante à tecla cmd no mac, principalmente para copiar e colar. Estou no ubuntu-gnome-desktop
lxm7 20/17

Isso funciona muito bem para comandos de copiar e colar e me impede de abrir constantemente o menu de pesquisa no Ubuntu. Agora eu só preciso mapear Command-Tab para Alt-Tab
Ron Smith

1
Não vejo a ferramenta Tweak nos meus aplicativos. O que devo fazer?
Jadda 3/10

13

Existe uma maneira de mapear Ctrlpara Win/ Superkey:

  1. vá para sistema-> preferências-> teclado ,

  2. abrir a guia Layouts ,

  3. clique em Opções ... ,

  4. comportamento aberto Alt/ Winchave ,

  5. e selecione Controle está mapeado para Win keys

E para o console, há um post no fórum sobre como fazer isso aqui .

Para mais escavações, verifique o HOWTO geral do teclado Linux aqui .

Saudações


3
hey @danizmax - obrigado pela resposta ... mas eu gostaria especificamente de evitar alterar o comportamento completo do Ctrl ... acho que se estraga com outras coisas, se eu fizer ... eu realmente gostaria de mapear apenas o atalhos de teclado que eu mencionei no post ... obrigado!
brad parks

Bem, o Ctr + permanece como está. Ele duplica apenas todos os Ctrl + para Super +, então você apenas adiciona o comportamento. A menos que você realmente queira alterar apenas as que você mencionou, precisará cavar bastante com xmodmap e loadkeys. Adicionei o link ao HOWTO geral do teclado Linux. Espero que ajude: P
danizmax

1
Esta foi a solução mais fácil de todas as propostas.
Datageek

1
Não vejo mais a opção "options" ou "alt / win key behavior" nas configurações do sistema no Ubuntu 15.10 astuciosamente.
user29020

1
que está agora em ajustes gnomo "teclado e mouse"
Yrogirg

8

Para expandir a AutoKey dica de cscarney , estou desenvolvendo meu AutoKey configuração para conseguir tudo isso no Ubuntu (OS X-like <cmd>+c, <cmd>+v... Emacs-style <ctrl>+f, <ctrl>+b...) na minha dotfile repo .

Eu não uso frases básicas (onde a filtragem de janelas está quebrada ), mas scripts Python, para poder desativar o AutoKey em aplicativos como Emacs, Eclipse, Vim, gnome-terminal ... onde eu não quero mexer os atalhos existentes.

Você pode conferir READMEna parte inferior para obter instruções sobre como configurá-lo.


link está quebrado para o aplicativo
chifliiiii 30/10

O @chifliiiii corrigiu os links, mas observe que a configuração vinculada nos meus arquivos de ponto está muito desatualizada, porque eu não a uso há anos.
005188

5

Algumas das soluções acima são antigas e não funcionam com o Ubuntu 18.04. Aqui está uma resposta atualizada

  1. Instale gnome-tweaks se não estiver instalado no sistema

    sudo apt-get install gnome-tweaks

  2. Abra a lista de aplicativos pressionando Mostrar aplicativos na parte inferior esquerda.

  3. Observe que isso altera apenas o comportamento da chave do WINDOWS para a chave CMD e mantém a tecla CTRL da mesma forma que antes (você terá 2 teclas CTRL). Se você não gosta disso, pule a etapa 4 e vá para a etapa 5

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

  5. Pule esta etapa se você concluiu a etapa 4. Esta etapa trocará o Comportamento das teclas do Windows para Ctrl e vice-versa. Olhe paraTweaks application --> Keyboard and Mouse --> Additional Layout options --> Ctrl Position --> Select Swap Left Win with Left Ctrl

  6. Mais uma coisa que sinto falta do macOS é a capacidade de alternar janelas com o CMD + Tab (neste caso, Windows + Tab). Para conseguir isso, vá paraSettings --> Keyboard --> Look for Switch Windows under navigation section --> Double Click it and press Windows+Tab when pop up appears


5

Eu queria uma solução que funcionasse em qualquer ambiente de desktop / gerenciador de janelas, então combinei a sugestão da cscarney de usar a automação automática com o SXHKD (o simples daemon de teclas de atalho X).

Aqui está o ~/.config/sxhkd/sxhkdrcarquivo de configuração básico que produzi.

Avançado: Minha versão mais recente é mais completa e pode enviar pressionamentos de tecla diferentes para aplicativos diferentes, mas requer um script externo e provavelmente possui algumas ligações que você não deseja.

Aqui está um trecho:

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

Nota:

  • Como você pode ver, se eu digito a chave modificadora original antes de executar o curso virtual, digito novamente novamente. Isso significa que o usuário pode repetir o pressionamento da tecla sem precisar soltar e pressionar a tecla modificadora novamente. Em outras palavras, depois de pressionar Alt-W, o sistema vê a tecla Alt pressionada.

Ressalvas:

  • Isso pode ser um problema (especialmente em máquinas mais lentas) se você soltar a tecla Alt enquanto o comando xte ainda estiver em execução . Você terminará com uma tecla Alt "pegajosa", porque o xte pressionou a tecla para você!

  • Usando essa abordagem, os gatilhos não se repetem se a tecla for pressionada. (Portanto, você não pode mover 12 palavras pressionando Super-Esquerda.)


Eu costumava usar bbkeysno passado, mas, infelizmente, não está sendo empacotado em tantas distros nos dias de hoje.
joeytwiddle 6/01

4

Essa é uma tarefa fácil quando você sabe como fazê-lo.

1) Verifique o código da sua chave. Execute este programa no terminal.

xev


Neste exemplo, o terminal mostra que o código da chave para my ké "45".

2) Altere-os conforme desejar criando este arquivo:

gedit ~ / .Xmodmap

Seu conteúdo deve se parecer com este exemplo:

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

(Altere o número do código-chave conforme necessário - veja a etapa "1")

Ilustração:
(Obs .: se eu quiser alterar meu k, devo usar "keycode 45", como mostrado na etapa "1").

4) Efetue logout e logon, reinicialize ou execute:

xmodmap ~ / .Xmodmap

Espero que goste ;-)



1

Primeiro
instale o CD de adições de convidados ( Devices->Insert Guest Additions CD image).

Ativar o compartilhamento da área de transferência
Em seguida, após uma reinicialização, no Virtualbox, vá para Machine->Settings->General->Advancede defina
Shared Clipboard: Bidrectional

Mudança VirtualBox anfitrião Key
Em Vitualbox/Preferences/Input/Virtual Machine/Host Key Combination
escolher sth diferente

Mapeamento de teclas :
para o cmd/ctrlmapeamento para mim, adicionar o teclado em inglês (Macintosh) parece ser a solução mais confortável :)

Vá para Ubuntu Settings->Text Entry
(eu acho que em versões mais antigas pode estar em Configurações de layout do teclado)
Em Input sources to use:hit mais (+)
adicioneEnglish (Macintosh)

Estou no Ubuntu 14.04.3 LTS 64bit no VirtualBox 5.0.4


1

Aqui está uma solução muito mais simples, Kinto. Estou trabalhando nisso há 3 anos .. e, finalmente, sinto que posso contribuir com algo em troca por causa de quão bem ele funciona, ao contrário das minhas duas últimas tentativas. Ele se destina a distribuições baseadas em x11 e em systemd, mas o conceito será transferido para Wayland assim que eu encontrar uma boa maneira de implementá-lo, apesar da segurança aprimorada que dificulta o trabalho.

1) Gist (para aqueles que querem apenas ver a premissa ou implementar sua própria solução alternada, casos extremos não cobertos).

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

2) O instalador completo que utiliza systemd, bash e xprop. (Os casos de borda, como os chromebooks, são cobertos, foi surpreendentemente difícil de suportar, mas eu gosto do meu para que todos possam se beneficiar!)

https://github.com/rbreaves/kinto

A razão para o Kinto, japonês para flip, é esse - mesmo que você tenha aperfeiçoado um remapeamento de chave para cada aplicativo GUI normal usando outro método, não terá o mesmo tipo de experiência do Terminal, com facilidade, no Linux que você. em um Mac. E isso é lamentável - porque os Macs estragam os desenvolvedores com um mapa-chave que funciona surpreendentemente bem para aplicativos de Terminal. O ponto do que eu fiz, alterando o mapa de teclas para 1 de 2 opções de layout via setxkbmap e o aplicativo ativo em uso, é que resulta na criação do menor número de teclas de atalho adicionais específicas para qualquer aplicativo em particular.

Essencialmente, com esta solução, você não está discutindo como criar corretamente novas teclas de atalho ou tentando evitar conflitos de atalho nos aplicativos do Terminal em relação aos demais aplicativos da GUI. Você simplesmente obtém o melhor das duas palavras e funciona da maneira mais transparente possível - além de incluir arquivos de configuração de atalho padrão para vários terminais e editores de texto populares, que eu posso incluir posteriormente. Até editores de texto como o Sublime não trocam simplesmente a tecla Cmd com Ctrl em todos os atalhos, mas alinha-se adequadamente cerca de 95% ou mais do tempo que eu diria.

E por falar em Wayland, eu tenho uma prova de conceito de como fazer esse truque de troca de teclas do mapa de teclas funcionar no KDE Plasma 5 com um widget existente que gera nomes de aplicativos. Se alguém tem uma solução melhor, então eu sou todo ouvidos, especialmente se ele pode funcionar no x11 também. Xprop é completamente suficiente em x11, mas obviamente não serve para Wayland.

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


0

Eu não tenho o Ubuntu em mãos (o Mac está aqui, o Ubu está no escritório), mas eu uso um teclado Mac lá e pelos mesmos motivos que você, queria fazer isso.

A primeira coisa é garantir que seu teclado foi instalado como um teclado Mac. Eu acho que você pode mudar isso no sistema-> preferências-> teclado. Enquanto você estiver lá, uma das guias o levará a uma página de mapeamento de teclas onde você pode configurar como a tecla cmd funciona.

Como eu disse, não me lembro exatamente - posso apontar os bits da minha tela aqui, mas isso não funciona porque não estou lá.

Se você ainda está preso amanhã, vou procurar novamente.


sistema-> preferências-> teclado-> layouts-> opções
Leo

oi leo ... não estou usando um teclado Mac com o Ubuntu ... estou usando um teclado de PC padrão, ou seja, "PC genérico de 105 teclas (intl)" tentou mudar meu "modelo de teclado" para fornecedor Apple / Model Apple, mas isso não pareceu fazer nenhuma diferença ... Eu também tentei o fornecedor Apple / Model Macbook e isso também não pareceu mudar nada ... #
11301

e pelo que vale a pena, eu uso exatamente o mesmo teclado para PC no meu macmini, pois o comprei em segunda mão e ele não veio com um teclado para mac. obrigado novamente.
Brad parks

0

Autokeys trabalhou para mim. Agora, o win + c (v, x, a) contorna meu sistema exatamente como eu esperava.

1. Instale teclas automáticas

sudo apt install autokey-gtk

2. Configure teclas automáticas

  1. Adicione uma pasta raiz, chame algo como MacKeys ou qualquer outra coisa
  2. Você criará 4 scripts lá para ctrl-c, v, xe um
  3. atribuir a cada script hotkey super-c, super-v etc
  4. preencha os scripts com o código abaixo (substitua a letra c por outros combos)

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

4a Para o CmdZ, o CmdA ou o CmdX funcionam com scripts mais simples, comokeyboard.send_keys("<ctrl>+x")

3. Adicione / usr / bin / autokey-gtk aos aplicativos de inicialização

4. Desative o win-A nas configurações do teclado

Normalmente o win-a muda para a visão geral.

5. Opcional, impeça totalmente a vitória para mudar a visão geral

Provavelmente você vai querer removê-lo. Instale o gnome-tweak-tool, vá para o teclado e religue a alternância da área de trabalho para a visão geral. Isso funcionou para o meu gnome ubuntu 16.04.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.