C++ 需要帮助在Linux环境中使用C++;

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};

我需要帮助在LINUX环境中的现有应用程序中生成击键。 我完全知道,在DEVC++中有一些库,它们确实是我想要的,但是在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));  
}  
感谢和问候,
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系统中有效吗?