Производить нажатия клавиш События клавиатуры - PullRequest
3 голосов
/ 10 июля 2009

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

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

Я работаю на ОС Ubuntu 8.10 Linux

Ответы [ 6 ]

15 голосов
/ 05 июня 2010

Вот простой пример использования libxdo (из xdotool). (Внимание: я автор 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;
}
2 голосов
/ 15 августа 2009

Хотя это не C, вы можете очень легко создавать ключевые попадания в 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();
        }
    }
};
2 голосов
/ 10 июля 2009

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

2 голосов
/ 10 июля 2009

Есть функция <a href="http://linux.die.net/man/3/xtestfakekeyevent" rel="nofollow noreferrer">XTestFakeKeyEvent</a>() от Xlib.

Вы можете ИСПОЛЬЗОВАТЬ Expect для программ c или C ++

0 голосов
/ 21 июля 2009

Получить поддельные ключевые события от Xdotool

//Compile As:  gcc button.c -lX11 

#include < X11/Xlib.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;
}
0 голосов
/ 10 июля 2009

Взгляните на Swinput .

Swinput может подделать мышь и клавиатура с использованием ввода Linux Система. Модули swinput, считанные с аппаратное и аппаратное событие (движение мыши, нажатие клавиш и т. д.) как Команды, написанные на устройствах.

...