| src/KeyGrabber.cc | |
| 121 | @@ -121,9 +121,9 @@ |
| 121 | //! If _global_keys holds any keygrabs they will be flushed before |
| 122 | //! reloading the new keybindings. |
| 123 | bool |
| 124 | KeyGrabber::load(const std::string &file) |
| 125 | KeyGrabber::load(const std::string &file, bool force) |
| 126 | { |
| 127 | if (! Util::requireReload(_cfg_state, file)) { |
| 128 | if (! force && ! Util::requireReload(_cfg_state, file)) { |
| 129 | return false; |
| 130 | } |
| 131 | |
| ... | |
| src/KeyGrabber.hh | |
| 72 | @@ -72,7 +72,7 @@ |
| 72 | //! @brief Returns the KeyGrabber instance pointer. |
| 73 | static KeyGrabber *instance(void) { return _instance; } |
| 74 | |
| 75 | bool load(const std::string &file); |
| 76 | bool load(const std::string &file, bool force=false); |
| 77 | void grabKeys(Window win); |
| 78 | void ungrabKeys(Window win); |
| 79 | |
| ... | |
| src/WindowManager.cc | |
| 708 | @@ -708,10 +708,10 @@ |
| 708 | * Reload keygrabber configuration and re-grab keys on all windows. |
| 709 | */ |
| 710 | void |
| 711 | WindowManager::doReloadKeygrabber(void) |
| 712 | WindowManager::doReloadKeygrabber(bool force) |
| 713 | { |
| 714 | // Reload the keygrabber |
| 715 | if (! _keygrabber->load(_config->getKeyFile())) { |
| 716 | if (! _keygrabber->load(_config->getKeyFile(), force)) { |
| 717 | return; |
| 718 | } |
| 719 | |
| ... | |
| 1450 | @@ -1450,7 +1450,8 @@ |
| 1450 | { |
| 1451 | if (ev->request == MappingKeyboard || ev->request == MappingModifier) { |
| 1452 | XRefreshKeyboardMapping(ev); |
| 1453 | |
| 1454 | _screen->setLockKeys(); |
| 1455 | doReloadKeygrabber(true); |
| 1456 | } |
| 1457 | } |
| 1458 | |
| ... | |
| src/WindowManager.hh | |
| 181 | @@ -181,7 +181,7 @@ |
| 181 | void doReloadConfig(void); |
| 182 | void doReloadTheme(void); |
| 183 | void doReloadMouse(void); |
| 184 | void doReloadKeygrabber(void); |
| 185 | void doReloadKeygrabber(bool force=false); |
| 186 | void doReloadAutoproperties(void); |
| 187 | #ifdef HARBOUR |
| 188 | void doReloadHarbour(void); |
| ... | |
| src/PScreen.cc | |
| 172 | @@ -172,8 +172,7 @@ |
| 172 | } |
| 173 | |
| 174 | // Figure out what keys the Num and Scroll Locks are |
| 175 | _num_lock = getMaskFromKeycode(XKeysymToKeycode(_dpy, XK_Num_Lock)); |
| 176 | _scroll_lock = getMaskFromKeycode(XKeysymToKeycode(_dpy, XK_Scroll_Lock)); |
| 177 | setLockKeys(); |
| 178 | |
| 179 | XSync(_dpy, false); |
| 180 | XUngrabServer(_dpy); |
| ... | |
| 189 | @@ -190,6 +189,16 @@ |
| 189 | _instance = 0; |
| 190 | } |
| 191 | |
| 192 | /** |
| 193 | * Figure out what keys the Num and Scroll Locks are |
| 194 | */ |
| 195 | void |
| 196 | PScreen::setLockKeys(void) |
| 197 | { |
| 198 | _num_lock = getMaskFromKeycode(XKeysymToKeycode(_dpy, XK_Num_Lock)); |
| 199 | _scroll_lock = getMaskFromKeycode(XKeysymToKeycode(_dpy, XK_Scroll_Lock)); |
| 200 | } |
| 201 | |
| 202 | //! @brief Get next event using select to avoid signal blocking |
| 203 | //! @param ev Event to fill in. |
| 204 | //! @return true if event was fetched, else false. |
| ... | |
| src/PScreen.hh | |
| 147 | @@ -147,6 +147,8 @@ |
| 147 | state &= ~Button1Mask & ~Button2Mask & ~Button3Mask & ~Button4Mask & ~Button5Mask; |
| 148 | return state; |
| 149 | } |
| 150 | |
| 151 | void setLockKeys(void); |
| 152 | inline uint getNumLock(void) const { return _num_lock; } |
| 153 | inline uint getScrollLock(void) const { return _scroll_lock; } |
| 154 | |
| ... | |