Вопрос по linux, keyboard, c, ubuntu-8.10, ubuntu – Производить нажатия клавиш События клавиатуры

3

Как сделать простую C программу, которая будет генерировать нажатия клавиш клавиатуры.

if ( condition ) {
    KeyPress('A');
}

Я работаю на Ubuntu 8.10 Linux OS

Ваш Ответ

6   ответов
2
перейти на Expect это один, потому что я использую для той же операции
Есть ли другой способ НЕ используя X11 Madni
Можете ли вы предоставить мне XTestFakeKeyEvent (). Я компилирую свою программу на c и получаю сообщение об ошибке button.c :(. Text + 0x9d): неопределенная ссылка на `XTestFakeKeyEvent & apos; Любая идея ? Madni
Спасибо ! Не могли бы вы предоставить мне, как использовать Expect, поскольку это действительно новый для меня. С уважением. Madni
15

я автор xdotool)

 /* File: testkey.c
 *
 * Compile with:
 * gcc -lxdo testkey.c
 *
 * Requires libxdo (from xdotool project)
 */

#include <xdo.h>

int main() {
  xdo_t *xdo = xdo_new(NULL);
  xdo_keysequence(xdo, CURRENTWINDOW, "A", 0);
  return  0;
}
Похоже на тоxdo_keysequence был переименован вxdo_send_keysequence_window; в Ubuntu 14.04 как минимум. Кстати, я должен позвонитьxdo_free после этого? Кстати, libxdo очень хорош, я бы предложил для него одностраничный учебник - мне потребовался час, чтобы добраться сюда; просматривая код xdotool, я понятия не имел, что смогу обойтись безcontext.
2

вы можете очень легко создавать ключевые попадания в Java:

import java.awt.Robot;
import java.awt.AWTException;
import java.awt.event.KeyEvent;


public class key
{
    public static void main(String args[])
    {
        try {
            Robot r = new Robot();
            r.delay(2000);
            r.keyPress(KeyEvent.VK_W);
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
};
0

Swinput.

Swinput can fake a mouse and a keyboard by using the Linux Input System. The swinput modules read from a device and fakes hardware event (mouse motion, key presses etc) as commands written on the devices.

Спасибо ! Кажется, Swinput работает с пространством ядра. Я ищу какое-то приложение пользовательского пространства Madni
0

Get Fake Key Events by Xdotool

//Compile As:  gcc button..h >
#include < X11/Xutil.h >
#include < stdio.h >
#include < X11/extensions/XTest.h >

void press_button()
{   
    Display *d;
    d = XOpenDisplay(NULL);
        if(d == NULL)
        {
            //fprintf(stderr, "Errore nell'apertura del Display !!!\n");
            //exit(0);
        }
    system("xdotool key Shift+a");
    XFlush(d);
    XCloseDisplay(d);
}

int main() {
    press_button();
    return 0;
}
2

xsendkey, Источники включены и являются короткими, поэтому вы извлекаете из них необходимые части в свою программу.

Может быть, не то, что хочет ОП, но я нашел это полезным; Благодарю.

Похожие вопросы