2

Что я хочу сделать: иметь возможность вводить нажатия клавиш, когда одна программа находится в фокусе, а также отправлять те же нажатия клавиш другой программе на другом экране.

Что я пробовал: xvkbd - я пробовал несколько способов использовать это, и ни один из них, кажется, не работает должным образом для того, что мне нужно. То, на что я смотрел, но не могу сделать: клавиатурное вещание - я не могу на всю жизнь найти исходные файлы, и везде есть только файлы deb для него, без RPM. (Я запускаю Fedora 21)

Фактическое применение: для чего я собираюсь использовать это, если для ввода моего пароля сразу в нескольких клиентах EvE-Online сделать вход в мои учетные записи более удобным. У меня уже есть скрипт, который позволяет мне запускать их все сразу на соответствующих мониторах (используя wmctrl), но мне все равно приходится вводить пароли по одному. Поскольку я использую один и тот же пароль для всех трех, проще всего клонировать нажатия клавиш, если это возможно.

У меня был некоторый успех с записью в xvkbd -window $ WID -text "REDACTED\r" в конце скрипта, который запускает программу и использует wmctrl для установки их местоположения (windowid для WID извлекается через wmctrl).

Если я использую этот скрипт:

 #!/bin/bash
 WINEDEBUG=-all wine64 "/home/REDACTED/.wine/drive_c/Program Files/CCP/EVE/bin/exefile.exe" &
 PID=$!
 while [ "$WID" == "" ]; do
  WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
 done
 wmctrl -i -r $WID -e 0,0,1680,1050 &&
 sleep 2
 xvkbd -window $WID -text "REDACTED"\r"

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

Я также добился успеха в создании сценария, открывающего окно для ввода моего пароля, чтобы мой PW не сохранялся где-либо в файле.

Тем не менее, когда я пытаюсь сделать это с двумя клиентами, ни один из них не получает текст. Если я сместил время ожидания двух, между тем, когда окно сделано, и xvkbd используется, только тот с более длинным временем ожидания получает информацию.

У меня сложилось впечатление, что это может быть как-то связано с фокусировкой окна, но если сделать wmctrl фокусом на каждое окно (wmctrl -a $ WID), а затем выполнить xvkbd, то, похоже, не сработает, если я не компенсирую таймеры сна ни одна программа не получает, если я делаю, только тот с более длинным таймером делает. Я попытался сместить их всего за 1 секунду и до 10 секунд, и это то же самое.

Есть ли другой способ сделать это? если так как? Я что-то упускаю в своем сценарии? или это просто невозможно? Благодарю.

1 ответ1

0

Источник можно найти здесь.

Извлеките пакет в /usr/local/src:

tar -xvf keyboardcast_0.1.1.orig.tar.gz
cd keyboardcast-0.1.1/
make
su -
make install

Исполняемый файл будет помещен в /usr/local/bin .

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