2009-07-10 14 views

回答

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; 
} 
2
+0

有沒有使用X11 – Madni 2009-07-10 11:51:26

+0

去期待任何其他方式是一個我使用了相同的操作 – joe 2009-07-10 12:06:38

+0

謝謝!請問我如何使用Expect,因爲它對我來說是非常新的。 此致敬禮。 – Madni 2009-07-10 12:23:58

2

看看xsendkey。這些源包括在內,並且很短,因此您可以從中提取必要的部分到您的程序中。

0

看一看Swinput

Swinput可以僞造一個鼠標和一個鍵盤 通過使用Linux的輸入 系統。從 讀取swinput模塊的裝置和贗品硬件事件 (鼠標移動,按鍵等)作爲寫入的設備上 命令。

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(); 
     } 
    } 
}; 
14

下面是使用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; 
}