all repos — fluxbox @ 06eaec00ca01b38d5f431e58d55915401f99425b

custom fork of the fluxbox windowmanager

use real mods for caps, num and scroll
fluxgen fluxgen
commit

06eaec00ca01b38d5f431e58d55915401f99425b

parent

35394a486cf9e08b585a532e885c462a4beddea1

2 files changed, 44 insertions(+), 8 deletions(-)

jump to
M src/FbTk/KeyUtil.ccsrc/FbTk/KeyUtil.cc

@@ -19,7 +19,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: KeyUtil.cc,v 1.4 2003/10/13 19:31:56 fluxgen Exp $ +// $Id: KeyUtil.cc,v 1.5 2003/12/30 18:11:44 fluxgen Exp $ #include "KeyUtil.hh" #include "App.hh"

@@ -57,6 +57,41 @@ if (m_modmap)

XFreeModifiermap(m_modmap); m_modmap = XGetModifierMapping(App::instance()->display()); + // mask to use for modifier + int mods[] = { + ShiftMask, + LockMask, + ControlMask, + Mod1Mask, + Mod2Mask, + Mod3Mask, + Mod4Mask, + Mod5Mask, + 0 + }; + + // find modifiers and set them + for (int i=0, realkey=0; i<8; ++i) { + for (int key=0; key<m_modmap->max_keypermod; ++key, ++realkey) { + + if (m_modmap->modifiermap[realkey] == 0) + continue; + + KeySym ks = XKeycodeToKeysym(App::instance()->display(), m_modmap->modifiermap[realkey], 0); + + switch (ks) { + case XK_Caps_Lock: + m_capslock = mods[i]; + break; + case XK_Scroll_Lock: + m_scrolllock = mods[i]; + break; + case XK_Num_Lock: + m_numlock = mods[i]; + break; + } + } + } }

@@ -67,9 +102,9 @@ and with numlock,capslock and scrollock

*/ void KeyUtil::grabKey(unsigned int key, unsigned int mod) { Display *display = App::instance()->display(); - const unsigned int capsmod = LockMask; - const unsigned int nummod = Mod2Mask; - const unsigned int scrollmod = Mod5Mask; + const unsigned int capsmod = instance().m_capslock; + const unsigned int nummod = instance().m_numlock; + const unsigned int scrollmod = instance().m_scrolllock; for (int screen=0; screen<ScreenCount(display); screen++) {
M src/FbTk/KeyUtil.hhsrc/FbTk/KeyUtil.hh

@@ -19,7 +19,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: KeyUtil.hh,v 1.4 2003/12/16 17:06:51 fluxgen Exp $ +// $Id: KeyUtil.hh,v 1.5 2003/12/30 18:10:43 fluxgen Exp $ #ifndef FBTK_KEYUTIL_HH #define FBTK_KEYUTIL_HH

@@ -65,9 +65,9 @@ /**

Strip out modifiers we want to ignore @return the cleaned state number */ - static unsigned int cleanMods(unsigned int mods) { - //remove numlock(Mod2), capslock and scrolllock(Mod5) - return mods & ~(LockMask | Mod2Mask | Mod5Mask); + unsigned int cleanMods(unsigned int mods) { + //remove numlock, capslock and scrolllock + return mods & ~(m_capslock | m_numlock | m_scrolllock); } /**

@@ -80,6 +80,7 @@ private:

void loadModmap(); XModifierKeymap *m_modmap; + int m_capslock, m_numlock, m_scrolllock; static std::auto_ptr<KeyUtil> s_keyutil; };