2017-08-12 29 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; 
} 
相关问题