gpt4 book ai didi

c++ - 需要帮助使用 C++ 在 Linux 环境中为现有应用程序生成击键

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:47 27 4
gpt4 key购买 nike

我需要帮助在 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 xkeyeventman 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 您只需使用 xev

我找到了一个 brief introduction给你。

(编辑:看来 someone solved it 已经:))

关于c++ - 需要帮助使用 C++ 在 Linux 环境中为现有应用程序生成击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427634/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com