aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/x11/ffi.rs4
-rw-r--r--src/x11/mod.rs10
2 files changed, 13 insertions, 1 deletions
diff --git a/src/x11/ffi.rs b/src/x11/ffi.rs
index d127a27..2bd2075 100644
--- a/src/x11/ffi.rs
+++ b/src/x11/ffi.rs
@@ -1406,6 +1406,8 @@ extern "C" {
pub fn glXMakeCurrent(dpy: *mut Display, drawable: GLXDrawable,
ctx: GLXContext) -> Bool;
pub fn glXSwapBuffers(dpy: *mut Display, drawable: GLXDrawable);
+
+ pub fn XkbSetDetectableAutoRepeat(dpy: *mut Display, detectable: bool, supported_rtm: *mut bool) -> bool;
}
/*
@@ -1462,4 +1464,4 @@ extern const char *glXGetClientString( Display *dpy, int name );
extern Display *glXGetCurrentDisplay( void );
-*/ \ No newline at end of file
+*/
diff --git a/src/x11/mod.rs b/src/x11/mod.rs
index 0710544..1b1e116 100644
--- a/src/x11/mod.rs
+++ b/src/x11/mod.rs
@@ -179,6 +179,16 @@ impl Window {
ic
};
+ // Attempt to make keyboard input repeat detectable
+ unsafe {
+ let mut supported_ptr = false;
+ ffi::XkbSetDetectableAutoRepeat(display, true, &mut supported_ptr);
+ if !supported_ptr {
+ return Err(format!("XkbSetDetectableAutoRepeat failed"));
+ }
+ }
+
+
// creating GL context
let context = unsafe {
let mut attributes = Vec::new();