我需要帮助在 LINUX 环境中的现有应用程序中生成击键。
我完全知道 Dev C++ 中有一些库可以完全满足我的需求,但在 Windows 中,我需要在 Linux 中实现类似的功能。我用谷歌搜索了很多,但找不到任何解决方案。
下面是 Dev C++ 库的代码,我想要 Linux 中的类似代码。非常欢迎任何帮助、建议、批评。
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));
}
感谢致敬,
萨姆普拉特
你想要的是创建并初始化XKeyEvent
构造并发送它XSendEvent
.
请务必检查man xkeyevent
and man xsendevent
From 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
你只需使用xev
我找到了一个简单的介绍为你。
(编辑:看来有人解决了已经 :))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)