Articles of 键盘事件

GLUT跟踪按下的按键(当按下SHIFT键并释放按键时)

我试图跟踪按下的按键。 我有glutIgnoreKeyRepeat(1) ,我注册的关键事件(向下/向上为正常和特殊)在一个对象,跟踪按键(从现在开始被称为按键列表),以便我只是检查我的显示如果通过查看该列表来按下某个键,则该函数将被调用 问题出在SHIFT上 : 不同的按键注册为同一个物理键盘按键(例如a和A , 1和! , [和{等等))的向上和向下(取决于SHIFT是否被按下) 考虑这个(用{ key1 key2 }代表事件之后我按下的按键列表): 初始状态:{}没有按键列出按键 向下移动:{ SHIFT } 一个 DOWN:{ SHIFT A }(因为SHIFT仍然closures,大写“A”注册为关键字。 转移 :{ A } 一个 UP:{ A }(因为没有按下SHIFT键,下面的'a'作为键注册,所以a被从按下的键列表中删除(实际上不存在),并且A仍然存在) 最终状态:{ A }即使键盘上仍然没有按键。 对于阿尔法按键,我可以通过添加/删除小写键(而不是A )来解决这个问题。 但是, 1和! 或[和{ 。 glutGetModifiers在这里没有帮助。 或者如果一个按键被按下,窗口失去焦点,键被释放,窗口再次获得焦点(当窗口失去焦点时没有事件告诉键被释放)? 有没有一个通用的解决scheme来检查一个键是否被按下? (依赖于平台的解决scheme是可以的,另一个库不适合我,但是对于需要解决这个问题的其他人也是如此)

抓住键盘输出

我想在Python中find一种方法来检测“键盘事件”,如PyUserInput 。 按下button后,我不希望键盘input任何字符,只能打电话给我发生事件。 例如,按下“s”键后,运行事件处理程序,但不能input“S”! 这个动作应该适用于所有的窗口而不是像“Tkinter” (我想通过python抓取键盘输出信号)

如何用XLib创build一个映射但不可见的窗口?

我正在一个游戏项目中使用基于Linux的I / Ovalidation工具。 它是用C ++编写的,由于使用了与我们的游戏相同的I / O模块,它基于OIS 1.2。 因此,尽pipe我只需要在控制台上打印用户的input,但我仍然需要为OIS创build一个窗口。 所以这里来了我的问题:我怎样才能创build一个映射窗口,而它仍然是不可见的,并处理键盘事件? 我无法取消映射窗口,因为它不会再处理任何键盘事件。 我也找不到显示/隐藏窗口的function(也许我通过错误的方向search…) 我的小工具现在工作正常,除了有一个愚蠢的顶级空窗口,需要专注于处理键盘事件… 任何build议是受欢迎的。 谢谢!!!

库在Linux控制台上将keycode转换为keysym

使用evdev (内核接口,而不是X驱动程序),我可以监听键盘事件并获取键码。 是否有一个库接口转换为keysyms(再次,由loadkeys设置,而不是xmodmap )?

Linuxinput设备读取ioctl(EVIOCGKEY())与read(input_event)

我所有的代码都是基于来自linuxjournal.com的文章, 这里是我基于我的代码的文章 我正在编写一个embedded式应用程序,我正在尝试从键盘上读取按键。 这是我正在使用的代码 uint8_t key_b[KEY_MAX/8 + 1]; memset(key_b, 0, sizeof(key_b)); ioctl(fd, EVIOCGKEY(sizeof(key_b)), key_b); for (yalv = 0; yalv < KEY_MAX; yalv++) { if (test_bit(yalv, key_b)) { /* the bit is set in the key state */ printf(" Key 0x%02x ", yalv); switch ( yalv) { case KEY_RESERVED : printf(" (Reserved)\n"); break; case KEY_ESC : […]

用linux c shell上的向上箭头显示最后的命令

我在c中实现了一个简单的linux shell。 现在,我添加了一些function,我立即想到的是能够用向上箭头显示最后的命令。 问题1: 但是,我不知道如何做到这一点。 你做? 问题2: 如何存储“历史”命令的任何评论也赞赏。 我想像一个允许访问所有元素的队列是一个好主意。 我错了吗? 我必须执行它还是已经有一些很好的实现,我应该知道吗? 谢谢。

在Linux上用Xlib重播“主动”键盘抓取

我一直在使用Xlib的XGrabKey跟踪XAllowEvents = ReplayPointer的单个键的input事件,以便目标窗口也获取事件。 我需要这样做整个键盘,可能使用XGrabKeyboard ,但XGrabKeyboard是一个积极的抢,根据文档和经验ReplayPointer不适用于主动抓斗。 有什么方法可以重播或以其他方式将事件转发到目标窗口? 我不会有根访问权限,所以使用/ dev / input / event *的select不幸是不可选的。 谢谢!

在Linux上拦截并发送Python的击键

我正在寻找一种方法来截获所有的键盘信号,然后到达活动的应用程序。 然后我想在将它们发送到当前活动的应用程序之前解释和映射击键。 一个Python库会很棒,但是C / C ++也足够了。

用linux下的ioctl重新映射键盘

我实际上是试图编写一个小程序来捕获从Linux下的特定USB键盘的全球键盘input。 我正在testing这段代码: #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <linux/input.h> #include <string.h> #include <stdio.h> static const char *const evval[3] = { "RELEASED", "PRESSED ", "REPEATED" }; int main(void) { const char *dev = "/dev/input/event2"; struct input_event ev; ssize_t n; int fd; char name[256]= "Unknown"; // int codes[2]; // codes[0] = 58; /* M […]

如何为eclipse设置超级/ Windows / mod4键绑定

我想在eclipse(3.7.2)中设置一些关键的绑定(“windows”键),但是当我按下它的时候,似乎并没有拿起这个修饰键。 为什么? 我能做些什么来检测它?