生成键盘事件键命中

时间:2009-07-10 11:00:46

标签: c linux ubuntu keyboard ubuntu-8.10

如何制作一个能产生键盘按键的简单C程序。

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

我正在研究Ubuntu 8.10 Linux OS

6 个答案:

答案 0 :(得分:15)

这是一个使用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;
}

答案 1 :(得分:2)

答案 2 :(得分:2)

看看xsendkey。这些来源包含在内且很短,因此您可以将必要的部分从中提取到程序中。

答案 3 :(得分:2)

虽然这不是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();
        }
    }
};

答案 4 :(得分:0)

查看Swinput

  

Swinput可以伪造一个鼠标和一个   键盘使用Linux输入   系统。 swinput模块读取   设备和假货硬件事件   (鼠标移动,按键等)为   写在设备上的命令。

答案 5 :(得分:0)

通过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;
}