awk
の代わりに次のコマンドが機能しないのsed
はなぜですか?
su -c "stdbuf -i0 -o0 -e0 od --width=144 -x /dev/input/event3 | sed 's%^\([a-z0-9]\+ \)\{11\}%%;s%\(....\).*%\1%'"
これは、キーを押すたびに、押されたキーのUSBHIDID番号を出力します。
出力例(0028
forReturnおよび00e4
for Right-Ctrl):
0028
0028
0028
0028
0028
00e4
00e4
00e4
これは、 2回押すと//フィルタリングなしの2 行の出力です。USBHIDID番号は列12にあります。sed
cut
awk
Return
0000000 2d6f 511e 0000 0000 051b 0007 0000 0000 0004 0004 0028 0007 2d6f 511e 0000 0000 051d 0007 0000 0000 0001 001c 0000 0000 2d6f 511e 0000 0000 051e 0007 0000 0000 0000 0000 0000 0000 2d73 511e 0000 0000 a150 0007 0000 0000 0004 0004 0028 0007 2d73 511e 0000 0000 a153 0007 0000 0000 0001 001c 0001 0000 2d73 511e 0000 0000 a154 0007 0000 0000 0000 0000 0000 0000
0000220 2d73 511e 0000 0000 9b5a 0008 0000 0000 0004 0004 0028 0007 2d73 511e 0000 0000 9b5d 0008 0000 0000 0001 001c 0000 0000 2d73 511e 0000 0000 9b5e 0008 0000 0000 0000 0000 0000 0000 2d74 511e 0000 0000 4f90 0005 0000 0000 0004 0004 0028 0007 2d74 511e 0000 0000 4f93 0005 0000 0000 0001 001c 0001 0000 2d74 511e 0000 0000 4f94 0005 0000 0000 0000 0000 0000 0000
でやってみました
su -c "stdbuf -i0 -o0 -e0 od --width=144 -x /dev/input/event3 | cut -d' ' -f12"
そしてそれも機能します。ただし、次の2回のキー押下後に押されたキーのみが表示されます。stdbufは、標準の入力/出力/エラーストリームのバッファリングを0に調整する必要がありますが、ここでは役に立ちませんでした。
私のmawk
コマンドは次のようになりました:
su -c "stdbuf -i0 -o0 -e0 od --width=$((48*3)) -x /dev/input/event3 | mawk '{ print $12 }'"
しかし、それは私にいくつかの2つ、次にいくつかの改行、そして再び2つを示しただけでした。非常に遅い/遅いようです。キーを押しても何も起こりません。異なるキーを複数回押した後、私は常に2と改行の束を取得します。どのキーを押しても!例:
2
2
2
2
2
2
2
2
2
2
2
2
どうすればこれを修正できますか?なぜこれが発生するのですか?
アップデート
gawk
代わりに使用すると、mawk
これ以上遅れることはありません(バッファなし)。しかし、キーの例として、0028
または00e4
などの正しい値がまだ表示されません。ReturnRight-Ctrl