2009-08-11 15 views

答えて

13

"X11アプリケーション"を意味すると思いますが、あなたの計画から何をしようとしているのかは完全には分かりません。以下のコードスニペットは、XTest拡張機能を使用してX11のキーボード入力フォーカスを現在持っているアプリケーションに "一時停止"キーコードを送信します。これは、キーボードイベントを "偽造"する最も互換性のある方法です。これをシナリオに適用するかどうかを確認してください(XOpenDisplayが成功したかどうかをエラーチェックしないので、簡単に確認できます)。

#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); 

-lX11 -lXtstとリンクする必要があります。

明らかに、その時点では、Firefoxにはフォーカスが必要です。

しかし、私はあなたが達成しようとしている大きな課題が何であるかを知りたいだろう - 私は、キー押下イベントを偽装よりもエレガントな解決策があるはずと思います。

+1

側のコメント:私はそれを(私はスクロールすることができウェブカメラの前で私の頭を移動することで、偽の矢印キー押下に私を許さOpenCVの動力週末ハックしていました/。ポストと私はIFRAMEをリロードするグリフィンPOWERMATEを使用したい:-) –

+0

同時にサンドイッチを食べる:) – Baversjo

+0

ああ、それはかなり私の場合と同じ使い方ですので:) –

6

'xdotool' と呼ばれるプログラム可能なライブラリがあります:

須藤はapt-getをインストールlibxdo-devのこのようなファイル名を指定して実行

#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; 
} 

猫のtest.cの

libxdo2:

は、

gcc test.c -lxdo上記のコードのために私自身のユースケースについて-oテスト

関連する問題