- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在尝试创建一个小的 C/C++ 程序,它模拟多媒体键之一的按键(例如“暂停/播放”)。
为了模拟按键,我使用了 X11
库中的 XTestFakeKeyEvent
函数。我在这里找到了一个工作示例:Simulate keypress in a Linux C console application
我的问题是,我打算模拟的那些特殊键无法在 keysymdef.h
文件中找到,其中使用的 XKeysymToKeycode
的常量-功能已定义。
所以,我做了一点调查,发现 this post , 这把我带到了 xmodmap
-command .使用 xmodmap -pk
我得到了一个包含这些键的列表:
KeyCode Keysym (Keysym) ...
Value Value (Name) ...
[...]
171 0x1008ff17 (XF86AudioNext) 0x0000 (NoSymbol) 0x1008ff17 (XF86AudioNext)
172 0x1008ff14 (XF86AudioPlay) 0x1008ff31 (XF86AudioPause) 0x1008ff14 (XF86AudioPlay) 0x1008ff31 (XF86AudioPause)
173 0x1008ff16 (XF86AudioPrev) 0x0000 (NoSymbol) 0x1008ff16 (XF86AudioPrev)
174 0x1008ff15 (XF86AudioStop) 0x1008ff2c (XF86Eject) 0x1008ff15 (XF86AudioStop) 0x1008ff2c (XF86Eject)
[...]
使用这些定义的值(如 172
用于播放/暂停)作为 XTestFakeKeyEvent
的键码 - 我让它工作了:
// Simulate Key-Press:
Display *display;
display = XOpenDisplay(NULL);
XTestFakeKeyEvent(display, 172, true, 0);
XTestFakeKeyEvent(display, 172, false, 0);
XFlush(display);
现在,我的问题是:
我能否依靠这些值(整数)映射到每个 Linux 系统上的这些键?如果不是(这是我的猜测),动态(在代码中)获取正确映射的正确方法是什么?
最佳答案
我知道这不是一个确定的答案,但根据我的经验(在类似的项目中),键映射在我试过的每台 Linux 机器上都是相同的。这仅适用于具有 EN/US 键盘布局的机器。我不能谈论具有替代布局的键盘。
如果这不能完全回答您的问题,我很抱歉。
编辑:
我实际上查看了我的旧项目,看起来我使用这些函数来获取实际的键码:
XStringToKeysym()
XKeysymToKeycode()
查看 MAN 页面,它们非常不言自明。
我希望这对您有所帮助:)
关于c++ - linux下keycode是否一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8333474/
所以我遇到了一些类型不匹配的奇怪情况。总体想法是我正在创建一个游戏,玩家可以在其中定义自己的移动键绑定(bind)、按钮等。 我从一个标准的键事件监听器开始,然后将其馈送到键处理程序中 import
我已经在 SO 上检查了其他问题,但是他们没有回答我的问题。我只想捕获某些 keyCode 并将其替换为另一个。我正在处理字符,而不是空格,我不需要松散焦点等。 下面是我的代码。但是您可以用您的键码替
var keycode = window.event.keycode; game.keyDown(keycode); 此代码在 Chrome、IE、Safari 上运行良好,但当我在 Firefox
var key_code = 65; 结果应该是 character = "Esc"; 我想转换键盘上的所有按键。我的演示在这里: window.onload = function () { var
我目前正在学习 Java,并正在使用 Java FX 进行事件驱动编程。该程序制作一个圆圈,并通过几种不同的方法(按钮、鼠标按钮、向上和向下箭头)增加其大小。 按钮和鼠标单击工作正常,但向上和向下箭头
谁能告诉我如何在检查两个键码{shiftkey + e.keyCode = 37或38或39或40}的组合后在keyup上触发jQuery事件? 我想做一些像下面这样的事情:让我们有一个 p 标签,其
我制作了一个 onkeydown 函数,它水平运行 li 元素 block ,它运行完美,但我需要当第一个和最后一个 li block 处于焦点时,左右键应该被禁用。 有人能建议一个正确的方法吗?提前
我怀疑这是由于我对 keyCode 信息如何传递缺乏了解,但我不知道如何进行这项工作... 我需要从 keydown 事件中获取键码。我可以轻松地完成以下操作: document.getElement
在我的项目中,我尝试从发送 writeInt(e.getKeyCode()) 的另一台计算机接收 dataInputStream,即 readInt() 到这台计算机,但是当我收到 keyCode 时
KeyEvent.getKeyCode()可以返回多少个code? KeyEvent.getKeyCode()返回的代码范围是多少? javadoc for KeyEvent 上列出了 key 代码吗
首先,看我的例子:http://jsfiddle.net/Davood/gkeAM/ 我想在点击链接时获取 keyCode 。 我想发现当点击链接时,是否按下了 ctrl 键? 提前致谢 最佳答案 $
我需要能够读取一个字符并获取与其语言和键盘布局相关的键。 我知道如何看待文化背景和语言。但是我怎样才能用英文输入像'S'这样的字母并知道它在键盘上的键是什么?或者对于更难的问题,我怎样才能知道字母 '
无论键盘和操作系统的语言和文化如何,/(正斜杠)符号的 javascript 键码是什么?在英语键盘中,正斜杠位于与数字键分开的键中,其键码为 191。但是在西类牙语键盘中,该字符与数字 7 位于同一
我在 JavaScript 方面仍处于新手水平。我发现了一个困扰我的错误。 这就是 keyCode 似乎无法在移动设备(chrome)上工作的原因。我刚刚注意到移动设备不支持 keyCode。 我猜我
我需要在文本框中包含星号作为允许的条目。 无论键盘布局和语言如何,如何在 KeyDown 事件下测试此键? 忽略数字键盘,使用葡萄牙语 QWERTY 布局可以通过 Keys.Shift | 测试此键
虽然我知道由于 e.keyCode 与 e.charCode 而捕获键不是微不足道的,但我认为 jQuery 几乎能够规范化大部分那些不一致。 然而 answering this question我发
我以为这会在 Stack Overflow 上的某个地方得到解答,但我找不到。 如果我正在监听按键事件,我应该使用 .keyCode 还是 .which 来确定是否按下了 Enter 键? 我一直在做
$('body').keypress(function(event){ if(event.keyCode == 46){console.log('Delete Key Pressed')};
我有一个自动完成文本字段的ajax请求。结果被附加到div中。现在我需要做的是通过向上和向下箭头浏览结果。但是我没有从 keydown jquery 函数中获取向上和向下的键码。任何帮助都会受到赞赏。
我想知道如何更改KeyCode条件中的功能?我试图做某事,但无法进入 keyCode。 我的代码: $("body").keydown(function (e) { // left arrow
我是一名优秀的程序员,十分优秀!