Super vinculando a Ctrl
Que tal vincular sua Windows/Logo/Super
chave esquerda a agir como outra Ctrl
chave?
Você pode conseguir isso com os seguintes comandos xmodmap:
remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L
Supondo que você salvou as linhas acima, como super_as_ctrl.xmodmap
você pode testar o efeito executando
xmodmap super_as_ctrl.xmodmap
Para tornar a alteração permanente (reinserção / reinicialização sobrevivente), renomeie o arquivo para .Xmodmap
na sua pasta pessoal.
(O teste acima foi testado no sistema ativo Ubuntu 11.10, mas deve ser o mesmo para outras distribuições Linux)
Ajustando atalhos de copiar / colar para o seu programa de terminal
Tendo vinculado Super
a Ctrl
você agora pode usar Super-C
para copiar quase todos os lugares. A única exceção comum é o seu programa de terminal. No entanto, você pode redefinir os atalhos lá.
Eu descobri que ainda gnome-terminal
tem essa opção agora (eu não tinha até me acostumar Ctrl-Shift-C
). Caso você o utilize, vá para Edit / Keyboard Shortcuts...
o menu e atribua Ctrl-C
a copiar e Ctrl-V
colar. Deve ser semelhante para konsole
etc.
E não se preocupe, você não perderá a capacidade de encerrar um programa usando um atalho. Depois de religar o atalho de cópia do terminal, você pode usar Ctrl-Shift-C
como Ctrl-C
antes. O terminal não distingue aqui se Shift estiver pressionado ou não. E o atalho não é mais capturado para a cópia. Como alternativa, religue a terminação em outro atalho, como sugere MountainX em sua resposta.
XF86Copy etc. não funcionam
Sobre os principais símbolos para copiar e colar: Aparentemente, eles não têm efeito. Testei-o rapidamente atribuindo a ação de cópia ao Shift-ScrollLock (não era usada e queria testar com uma chave não modificadora):
xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'
Pressionar não teve efeito, nem com o XF86AudioMute. No entanto, funcionou ao atribuir a letra 'a'. Então, acho que há um problema específico com esses símbolos especiais de chave do XF86.
Se você deseja vincular apenas algumas seqüências do formato Super + x, Super + c, Super + v a outras seqüências como Ctrl + x, Ctrl + c, Ctrl + v, por exemplo, para que (como o OP deseje) Seqüências específicas de superchave geralmente mapeiam para recortar e colar sem afetar outros usos da chave super em seu sistema, é possível usar apenas a extensão XKB. O procedimento abaixo descreve as etapas e fornece dois exemplos diferentes de detalhes para duas configurações diferentes do teclado inicial; espero que isso forneça informações suficientes para se adaptar ao seu sistema. Ele pressupõe que você esteja confortável com a criação e edição de arquivos no seu sistema, incluindo aqueles em locais do sistema como
/usr/share/X11/xkb
.Decida onde você deseja que sua árvore de configuração XKB resida. Primeiro encontre o sistema. Geralmente está em / usr / share / X11 / xkb, e não tenho muita certeza de como encontrá-lo se ele não estiver lá; você pode simplesmente procurar no seu sistema por diretórios denominados "xkb". De qualquer forma, depois de encontrá-lo, você pode modificar o sistema no local ou usar qualquer diretório de sua escolha. A vantagem de usar o diretório do sistema é que você pode invocar suas alterações com muito mais facilidade, mas a desvantagem é que futuras atualizações do sistema podem sobrescrever suas alterações (você foi avisado). De qualquer forma, todos os nomes de arquivos mencionados a seguir são relativos a este diretório, ao qual me referirei quando necessário como $ XKBLOCAL $, e todos os comandos assumem que esse é seu diretório atual.
Determine qual "tipo" de chave XKB são as chaves x, c, v atuais. A maneira mais fácil de fazer isso é através do comando
xkbcomp -a $DISPLAY - | grep -C 6 c,
(observe que a vírgula está intencionalmente incluída no padrão). Na minha primeira instalação de exemplo, isso produz:enquanto no meu outro exemplo de configuração isso produz
O resultado é que, no primeiro exemplo, as chaves relevantes são do tipo "ALPHABETIC", enquanto no segundo exemplo são do tipo "FOUR_LEVEL". Dependendo da configuração do teclado, você pode achar que eles são de algum outro tipo. A seguir, o tipo será referido como $ TYPE $, que você deve substituir pela sequência ALPHABETIC real ou qualquer outra coisa nos comandos abaixo.
Localize a definição de $ TYPE $ e copie-a para um novo arquivo no diretório $ XKBLOCAL $ / types. Aqui está um comando que faz exatamente isso:
xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
. O nome do arquivo "cutpaste" que eu escolhi é arbitrário, use o nome que você quiser, mas observe que você precisará consultar esse arquivo de forma consistente nas etapas posteriores. Na primeira instalação, esse arquivo obtém o conteúdoe no outro exemplo, obtém o conteúdo
Edite os tipos de arquivo / cutpaste para fazer duas coisas: adicione um preâmbulo e um postâmbulo que a tornem uma cláusula XKB adequada e altere o nome e a definição do tipo para adicionar mais um nível produzido pelo modificador correspondente a Super. Você deve verificar o que esse modificador está no seu sistema, é provável que o Mod4 seja usado abaixo. As modificações necessárias devem ser evidentes nas duas versões finais exemplificativas de tipos / pasta de corte, a saber:
e
Copie as definições de símbolo de chave que foram produzidas pelo grep na segunda etapa em um segundo novo arquivo de símbolos / pasta de corte e adicione preâmbulo e postâmbulo semelhantes e modifique as definições para usar os novos tipos e adicione ações à definição para manipular a chave desejada produzido pelas versões Super. Os resultados disso em nossos dois exemplos são:
e
Observe que, no segundo exemplo, extraí alguns espaços em branco (não significativos) para manter o comprimento da linha sob um pouco de controle.
Encontre o nome do conjunto de regras que o XKB está usando no momento. Isso é fácil, é mostrado no resultado de
setxkbmap -query
. No meu caso, era "evdev".Copie a versão do sistema de rules / evdev (ou qualquer que seja o nome do seu conjunto de regras) para $ XKBLOCAL $ / rules / evdev e adicione regras apontando para as opções que criamos. Você tem duas opções aqui: é possível copiar todo o evdev ou apenas as partes que mencionam o modelo, o layout, a variante e as opções de teclado que você está realmente usando. Obviamente, se você estiver modificando os arquivos do sistema, não precisará copiar, apenas editar.
Nesse caso, o que é adicionado é idêntico, independentemente da configuração inicial do teclado, portanto, há apenas um exemplo. Você encontra a seção do arquivo de regras que inicia com
! option = symbols
e adiciona uma linhacutpaste:super = +cutpaste
a essa seção e também encontra a seção do arquivo de regras que inicia com! option = types
e uma linhacutpaste:super = +cutpaste
a essa seção.Copie a versão do sistema evdev.lst e adicione uma linha para sua nova opção. Observe que o nome desse arquivo simplesmente corresponde ao nome do arquivo de regras com .lst anexado. Como na etapa anterior, você pode copiar o arquivo inteiro ou apenas a parte referenciada pelo modelo, layout, variante e opção (s) que está usando. Você só precisa encontrar a seção deste arquivo que começa com
! option
e adicionar uma linha como esta:cutpaste:super Add super equivalents of cut and paste operations
a essa seção.OK, agora todos os arquivos de configuração estão no lugar. Se você modificou os arquivos do sistema, agora poderá chamar sua nova opção com
setxkbmap -option cutpaste:super
. Por outro lado, se não, você deve informar ao setxkbmap onde está o seu diretório $ XKBLOCAL $. O que é pior, o servidor também não sabe onde está esse diretório e o setxkbmap não (ou talvez não possa, pois, em última instância, o servidor pode estar executando em outra máquina) o informa. Portanto, você deve canalizar a saída do setxkbmap para o xkbcomp e também informar esse comando onde está o diretório $ XKBLOCAL. A linha de comando completa é, portantosetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
.Espero que isso ajude / interesse alguém, pois a boa documentação / referência definitiva do XKB é escassa. Uma referência muito útil foi http://madduck.net/docs/extending-xkb/ .
fonte
setxkbmap -option
. Minha configuração local era quase idêntica ao exemplo FOUR_LEVEL, com exceção de alguns símbolos do Grupo2, Grupo3, que eu deixei de fora do arquivo de símbolos parciais, para que meu arquivo tivesse a mesma aparência dos exemplos.Aqui está o que eu faço. Não é a solução definitiva, mas tentei obter a solução definitiva e não consegui chegar lá depois de muito esforço. Então, decidi por algo simples e que funcione para mais de 90% do que eu preciso. Posso implementá-lo em qualquer computador que eu vá (ou qualquer nova instalação do Linux) em questão de minutos. É simples demais.
No aplicativo do terminal X, defina as preferências de atalho. Eu fiz isso no Gnome e no KDE. No Konsole, por exemplo, vá para Menu> Configurações> Configurar Atalhos. Há um menu semelhante no terminal Gnome X. Basta selecionar o atalho (por exemplo, "copiar") e inserir a sequência de teclas desejada.
Caso os atalhos de copiar e colar do terminal entrem em conflito com os comandos do terminal, também há uma solução fácil. Por exemplo, e se alguém quiser usar CTRL-C para cópia (para que o terminal X esteja em conformidade com o padrão CUA)?
Nesse caso, você pode alterar facilmente as associações de teclas stty (em .bashrc). Continuando o CTRL-C, por exemplo, cópia, digamos que você queira que a chave de interrupção seja agora CTRL-b (para "interrupção"). Isso faz com que:
Então origem .bashrc.
Toda a solução é tão simples quanto usar as configurações dos terminais X para alterar os atalhos e, opcionalmente, resolver conflitos com stty com um comando de eco de uma linha. Simples e cobre quase tudo que eu preciso.
fonte
Provavelmente a chave do Windows é a chave modificadora. execute isso e tente novamente:
fonte
xmodmap -e 'remove Mod1 = Meta_L'
e testando seus comandos depois) funcionou bem para mim.Eu peguei um pouco do que Glen Whitney havia dito e consegui usar esse conhecimento para mapear o comportamento de piora da palavra ou manipulação de texto do macOS em um mapa de teclas personalizado.
Eu já resolvi o problema de copiar e colar Ctrl vs Super sem envolver essa solução específica, mas como eu disse, foi muito útil para outras coisas. Também evitei coisas como xmodmap, pois pretendo dar suporte total a Wayland em algum momento. O Kinto usa o xkb nativo e respeita o macOS esperado como o comportamento do terminal.
https://github.com/rbreaves/kinto
https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
Aqui também está um Gist, se você quiser apenas ver o que está no centro de tudo, ele não alternará seu mapa de teclas quando necessário. O Gist também não inclui arquivos de mapa de teclas xkb personalizados que configuram cursores no estilo macOS / manipulações de palavras que usam Cmd e as teclas de seta.
https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
conteúdo essencial
fonte