diff --git a/stepmania/src/arch/InputHandler/InputHandler_X11.cpp b/stepmania/src/arch/InputHandler/InputHandler_X11.cpp index dcb0bfe454..8f61183672 100644 --- a/stepmania/src/arch/InputHandler/InputHandler_X11.cpp +++ b/stepmania/src/arch/InputHandler/InputHandler_X11.cpp @@ -8,6 +8,8 @@ #include #include +XKeyboardState prev_state; + static RageKeySym XSymToKeySym( int key ) { #define KEY_INV KEY_INVALID @@ -111,12 +113,19 @@ static RageKeySym XSymToKeySym( int key ) InputHandler_X11::InputHandler_X11() { + XKeyboardControl new_state; + new_state.auto_repeat_mode = AutoRepeatModeOff; X11Helper::Go(); X11Helper::OpenMask(KeyPressMask); X11Helper::OpenMask(KeyReleaseMask); + XGetKeyboardControl(X11Helper::Dpy,&prev_state); + XChangeKeyboardControl(X11Helper::Dpy,KBAutoRepeatMode,&new_state); } InputHandler_X11::~InputHandler_X11() { + XKeyboardControl end_state; + end_state.auto_repeat_mode = prev_state.global_auto_repeat; + XChangeKeyboardControl(X11Helper::Dpy,KBAutoRepeatMode,&end_state); X11Helper::CloseMask(KeyPressMask); X11Helper::CloseMask(KeyReleaseMask); X11Helper::Stop(); }