2017-08-12 16 views
3

私はLinuxのユーザであり、これらの 'keyboard_event'関数を使いたいですが、これらの関数のヘッダは 'windows.h'で、linuxには 'windows.h'がありません。これらの機能のために、あるいはLinuxのキープレスをシミュレートする代替の方法は?これらの特定の機能にはどのC++ヘッダーを使用できますか? Linux

#include <iostream> 
using namespace std; 

int main() { 

    keybd_event(VK_CONTROL,0x9d,0 , 0); //pressing CTRL 
    keybd_event(VkKeyScan(‘R’),0x93,0 , 0); //pressing 'R' 
    keybd_event(VkKeyScan(‘R’),0x93,KEYEVENTF_KEYUP,0); //releasing 'R' 
    keybd_event(VK_CONTROL,0x9d,KEYEVENTF_KEYUP,0); /* releasing CTRL */ 


    return; 
} 
+7

あなたは[keybd_event]を使用することはできませんhttps://msdn.microsoft.com/en -us/library/windows/desktop/ms646304(v = vs.85).aspx)は、Linuxで動作します。 Windows/WinAPI固有のライブラリです。 – Ron

+0

それから、linxuのキー押しをシミュレートするのに何が使えますか? – Cybber

+1

これはXYの問題です。あなたはあなたが「発明した」ソリューションをどのように実装するかを尋ねています。より良い質問は、単にLinuxでキーボードイベントを注入する方法を尋ねることです。 – Clifford

答えて

0

uinputカーネルモジュールとlibevdevは、まさにこの目的のために導入されました。

system("xte 'keydown Control_L' 'key R' 'keyup Control_L'"); 

をし、それは同じことが、<cstdlib>が含まれています

0

私はコードで私はちょうど入力し、解決策を見つけました。

0

私は「keyboard_event」機能があるかわからないが、私は、これは参考になると思います。(

#include <iostream> 
#include <cstdio> // for getchar() 
#include <unistd.h> // for getch() 
#include <termios.h> // for getch() 

using namespace std; 

int getch(); 
int main() 
{ 
    int ch = getch(); 
    cout << ch << endl; 
} 

int getch() 
{ 
    struct termios oldt, newt; 
    int ch; 
    tcgetattr(STDIN_FILENO, &oldt); 
    newt = oldt; 
    newt.c_lflag &= ~(ICANON | ECHO); 
    tcsetattr(STDIN_FILENO, TCSANOW, &newt); 
    ch = getchar(); 
    tcsetattr(STDIN_FILENO, TCSANOW, &oldt); 
    return ch; 
} 
関連する問題