Cを使ってLinuxでキー入力をシミュレートする方法はありますか?Linux Cコンソールアプリケーションでキー入力をシミュレート
私の特定の状況では、私はUbuntu 9.04を使用しており、起動時に「一時停止」ボタンを押すような簡単なアプリケーションが必要です。 Firefoxでiframeを取得してJavascriptを使用してリフレッシュします。
Cを使ってLinuxでキー入力をシミュレートする方法はありますか?Linux Cコンソールアプリケーションでキー入力をシミュレート
私の特定の状況では、私はUbuntu 9.04を使用しており、起動時に「一時停止」ボタンを押すような簡単なアプリケーションが必要です。 Firefoxでiframeを取得してJavascriptを使用してリフレッシュします。
"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にはフォーカスが必要です。
しかし、私はあなたが達成しようとしている大きな課題が何であるかを知りたいだろう - 私は、キー押下イベントを偽装よりもエレガントな解決策があるはずと思います。
'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テスト
側のコメント:私はそれを(私はスクロールすることができウェブカメラの前で私の頭を移動することで、偽の矢印キー押下に私を許さOpenCVの動力週末ハックしていました/。ポストと私はIFRAMEをリロードするグリフィンPOWERMATEを使用したい:-) –
同時にサンドイッチを食べる:) – Baversjo
ああ、それはかなり私の場合と同じ使い方ですので:) –