如何制作一个简单的 C 程序,它会产生键盘击键。
if ( condition ) {
KeyPress('A');
}
我正在使用 Ubuntu 8.10 Linux 操作系统
如何制作一个简单的 C 程序,它会产生键盘击键。
if ( condition ) {
KeyPress('A');
}
我正在使用 Ubuntu 8.10 Linux 操作系统
这是一个使用 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;
}
有XTestFakeKeyEvent()
来自 Xlib 的功能。
看看xsendkey。源代码包含在内并且很短,因此您可以从中提取必要的部分到您的程序中。
虽然这不是 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();
}
}
};
看看Swinput。
Swinput 可以使用 Linux 输入系统伪造鼠标和键盘。swinput 模块从设备中读取数据并将硬件事件(鼠标移动、按键等)伪装成写入设备的命令。
通过 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;
}