2017-08-12 26 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)函數。這些是Windows/WinAPI特定的庫。 – Ron

+0

那麼我可以用什麼來模擬linxu的按鍵? – Cybber

+1

這是一個XY問題;你在問如何實現你「發明」的解決方案。更好的問題是簡單地問如何在Linux中注入鍵盤事件。 – Clifford

回答

0

我已經找到了解決方案,在代碼中,我只需要輸入:

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

和它相同,但<cstdlib>必須被包括在內。

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; 
} 
相關問題