【问题标题】:What C++ header can I use for these specific functions ? Linux我可以将哪些 C++ 标头用于这些特定功能? Linux
【发布时间】:2018-01-21 00:10:28
【问题描述】:

我是 linux 用户,想使用这些 'keyboard_event' 函数,但是这些函数的头文件是 'windows.h' 并且 linux 没有任何 'windows.h',所以任何人都可以支持一些替代头文件对于这些功能,还是模拟 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;
}

【问题讨论】:

  • 您不能在 Linux 上使用 keybd_event 函数。这些是 Windows / WinAPI 特定的库。
  • 那我可以用什么来模拟 linxu 的按键?
  • 这是一个 XY 问题;您正在询问如何实施您“发明”的解决方案。一个更好的问题是简单地询问如何在 Linux 中注入键盘事件。

标签: c++ linux-mint simulate


【解决方案1】:

在 Linux 中,windows.h 没有“等价物”。您需要逐个修复错误,或者更好地为 Linux 重写代码。

参考:https://ubuntuforums.org/showthread.php?t=533304

【讨论】:

    【解决方案2】:

    uinput 内核模块和libevdev 正是为此目的而引入的。

    【讨论】:

      【解决方案3】:

      我找到了一个解决方案,我只需在代码中输入:

      system("xte 'keydown Control_L' 'key R' 'keyup Control_L'");
      

      它的作用相同,但必须包含&lt;cstdlib&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        相关资源
        最近更新 更多