3

如何制作一个简单的 C 程序,它会产生键盘击键。

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

我正在使用 Ubuntu 8.10 Linux 操作系统

4

6 回答 6

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;
}
于 2010-06-05T00:58:14.953 回答
2

XTestFakeKeyEvent()来自 Xlib 的功能。

您可以将 Expect 用于 c 或 C++ 程序

于 2009-07-10T11:31:40.013 回答
2

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

于 2009-07-10T11:35:04.687 回答
1

虽然这不是 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();
        }
    }
};
于 2009-08-15T07:08:17.293 回答
0

看看Swinput

Swinput 可以使用 Linux 输入系统伪造鼠标和键盘。swinput 模块从设备中读取数据并将硬件事件(鼠标移动、按键等)伪装成写入设备的命令。

于 2009-07-10T11:37:42.497 回答
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;
}
于 2009-07-21T07:45:52.150 回答