awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
-
-F'[ )]+'
dizawk
para dividir a linha em qualquer número de espaços ou colchetes. Então, os campos emstate 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
seriam:# empty field state 0x0, keycode 133 (keysym 0xffeb, Super_L , same_screen YES,
-
/^KeyPress/ { a[NR+2] }
cria uma entrada vazia no número da linha + 2 na matriza
, para as linhas que começam comKeyPress
. -
NR in a
verifica se o número da linha atual possui uma entrada na matriza
. Isso seria verdade se uma linha que começasse comKeyPress
fosse duas linhas atrás. - Em seguida, ele imprime o quinto e o oitavo campos, que são
133
eSuper_L
, como pode ser visto no primeiro ponto.
xev
output realmente se parece com:
$ xev
...
KeyPress event, serial 36, synthetic NO, window 0x2a00001,
root 0x29c, subw 0x0, time 217441518, (91,162), root:(91,697),
state 0x10, keycode 134 (keysym 0xffec, Super_R), same_screen YES,
Assim, para cada pressionamento de tecla, a segunda linha depois disso tem o código e o nome.