]> Dogcows Code - chaz/openbox/commitdiff
ignore num/caps/scroll lock in events
authorDana Jansens <danakj@orodu.net>
Mon, 6 Jan 2003 06:02:22 +0000 (06:02 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 6 Jan 2003 06:02:22 +0000 (06:02 +0000)
otk/display.cc
otk/display.hh
otk/eventdispatcher.cc
otk/otk_wrap.cc

index bd6d2d05d1b31e0ba3cadfa4e217de3713b3b55b..3a15ff22ecb16b05a30fee590047b359ce108759 100644 (file)
@@ -49,6 +49,8 @@ int  OBDisplay::_shape_event_basep = 0;
 bool OBDisplay::_xinerama = false;
 int  OBDisplay::_xinerama_event_basep = 0;
 unsigned int OBDisplay::_mask_list[8];
+unsigned int OBDisplay::_scrollLockMask = 0;
+unsigned int OBDisplay::_numLockMask = 0;
 OBDisplay::ScreenInfoList OBDisplay::_screenInfoList;
 BGCCache *OBDisplay::_gccache = (BGCCache*) 0;
 int OBDisplay::_grab_count = 0;
@@ -113,7 +115,6 @@ line argument.\n\n"));
 
   // get lock masks that are defined by the display (not constant)
   XModifierKeymap *modmap;
-  unsigned int NumLockMask = 0, ScrollLockMask = 0;
 
   modmap = XGetModifierMapping(display);
   if (modmap && modmap->max_keypermod > 0) {
@@ -133,9 +134,9 @@ line argument.\n\n"));
       if (! modmap->modifiermap[cnt]) continue;
 
       if (num_lock == modmap->modifiermap[cnt])
-        NumLockMask = mask_table[cnt / modmap->max_keypermod];
+        _numLockMask = mask_table[cnt / modmap->max_keypermod];
       if (scroll_lock == modmap->modifiermap[cnt])
-        ScrollLockMask = mask_table[cnt / modmap->max_keypermod];
+        _scrollLockMask = mask_table[cnt / modmap->max_keypermod];
     }
   }
 
@@ -143,12 +144,12 @@ line argument.\n\n"));
 
   _mask_list[0] = 0;
   _mask_list[1] = LockMask;
-  _mask_list[2] = NumLockMask;
-  _mask_list[3] = LockMask | NumLockMask;
-  _mask_list[4] = ScrollLockMask;
-  _mask_list[5] = ScrollLockMask | LockMask;
-  _mask_list[6] = ScrollLockMask | NumLockMask;
-  _mask_list[7] = ScrollLockMask | LockMask | NumLockMask;
+  _mask_list[2] = _numLockMask;
+  _mask_list[3] = LockMask | _numLockMask;
+  _mask_list[4] = _scrollLockMask;
+  _mask_list[5] = _scrollLockMask | LockMask;
+  _mask_list[6] = _scrollLockMask | _numLockMask;
+  _mask_list[7] = _scrollLockMask | LockMask | _numLockMask;
 
   // Get information on all the screens which are available.
   _screenInfoList.reserve(ScreenCount(display));
index 0ebd41402e9d35de965005c249bd5eb18091824e..0fbf2b34bf3dfe80aaf90751c0cbe2c4b5a2f460 100644 (file)
@@ -42,6 +42,12 @@ private:
   //! A list of all possible combinations of keyboard lock masks
   static unsigned int _mask_list[8];
 
+  //! The value of the mask for the NumLock modifier
+  static unsigned int _numLockMask;
+
+  //! The value of the mask for the ScrollLock modifier
+  static unsigned int _scrollLockMask;
+
   //! The number of requested grabs on the display
   static int _grab_count;
 
@@ -97,6 +103,9 @@ public:
   //! Returns if the display has the xinerama extention available
   inline static bool xinerama() { return _xinerama; }
 
+  inline static unsigned int numLockMask() { return _numLockMask; }
+  inline static unsigned int scrollLockMask() { return _scrollLockMask; }
+
   //! Grabs the display
   static void grab();
 
index 51e2251e201050b29fddf807debe9bbaded7784e..62335781dabd2370f2c4d0b419c12cf92b64e4a6 100644 (file)
@@ -56,13 +56,25 @@ void OtkEventDispatcher::dispatchEvents(void)
     printf("Event %d window %lx\n", e.type, e.xany.window);
 #endif
 
-    // grab the lasttime
+    printf("num=%u scroll=%u\n", OBDisplay::numLockMask(), OBDisplay::scrollLockMask());
+
+    // grab the lasttime and hack up the modifiers
     switch (e.type) {
     case ButtonPress:
     case ButtonRelease:
-      _lasttime = e.xbutton.time; break;
+      _lasttime = e.xbutton.time;
+      e.xbutton.state &= ~(LockMask | OBDisplay::numLockMask() |
+                           OBDisplay::scrollLockMask());
+      break;
+    case KeyPress:
+      e.xkey.state &= ~(LockMask | OBDisplay::numLockMask() |
+                        OBDisplay::scrollLockMask());
+      break;
     case MotionNotify:
-      _lasttime = e.xmotion.time; break;
+      _lasttime = e.xmotion.time;
+      e.xmotion.state &= ~(LockMask | OBDisplay::numLockMask() |
+                           OBDisplay::scrollLockMask());
+      break;
     case PropertyNotify:
       _lasttime = e.xproperty.time; break;
     case EnterNotify:
index f3951d4931ab15dfd4c3af9118b4fbe0d3403d56..dc49a85b4a7cbea92169ced8fe27c41cbc7b6dc3 100644 (file)
@@ -5539,6 +5539,34 @@ static PyObject *_wrap_OBDisplay_xinerama(PyObject *self, PyObject *args) {
 }
 
 
+static PyObject *_wrap_OBDisplay_numLockMask(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":OBDisplay_numLockMask")) goto fail;
+    result = (unsigned int)otk::OBDisplay::numLockMask();
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_OBDisplay_scrollLockMask(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    unsigned int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":OBDisplay_scrollLockMask")) goto fail;
+    result = (unsigned int)otk::OBDisplay::scrollLockMask();
+    
+    resultobj = PyInt_FromLong((long)result);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
 static PyObject *_wrap_OBDisplay_grab(PyObject *self, PyObject *args) {
     PyObject *resultobj;
     
@@ -13041,6 +13069,8 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"OBDisplay_shape", _wrap_OBDisplay_shape, METH_VARARGS },
         { (char *)"OBDisplay_shapeEventBase", _wrap_OBDisplay_shapeEventBase, METH_VARARGS },
         { (char *)"OBDisplay_xinerama", _wrap_OBDisplay_xinerama, METH_VARARGS },
+        { (char *)"OBDisplay_numLockMask", _wrap_OBDisplay_numLockMask, METH_VARARGS },
+        { (char *)"OBDisplay_scrollLockMask", _wrap_OBDisplay_scrollLockMask, METH_VARARGS },
         { (char *)"OBDisplay_grab", _wrap_OBDisplay_grab, METH_VARARGS },
         { (char *)"OBDisplay_ungrab", _wrap_OBDisplay_ungrab, METH_VARARGS },
         { (char *)"OBDisplay_grabButton", _wrap_OBDisplay_grabButton, METH_VARARGS },
This page took 0.029468 seconds and 4 git commands to generate.