From bcd3da1fcd802330817bb0795f5a563ca093409b Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sun, 14 Sep 2014 18:12:37 -0400 Subject: [PATCH] make x11 keyboard repeat detectable --- src/x11/ffi.rs | 4 +++- src/x11/mod.rs | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/x11/ffi.rs b/src/x11/ffi.rs index d127a270..2bd2075d 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 07105440..1b1e1165 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();