C++ 需要帮助在Linux环境中使用C++;
我需要帮助在LINUX环境中的现有应用程序中生成击键。 我完全知道,在DEVC++中有一些库,它们确实是我想要的,但是在Windows和Linux中我需要类似的东西。我在谷歌上搜索了很多,但找不到任何解决方案。 下面是DEV C++库的代码,我希望在Linux中有类似的代码。欢迎任何帮助、建议和批评C++ 需要帮助在Linux环境中使用C++;,c++,linux,C++,Linux,我需要帮助在LINUX环境中的现有应用程序中生成击键。 我完全知道,在DEVC++中有一些库,它们确实是我想要的,但是在Windows和Linux中我需要类似的东西。我在谷歌上搜索了很多,但找不到任何解决方案。 下面是DEV C++库的代码,我希望在Linux中有类似的代码。欢迎任何帮助、建议和批评 void GenerateKey(int vk , BOOL bExtended) { KEYBDINPUT kb = {0}; INPUT Input = {0};
void GenerateKey(int vk , BOOL bExtended)
{
KEYBDINPUT kb = {0};
INPUT Input = {0};
// generate down
if(bExtended)
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1, &Input, sizeof(Input));
// generate up
::ZeroMemory(&kb, sizeof(KEYBDINPUT));
::ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if(bExtended)
kb.dwFlags |= KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1, &Input, sizeof(Input));
}
感谢和问候,
SamPrat您需要的是创建和初始化
XKeyEvent
struct,并将其与XSendEvent
一起发送
确保检查man xkeyevent
和man xsendevent
从man xkeyevent
:
typedef struct {
int type; /* KeyPress or KeyRelease */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* ``event'' window it is reported relative to */
Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
int x_root, y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int keycode; /* detail */
Bool same_screen; /* same screen flag */
} XKeyEvent;
要获取密钥码,请选中/usr/include/X11/keysymdef.h
ur只需使用xev
我为你找到了一份工作
(编辑:似乎已经:)您需要的是创建并初始化
XKeyEvent
结构,并将其与XSendEvent
一起发送
确保检查man xkeyevent
和man xsendevent
从man xkeyevent
:
typedef struct {
int type; /* KeyPress or KeyRelease */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* ``event'' window it is reported relative to */
Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
int x_root, y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int keycode; /* detail */
Bool same_screen; /* same screen flag */
} XKeyEvent;
要获取密钥码,请选中/usr/include/X11/keysymdef.h
ur只需使用xev
我为你找到了一份工作
(编辑:似乎已经:)谢谢帕尔米克,这么快的回复,我会调查的。似乎它会解决我的问题。谢谢亲爱的帕尔米克,代码编译正确,但我想知道我该如何测试它,以检查它是否符合我的要求。这似乎是可行的。。。干杯并感谢所有的帮助这在不启动Xserver的Linux系统中是否有效?谢谢Palmik,如此快速的回复,我将对此进行调查。似乎它会解决我的问题。谢谢亲爱的帕尔米克,代码编译正确,但我想知道我该如何测试它,以检查它是否符合我的要求。这似乎是可行的。。。干杯并感谢所有的帮助,这在不启动Xserver的Linux系统中有效吗?