/[oroborus]/oroborus/src/keyboard.c
ViewVC logotype

Diff of /oroborus/src/keyboard.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by dreamind, Sun Jul 7 03:17:41 2002 UTC revision 1.6 by dreamind, Mon Jul 15 08:23:08 2002 UTC
# Line 31  Line 31 
31  void  void
32  parseKeyString (Display * dpy, MyKey * key, char *str)  parseKeyString (Display * dpy, MyKey * key, char *str)
33  {  {
34    char *k;          char *k;
35    
36  #ifdef DEBUG  #ifdef DEBUG
37    printf ("entering parseKeyString\n");          printf ("entering parseKeyString\n");
38    printf ("key string=%s\n", str);          printf ("key string=%s\n", str);
39  #endif  #endif
40    
41    key->keycode = 0;          key->keycode = 0;
42    key->modifier = 0;          key->modifier = 0;
43    
44    if (!strcmp (str, "none"))          if (!strcmp (str, "none"))
45      return;                  return;
46    
47    k = strrchr (str, '+');          k = strrchr (str, '+');
48    if (k)          if (k)
49      {                  {
50        key->keycode = XKeysymToKeycode (dpy, XStringToKeysym (k + 1));                          key->keycode = XKeysymToKeycode (dpy, XStringToKeysym (k + 1));
51        if (strstr (str, "Shift"))                          if (strstr (str, "Shift"))
52          key->modifier = key->modifier | ShiftMask;                                  key->modifier = key->modifier | ShiftMask;
53        if (strstr (str, "Control"))                          if (strstr (str, "Control"))
54          key->modifier = key->modifier | ControlMask;                                  key->modifier = key->modifier | ControlMask;
55        if (strstr (str, "Mod1"))                          if (strstr (str, "Mod1"))
56          key->modifier = key->modifier | Mod1Mask;                                  key->modifier = key->modifier | Mod1Mask;
57        if (strstr (str, "Mod2"))                          if (strstr (str, "Mod2"))
58          key->modifier = key->modifier | Mod2Mask;                                  key->modifier = key->modifier | Mod2Mask;
59        if (strstr (str, "Mod3"))                          if (strstr (str, "Mod3"))
60          key->modifier = key->modifier | Mod3Mask;                                  key->modifier = key->modifier | Mod3Mask;
61        if (strstr (str, "Mod4"))                          if (strstr (str, "Mod4"))
62          key->modifier = key->modifier | Mod4Mask;                                  key->modifier = key->modifier | Mod4Mask;
63        if (strstr (str, "Mod5"))                          if (strstr (str, "Mod5"))
64          key->modifier = key->modifier | Mod5Mask;                                  key->modifier = key->modifier | Mod5Mask;
65      }                  }
66  }  }
67    
68  void  void
69  grabKey (Display * dpy, MyKey * key, Window w)  grabKey (Display * dpy, MyKey * key, Window w)
70  {  {
71  #ifdef DEBUG  #ifdef DEBUG
72    printf ("entering grabKey\n");          printf ("entering grabKey\n");
73  #endif  #endif
74    
75    if (key->keycode)          if (key->keycode)
76      {                  {
77        XGrabKey (dpy, key->keycode, key->modifier, w, False, GrabModeAsync,                          XGrabKey (dpy, key->keycode, key->modifier, w, False, GrabModeAsync,
78                  GrabModeAsync);                                                                  GrabModeAsync);
79        XGrabKey (dpy, key->keycode, key->modifier | NumLockMask, w, False,                          XGrabKey (dpy, key->keycode, key->modifier | NumLockMask, w, False,
80                  GrabModeAsync, GrabModeAsync);                                                                  GrabModeAsync, GrabModeAsync);
81        XGrabKey (dpy, key->keycode, key->modifier | CapsLockMask, w, False,                          XGrabKey (dpy, key->keycode, key->modifier | CapsLockMask, w, False,
82                  GrabModeAsync, GrabModeAsync);                                                                  GrabModeAsync, GrabModeAsync);
83        XGrabKey (dpy, key->keycode, key->modifier | ScrollLockMask, w, False,                          XGrabKey (dpy, key->keycode, key->modifier | ScrollLockMask, w, False,
84                  GrabModeAsync, GrabModeAsync);                                                                  GrabModeAsync, GrabModeAsync);
85        XGrabKey (dpy, key->keycode,                          XGrabKey (dpy, key->keycode,
86                  key->modifier | CapsLockMask | ScrollLockMask, w, False,                                                                  key->modifier | CapsLockMask | ScrollLockMask, w, False,
87                  GrabModeAsync, GrabModeAsync);                                                                  GrabModeAsync, GrabModeAsync);
88        XGrabKey (dpy, key->keycode, key->modifier | NumLockMask | CapsLockMask,                          XGrabKey (dpy, key->keycode, key->modifier | NumLockMask | CapsLockMask,
89                  w, False, GrabModeAsync, GrabModeAsync);                                                                  w, False, GrabModeAsync, GrabModeAsync);
90        XGrabKey (dpy, key->keycode,                          XGrabKey (dpy, key->keycode,
91                  key->modifier | NumLockMask | ScrollLockMask, w, False,                                                                  key->modifier | NumLockMask | ScrollLockMask, w, False,
92                  GrabModeAsync, GrabModeAsync);                                                                  GrabModeAsync, GrabModeAsync);
93        XGrabKey (dpy, key->keycode,                          XGrabKey (dpy, key->keycode,
94                  key->modifier | NumLockMask | CapsLockMask | ScrollLockMask,                                                                  key->modifier | NumLockMask | CapsLockMask | ScrollLockMask,
95                  w, False, GrabModeAsync, GrabModeAsync);                                                                  w, False, GrabModeAsync, GrabModeAsync);
96      }                  }
97  }  }
98    
99  void  void
100  ungrabKeys (Display * dpy, Window w)  ungrabKeys (Display * dpy, Window w)
101  {  {
102  #ifdef DEBUG  #ifdef DEBUG
103    printf ("entering ungrabKeys\n");          printf ("entering ungrabKeys\n");
104  #endif  #endif
105    
106    XUngrabKey (dpy, AnyKey, AnyModifier, w);          XUngrabKey (dpy, AnyKey, AnyModifier, w);
107  }  }
108    
109  void  void
110  init_keyboard (Display * dpy)  init_keyboard (Display * dpy)
111  {  {
112    XModifierKeymap *xmk = NULL;          XModifierKeymap *xmk = NULL;
113    KeyCode *map;          KeyCode *map;
114    int m, k;          int m, k;
115    
116  #ifdef DEBUG  #ifdef DEBUG
117    printf ("init_keyboard\n");          printf ("init_keyboard\n");
118  #endif  #endif
119    
120    xmk = XGetModifierMapping (dpy);          xmk = XGetModifierMapping (dpy);
121    if (xmk)          if (xmk)
122      {                  {
123        map = xmk->modifiermap;                          map = xmk->modifiermap;
124        for (m = 0; m < 8; m++)                          for (m = 0; m < 8; m++)
125          for (k = 0; k < xmk->max_keypermod; k++, map++)                                  for (k = 0; k < xmk->max_keypermod; k++, map++)
126            {                                          {
127              if (*map == XKeysymToKeycode (dpy, XK_Num_Lock))                                                  if (*map == XKeysymToKeycode (dpy, XK_Num_Lock))
128                NumLockMask = (1 << m);                                                          NumLockMask = (1 << m);
129              if (*map == XKeysymToKeycode (dpy, XK_Caps_Lock))                                                  if (*map == XKeysymToKeycode (dpy, XK_Caps_Lock))
130                CapsLockMask = (1 << m);                                                          CapsLockMask = (1 << m);
131              if (*map == XKeysymToKeycode (dpy, XK_Scroll_Lock))                                                  if (*map == XKeysymToKeycode (dpy, XK_Scroll_Lock))
132                ScrollLockMask = (1 << m);                                                          ScrollLockMask = (1 << m);
133            }                                          }
134        XFreeModifiermap (xmk);                          XFreeModifiermap (xmk);
135      }                  }
136  }  }
137    
138  /**This must remain at the end of the file.**********  /**This must remain at the end of the file.**********
139   * vim600:set sw=2 ts=8:                            *   * vim600:set sw=2 ts=2:                            *
140   * vim600:set cindent cinoptions={1s,>2s,^-1s,n-1s: *   * vim600:set cindent cinoptions={1s,>2s,^-1s,n-1s: *
141   * vim600:set foldmethod=marker:                    *   * vim600:set foldmethod=marker:                    *
142   ****************************************************/   ****************************************************/

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26