Agarrando o controle do teclado no shell script

2

Eu tenho um script de shell (zsh) que lê um caractere por vez e executa uma ação depois. No shell, isso é realizado por "read -k" em um loop. Eu quero executar o script como um atalho de teclado, sem abrir um shell.

Qual é a maneira mais fácil de obter entrada de teclado para isso? Eu poderia usar o dmenu se eu quisesse ler uma string inteira, mas o script precisa ser capaz de analisar os caracteres um de cada vez.

Obrigado.

    
por user247679 16.05.2014 / 15:27

2 respostas

0

(tentei postar como comentário, mas estou recebendo um erro - tentarei como resposta)

Quando você diz "executar de um atalho" sem abrir um shell ", você está falando em um ambiente gráfico (X11) sem abrir uma janela do emulador de terminal?

O comando shell read lê os caracteres do caractere de "entrada padrão" - não necessariamente o teclado.

Um emulador de terminal recebe eventos do teclado X11 em sua janela e mapeia para um fluxo de caracteres (que geralmente começa como entrada padrão).

Se você quiser usar read , mas não um emulador de terminal, precisará de algo mais para mapear os eventos de pressionamento de tecla X11 de algumas janelas para um fluxo de caracteres. (possivelmente a "janela raiz")

Dependendo do que o seu script está fazendo com os personagens, pode ser mais fácil escrever um pequeno programa gráfico.

    
por 17.05.2014 / 05:24
0

xbindkeys pode se registrar para teclas de atalho e executar o que você quiser. Desta forma, você pode ter uma chave que ativa o seu programa e, em seguida, faça o que quiser.

O lance a ser lançado seria um emulador de terminal com zsh executando o script que faz diretamente read -k . Dessa forma, você não precisa iniciar o terminal por conta própria. Por favor, note que você pode instruir o terminal a chegar em qualquer tamanho que você quiser (por exemplo, pequeno).

Sem chave de ativação (ou qualquer outra ativação) não está claro para mim como você deseja distinguir quando a entrada normal do teclado deve ir para o seu programa ou para os outros aplicativos que você pode usar.

    
por 15.11.2014 / 23:13