2009-07-10 14 views

Antwort

0

Get Gefälschte Wichtige Ereignisse von 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

einen Blick auf xsendkey nehmen. Die Quellen sind enthalten und kurz, so dass Sie die benötigten Teile daraus in Ihr Programm extrahieren.

+0

Vielleicht nicht, was das OP will, aber ich fand es nützlich; Vielen Dank. –

0

Werfen Sie einen Blick auf Swinput.

Swinput fälschen kann eine Maus und eine Tastatur durch den Input Linux mit -System. Die Swinput-Module lesen von ein Gerät und fälschen Hardware-Ereignis (Mausbewegung, Tasten drücken usw.) als Befehle auf den Geräten geschrieben.

+0

Danke! Es scheint, dass Swinput mit Kernel-Space arbeitet. Ich suche nach einer User-Space-Anwendung – Madni

2

Obwohl dies nicht C ist, können Sie Schlüssel Treffer in Java erzeugen kann sehr einfach:

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

Hier ist ein einfaches Beispiel libxdo mit (von xdotool). (Vorab: Ich bin der xdotool Autor)

/* 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

Es scheint, 'xdo_keysequence' wurde umbenannt in' xdo_send_keysequence_window'; in Ubuntu 14.04 mindestens. Übrigens, soll ich 'xdo_free' danach anrufen? libxdo ist übrigens sehr nett, ich würde ein einseitiges Tutorial dafür vorschlagen - ich brauchte eine Stunde, um hierher zu kommen; Beim Durchforsten von xdotool-Code hatte ich keine Ahnung, dass ich ohne einen "Kontext" davonkommen könnte. – user2023370