Domanda

C'è un modo per simulare la pressione dei tasti in Linux utilizzando C?

Nella mia situazione specifica, io sono su Ubuntu 9.04 e hanno bisogno di una semplice applicazione che richiama una pressione sul pulsante "pausa" quando ha lanciato. Che sarebbe ottenere un iframe in Firefox per aggiornare utilizzando Javascript.

È stato utile?

Soluzione

Presumo si intende l'applicazione "X11" - non è del tutto chiaro dalla descrizione che cosa si sta progettando di fare. Il frammento di codice di seguito invierà il codice di accesso "pausa" per l'applicazione che attualmente ha l'input focus tastiera sotto X11 con estensione XTest - da quello che ho letto questo è il modo più compatibile con "falsi" gli eventi di tastiera. Vedere se è possibile applicare questo al vostro piano d'azione (nessun controllo di errore se il XOpenDisplay riuscito, per rendere più semplice).

#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
...
Display *display;
unsigned int keycode;
display = XOpenDisplay(NULL);
...
keycode = XKeysymToKeycode(display, XK_Pause);
XTestFakeKeyEvent(display, keycode, True, 0);
XTestFakeKeyEvent(display, keycode, False, 0);
XFlush(display);

Sarà necessario collegare con il -lX11 -lXtst.

Ovviamente il firefox avrebbe bisogno di avere attenzione a quel tempo.

Tuttavia, sarei curioso di sapere qual è il compito più grande che si sta cercando di realizzare -. Ho il sospetto che ci dovrebbe essere una soluzione più elegante di spoofing degli eventi di pressione

Altri suggerimenti

C'è una biblioteca programmabile chiamato 'xdotool':

  

sudo apt-get install libxdo-dev libxdo2

     

cat test.c

#include <stdio.h>
#include <stdlib.h>
#include <xdo.h>
#include <unistd.h>
int main() {
    xdo_t * x = xdo_new(":0.0");

    while(1) {
        printf("simulating Shift_L keypress\n");
        xdo_keysequence(x, CURRENTWINDOW, "Shift_L", 0);
        sleep(5);
    }

        return 0; 
}

Esegui in questo modo:

  

gcc test.c -lxdo -o test

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top