| while read kk; do echo "xdotool keydown $kk && xdotool keyup $kk &&"; done; echo true
Observe o tubo na frente; isso vai no final do que o OP usa para gerar a saída xev descrita
Eu estou tentando fazer um script de shell para gravar macros através da gravação de códigos de teclas individuais de cada pressionamento de botão.
O comando para isso se parece com isto:
xev | grep -A2 --line-buffered '^Key*' | sed -n '/keycoe /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/ /p'
Você pode executá-lo no terminal para ver como ele funciona.
Basicamente, o que ele faz é cuspir uma tonelada de códigos numéricos (códigos de tecla) com espaços de linha entre cada um assim:
51
51
42
42
53
30
30
53
E assim por diante e assim por diante. Eu preciso capturar cada um desses códigos individualmente, e colocá-los em uma lista / string que será algo como isto:
xdotool keydown 51 && xdotool keyup 51 && xdotool keydown 42 && xdotool keyup 42
E assim vai. (toda vez que um número aparece, ele é designado como keydown, toda vez que ele aparece uma segunda vez, ele é lido como uma chave para evitar loops)
Como posso fazer isso acontecer em um script de shell? Como posso fazer um script de shell pegar cada código de chave individual quando ele ocorrer e salvá-lo em uma variável?
O script por si só é bastante fácil, mas não tenho idéia de como obter os códigos individuais, já que a única coisa que separa os códigos é uma quebra de linha.
Tags command-line sh linux shell-script