如果在启用AutoRepeat的同时在X11中按住某个键,则会连续收到KeyPress和KeyRelease事件.我知道,自动重复可使用功能被禁用XAutoRepeatOff(),但是这改变了整个X服务器的设置.有没有办法为单个应用程序禁用AutoRepeat或忽略重复的击键?
我正在寻找的是当按下一个键时的单个KeyPress事件和一个释放键时的单个KeyRelease事件,而不会干扰X服务器的AutoRepeat设置.
这是一个让你前进的最小例子(主要来自初学者Xlib教程):
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
Display *dis;
Window win;
XEvent report;
int main ()
{
dis = XOpenDisplay (NULL);
// XAutoRepeatOn(dis);
win = XCreateSimpleWindow (dis, RootWindow (dis, 0), 1, 1, 500, 500,
0, BlackPixel (dis, 0), BlackPixel (dis, 0));
XSelectInput (dis, win, KeyPressMask | KeyReleaseMask);
XMapWindow (dis, win); …
Run Code Online (Sandbox Code Playgroud)