Вы здесь

(Solved) Программное нажатие клавиатуры

Знает ли кто-нибудь соответствующие программы?
Поясню: необходимо программно эмулировать нажатие клавишь, например,
program --key=space
нажать пробел

Раньше для этого я использовал kbde, но его разработка прекращена в 2005 году и последнее ядро, на котором он собрался - 2.6.22, на 24 уже не собирается.

Я подумал, что для этого можно было бы использовать обычную экранную клавиатуру, но не нашел подходящей, умеющей сразу при запуске нажимать соответствующую клавишу (к тому же постоянно висящая на экране клавиатура выглядит не эстетично)

x11-misc/xvkbd
Available versions: 2.6 ~2.8
Homepage: http://homepage3.nifty.com/tsato/xvkbd/
Description: virtual keyboard for X window system

Спасибо. Это похоже то, что надо

#!/bin/bash

stty -icanon -echo # не ждем ENTER после нажатия на клавишу; и не отображаем нажатое
#tput clear # чистим экран вначале

while true;
do
#key=$(head -c1) # ловим 1 символ и ждем его до опупения
read -s -t 1 -n 1 key || key='?' # Ну и эта строка, собсно по сути вопроса =)))
# читаем по символу, но ждем ввод не более 1 секунды
# иначе считаем, что введен "?"

#key=$1; # раскомментариваем это, комментим "while" "do" "done"
# и получаем возможность вызывать скрипт так: myscript r
case $key in
w|W) echo w ;; # ловим
s|S) echo s ;; # только
a|A) echo a ;; # четыре
d|D) echo d ;; # буквы
q|Q) stty icanon echo; exit 0;; # и 5-ю: возвращаем параметры терминала на родину и уходим из while
" ") echo SPACE ;; # ну и пробел ;-))
*) ;; # нечто иное, возможно спецсимвол
esac

if [ "$key" == `echo -e "\x"1B` ]; ## escape-последовательность
then
key=$(head -c2) # дочитываем 2-й и 3-й символ спецсимвола
case $key in
"[A") echo UP-arrow pressed;;
"[B") echo DOWN-arrow pressed;;
"[C") echo RIGHT-arrow pressed;;
"[D") echo LEFT-arrow pressed;;
"OP") echo F1-speckey pressed;;
"OQ") echo F2-speckey pressed;;
"[H") echo Home-speckey pressed;;
"[F") echo End-speckey pressed;;
"OM") echo ShiftEnter pressed;;
*) ;; ## все остальное - для некоторых
## (напр F5..., ShiftF1...PgUp,Ins...Enter (??) )
## надо и 4-й символ ловить
esac
else echo $key #Any other symbol...
fi
done

## ИНФА: man всех упомянутых комманд, и созерцание `cat /dev/zero` ;-))

Очень интересный подход.

А лучше через порты ввода/вывода делать, не забывая при этом, что ассемблер рулит ;)