diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/x11/ffi.rs | 4 | ||||
-rw-r--r-- | src/x11/mod.rs | 10 |
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(); |