AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1364352
Accepted
Rasmus
Rasmus
Asked: 2021-09-18 14:30:55 +0800 CST2021-09-18 14:30:55 +0800 CST 2021-09-18 14:30:55 +0800 CST

Remapear uma combinação de teclas para outra combinação, por exemplo, AltGr+C -> Ctrl+C, em Wayland

  • 772

TL;DR

Sob Wayland, posso de alguma forma me vincular AltGr + Ca Ctrl + C?

Detalhes

Eu basicamente quero fazer esta pergunta , mas para o GNOME em Wayland . Isso significa que as respostas envolvendo AutoKey e xbindkeys não funcionarão, pois nenhuma delas funciona em Wayland.

Fundo

Gostaria de remapear algumas chaves para, em última análise, fazer melhor uso do CapsLock.

Meu plano é mapear CapsLockpara AltGre, em seguida, seguir isso para obter combinações de teclas semelhantes ao vim. No Wayland, esse remapeamento pode ser feito através de arquivos XKB (veja o link).

No entanto, eu também gostaria de usar CapsLockpara copiar/colar. Atualmente, eu tenho mapeado para Ctrl(usando arquivos XKB). Isso faz CapsLock + Cfuncionar sem problemas em todo o sistema, e eu gostaria de preservar isso.

Então: Com CapsLockmapeado para AltGr, gostaria Capslock (= AltGr) + Cde atuar como Ctrl + C.

Minha pergunta

Sob Wayland, posso de alguma forma me vincular AltGr + Ca Ctrl + C?

(Sem apenas religar AltGrpara Ctrl, pois isso anularia o propósito)

Um exemplo alternativo com Q

No arquivo XKB para latin /usr/share/X11/xkb/symbols/latin, o seguinte comportamento é definido para minha Qchave:

key <AD01>  { [ q, Q, at, Greek_OMEGA ] };

Isso indica que a chave tem quatro saídas possíveis:

  1. Pressionado sozinho, ele produz q.
  2. Pressionado com Shift, produz Q.
  3. Pressionado com AltGr, produz @.
  4. Pressionado com AltGr + Shift, produz Ω.

Essencialmente, o que eu gostaria de conseguir é que quando Qpressionado AltGr, não produz, @mas Ctrl + Q.

keyboard-layout
  • 1 1 respostas
  • 1057 Views

1 respostas

  • Voted
  1. Best Answer
    Rasmus
    2021-09-21T13:51:10+08:002021-09-21T13:51:10+08:00

    Existem várias ferramentas que podem fazer isso, como KMonad , Interception Tools e keyd .

    Eu tive sucesso total com keydWayland, então descrevo o que fiz com isso. Sugiro a leitura do curta o README para inspiração. O demônio pode fazer muito mais do que é usado aqui.

    A presente solução faz o que eu quero, mas contorna usando o AltGrdesvio. Ele trata CapsLockcomo em todos os Controllugares, exceto em h ,j ,k , l, que muda para teclas de seta.

    1. INSTALAÇÃO

    Eu construo keyda partir da fonte, pois isso foi fácil. As próximas linhas primeiro instalam as dependências (incluindo o compilador C), baixam a fonte, compilam e instalam e habilitam como serviço, iniciam e executam na inicialização.

    Quando terminar, ele informará onde instalou o que para que você possa excluí-lo para desinstalação. Você pode excluir o código-fonte após a instalação.

    sudo apt install cmake libudev-dev
    git clone https://github.com/rvaiya/keyd
    cd keyd
    make && sudo make install
    sudo systemctl enable keyd && sudo systemctl start keyd
    

    2. ENCONTRE O NOME DO TECLADO QUE DESEJA REMAP

    Você deve encontrar o nome do seu teclado, para que possamos fazer um remapeamento apenas para isso. Corre

    sudo keyd -m
    

    e pressione algumas teclas. Ele mostrará o nome do teclado e as teclas pressionadas. Anote o nome. O meu foi AT Translated Set 2 keyboard.

    3. CRIE UM ARQUIVO DE CONFIGURAÇÃO

    Onde quer que, faça um arquivo de configuração chamado qualquer. Vamos movê-lo mais tarde. Digamos que você use ~/my_keyboard.conf.

    Nele, coloque o seguinte. Os #'ed são comentários que explicam o comportamento definido (está atualizado para v2.1.1. Espero não ter cometido nenhum erro):

    [ids]
    
    *
    
    [main]
    ### MAIN LAYER
        
    # Make capslock activate the second layer:
    
    capslock = layer(movement_layer)
    
    ### SECOND LAYER (called "movement_layer")
    
    # Define the new layer, which while active
    # by default treats every key as if Control was pressed,
    # (":C" means the layer should inherit the Control layer),
    # and overrides this default for only h, j, k and l, which
    # are mapped to directions.
    
    [movement_layer:C]
    
    h = left
    j = down
    k = up
    l = right
    
    # In sum, in the main default layer, everything is standard, except
    # when CapsLock is pressed, then the second layer is activated.
    # When the second layer is activate, everything but h, j, k, l
    # acts as if Control is held---e.g., c copies and v pastes,
    # which we want, as we holding down CapsLock.)
    

    4. COPIAR E RENOMEAR O ARQUIVO DE CONFIGURAÇÃO E REINICIAR CHAVE

    Em seguida, copiamos a configuração para o local correto e a nomeamos corretamente, ou seja, de acordo com o teclado que queremos remapear.

    sudo cp ~/my_keyboard.conf /etc/keyd/AT\ Translated\ Set\ 2\ keyboard.conf
    

    Em seguida, reiniciamos keydpara carregar a nova configuração:

    sudo systemctl restart keyd
    

    Agora você está pronto e funcionando :)

    5. UMA DICA: CRIE UM ALIAS PARA COPIAR CONFIG E REINICIAR KEYD

    Acabei brincando muito com os arquivos de configuração. Eu os editei em um subdiretório da minha pasta pessoal, depois os copiei e reiniciei.

    Para tornar isso menos complicado, em ~/.bash_aliases, adicionei

    alias rekeyd='sudo cp ~/my_keyboard.conf /etc/keyd/AT\ Translated\ Set\ 2\ keyboard.conf && sudo systemctl restart keyd'
    
    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve