Я пытаюсь сделать сценарий оболочки для записи макросов путем записи индивидуальных кодов клавиш при каждом нажатии кнопки.

Команда для этого выглядит так:

xev | grep -A2 --line-buffered '^Key*' | sed -n '/keycoe /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 /p'

Вы можете запустить его в терминале, чтобы увидеть, как он работает.

По сути, он выплевывает тонну числовых кодов (кодов клавиш) с пробелами между ними, например так:

51
51
42
42
53
30
30
53

И так далее. Мне нужно захватить каждый из этих кодов по отдельности и поместить их в список / строку, которая будет выглядеть примерно так:

xdotool keydown 51 && xdotool keyup 51 && xdotool keydown 42 && xdotool keyup 42

И на это идет. (каждый раз, когда появляется номер, он назначается как keydown, каждый раз, когда он появляется во второй раз, он читается как keyup, чтобы избежать циклов)

Как я могу сделать это в сценарии оболочки? Как я могу заставить сценарий оболочки брать каждый отдельный код ключа, когда он происходит, и сохранять его в переменной?

Сценарий сам по себе достаточно прост, но я не знаю, как получить отдельные коды, так как единственное, что отделяет коды - это разрыв строки.

1 ответ1

0
| while read kk; do echo "xdotool keydown $kk && xdotool keyup $kk &&"; done; echo true

Обратите внимание на трубу впереди; это идет в конце того, что OP использует для генерации описанного вывода xev

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .