小编mzu*_*her的帖子

忽略X11应用程序中的自动重复

如果在启用AutoRepeat的同时在X11中按住某个键,则会连续收到KeyPressKeyRelease事件.我知道,自动重复可使用功能被禁用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)

x11 keyboard autorepeat

21
推荐指数
3
解决办法
9158
查看次数

5
推荐指数
1
解决办法
1233
查看次数

标签 统计

autorepeat ×1

c++ ×1

emacs ×1

keyboard ×1

refactoring ×1

x11 ×1