diff options
Diffstat (limited to 'recordmydesktop/src/rmd_shortcuts.c')
-rw-r--r-- | recordmydesktop/src/rmd_shortcuts.c | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/recordmydesktop/src/rmd_shortcuts.c b/recordmydesktop/src/rmd_shortcuts.c deleted file mode 100644 index e1e07f5..0000000 --- a/recordmydesktop/src/rmd_shortcuts.c +++ /dev/null @@ -1,142 +0,0 @@ -/****************************************************************************** -* recordMyDesktop * -******************************************************************************* -* * -* Copyright (C) 2006,2007,2008 John Varouhakis * -* * -* * -* This program is free software; you can redistribute it and/or modify * -* it under the terms of the GNU General Public License as published by * -* the Free Software Foundation; either version 2 of the License, or * -* (at your option) any later version. * -* * -* This program is distributed in the hope that it will be useful, * -* but WITHOUT ANY WARRANTY; without even the implied warranty of * -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -* GNU General Public License for more details. * -* * -* You should have received a copy of the GNU General Public License * -* along with this program; if not, write to the Free Software * -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -* * -* * -* * -* For further information contact me at johnvarouhakis@gmail.com * -******************************************************************************/ - -#include "config.h" -#include "rmd_shortcuts.h" - -#include "rmd_types.h" - -#include <X11/Xlib.h> -#include <X11/Xlibint.h> -#include <X11/keysym.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -int rmdRegisterShortcut( Display *dpy, - Window root, - const char *shortcut, - HotKey *hotkey) { - - int keycode = 0, i, j; - KeySym key = 0; - unsigned int modifier_mask = 0, numlock_mask = 0; - char *keystr = NULL; - - if (strstr(shortcut, "Shift")) - modifier_mask = modifier_mask | ShiftMask; - if (strstr(shortcut, "Control")) - modifier_mask = modifier_mask | ControlMask; - if (strstr(shortcut, "Mod1")) - modifier_mask = modifier_mask | Mod1Mask; - if (strstr(shortcut, "Mod2")) - modifier_mask = modifier_mask | Mod2Mask; - if (strstr(shortcut, "Mod3")) - modifier_mask = modifier_mask | Mod3Mask; - if (strstr(shortcut, "Mod4")) - modifier_mask = modifier_mask | Mod4Mask; - if (strstr(shortcut, "Mod5")) - modifier_mask = modifier_mask | Mod5Mask; - - //we register the shortcut on the root - //window, which means on every keypress event, - //so I think it's neccessary to have at least one - //modifier. - if (modifier_mask == 0) - return 1; - if ((keystr = rindex(shortcut, '+')) != NULL) { - keystr++; - if ((key = XStringToKeysym(keystr)) == NoSymbol) - return 1; - else - keycode = XKeysymToKeycode(dpy, key); - } else - return 1; - - - /* Key grabbing stuff taken from tilda who took it from yeahconsole - * who took it from evilwm */ - - { - KeyCode numlock = XKeysymToKeycode(dpy, XK_Num_Lock); - XModifierKeymap *modmap = XGetModifierMapping(dpy); - for (i = 0; i < 8; i++) { - for (j = 0; j < modmap->max_keypermod; j++) { - if (modmap->modifiermap[i * modmap->max_keypermod + j] == numlock) - numlock_mask = (1 << i); - } - } - XFreeModifiermap(modmap); - } - - hotkey->modnum = 0; - hotkey->key = keycode; - - XGrabKey( dpy, - keycode, - modifier_mask, - root, - True, - GrabModeAsync, - GrabModeAsync); - hotkey->mask[0] = modifier_mask; - hotkey->modnum++; - - XGrabKey( dpy, - keycode, - LockMask | modifier_mask, - root, - True, - GrabModeAsync, - GrabModeAsync); - hotkey->mask[1] = LockMask | modifier_mask; - hotkey->modnum++; - - if (numlock_mask) { - XGrabKey( dpy, - keycode, - numlock_mask | modifier_mask, - root, - True, - GrabModeAsync, - GrabModeAsync); - hotkey->mask[2] = numlock_mask | modifier_mask; - hotkey->modnum++; - - XGrabKey( dpy, - keycode, - numlock_mask | LockMask | modifier_mask, - root, - True, - GrabModeAsync, - GrabModeAsync); - hotkey->mask[3] = numlock_mask | LockMask | modifier_mask; - hotkey->modnum++; - } - - return 0; -} |