aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Tatarka <evan@tatarka.me>2014-09-14 18:12:37 -0400
committerEvan Tatarka <evan@tatarka.me>2014-09-15 19:11:23 -0400
commitbcd3da1fcd802330817bb0795f5a563ca093409b (patch)
tree44d07de371f067e759fa78f1b83c490f1df90d37
parent485e89715f163663bc53f6bf9f0b15bdd226f39a (diff)
downloadglutin-bcd3da1fcd802330817bb0795f5a563ca093409b.tar.gz
glutin-bcd3da1fcd802330817bb0795f5a563ca093409b.zip
make x11 keyboard repeat detectable
-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();