tecla de atalho personalizada para o comando do terminal

3

Eu quero atingir F1 e ter uma string com a tecla return para ser digitada automaticamente no terminal em que estou. Eu não quero fazer isso com .bash_profile porque eu quero que ele seja configurado localmente em uma vez não em todos os servidores I ssh para.

Como faço isso?

    
por user634806 13.09.2012 / 17:59

1 resposta

3

OK, a resposta que tenho e que funciona quase exatamente como solicitado é, na verdade, surpreendentemente complexa. Você usará xmacro para gravar e reproduzir os principais toques.

  1. Instale o xmacro

    sudo apt-get install xmacro
    
  2. Gravar uma macro

    xmacrorec2 > test.macro
    

    Agora pressione ESC (para gravar a tecla "abort" para gravação), digite qualquer texto que você queira atribuir e pressione ESC novamente para parar a gravação. A macro gravada está agora no arquivo test.macro ; você pode editá-lo com um editor de texto.

  3. Teste que a macro funciona

    cat test.macro | xmacroplay -d 0 $DISPLAY
    
  4. (opcional, recomendado) Crie um script com os comandos acima. Salve como macro.sh:

    #!/bin/bash
    
    cat test.macro | xmacroplay -d 0 $DISPLAY > /dev/null 2>/dev/null
    

    Torne-o executável:

    chmod a+x macro.sh
    
  5. Um pequeno problema permanece. O xmacro reproduz as teclas exatas, mas se você definir um atalho e executar o script pelo atalho, as teclas serão tocadas antes você liberar a tecla de atalho, como se você tivesse começado a digitar sem soltar a tecla . Você precisa prefixar a seguinte linha no arquivo test.macro:

    KeyStrRelease F1
    

    que simulará o lançamento da tecla F1.

  6. Usando as preferências do teclado (você pode acessá-las através de configurações ou digitando 'gnome-control-center keyboard), crie um novo atalho em "Atalhos personalizados" e atribua a ele F1.

OK, mas há mais uma ressalva: o atalho F1 agora funciona em todos os aplicativos , não apenas no terminal. Eu não sei como resolver isso; Possivelmente, no macro.sh , seria necessário testar qual janela tem o foco primeiro e verificar se o identificador dessa janela é terminal.

    
por January 13.09.2012 / 20:49