]> Dogcows Code - chaz/openbox/blobdiff - util/epist/epist.cc
handle all combinations of lock modifiers on keypress
[chaz/openbox] / util / epist / epist.cc
index 9b0460000d36ceaabe0b477ae6272ecb5d2a87eb..a97b1f775e6b57672cf74ee92f740bc199748cd8 100644 (file)
@@ -58,7 +58,7 @@ using std::string;
 
 epist::epist(char **argv, char *dpy_name, char *rc_file)
   : BaseDisplay(argv[0], dpy_name) {
-
+    
   _argv = argv;
 
   if (rc_file)
@@ -68,9 +68,11 @@ epist::epist(char **argv, char *dpy_name, char *rc_file)
 
   _xatom = new XAtom(getXDisplay());
 
-  screen *s = new screen(this, DefaultScreen(getXDisplay()));
-  if (s->managed())
-    _screens.push_back(s);
+  for (unsigned int i = 0; i < getNumberOfScreens(); ++i) {
+    screen *s = new screen(this, i);
+    if (s->managed())
+      _screens.push_back(s);
+  }
   if (_screens.empty()) {
     cout << "No compatible window manager found on any screens. Aborting.\n";
     ::exit(1);
@@ -79,15 +81,136 @@ epist::epist(char **argv, char *dpy_name, char *rc_file)
   _actions.push_back(Action(Action::nextWorkspace,
                             XKeysymToKeycode(getXDisplay(),
                                              XStringToKeysym("Tab")),
-                            Mod1Mask));
+                            ControlMask));
   _actions.push_back(Action(Action::prevWorkspace,
                            XKeysymToKeycode(getXDisplay(),
                                              XStringToKeysym("Tab")),
-                           ControlMask));
-  _actions.push_back(Action(Action::shade,
+                           ControlMask | ShiftMask));
+  _actions.push_back(Action(Action::toggleshade,
                             XKeysymToKeycode(getXDisplay(),
                                              XStringToKeysym("F5")),
                             Mod1Mask));
+  _actions.push_back(Action(Action::close,
+                            XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("F4")),
+                            Mod1Mask));
+  _actions.push_back(Action(Action::nextWindow,
+                            XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Tab")),
+                            Mod1Mask));
+  _actions.push_back(Action(Action::prevWindow,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Tab")),
+                           Mod1Mask | ShiftMask));
+  _actions.push_back(Action(Action::nextWindowOnAllWorkspaces,
+                            XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Tab")),
+                            Mod1Mask | ControlMask));
+  _actions.push_back(Action(Action::prevWindowOnAllWorkspaces,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Tab")),
+                           Mod1Mask | ShiftMask | ControlMask));
+  _actions.push_back(Action(Action::raise,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Up")),
+                           Mod1Mask));
+  _actions.push_back(Action(Action::lower,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Down")),
+                           Mod1Mask));
+  _actions.push_back(Action(Action::moveWindowUp,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Up")),
+                           Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::moveWindowDown,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Down")),
+                           Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::moveWindowLeft,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Left")),
+                           Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::moveWindowRight,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Right")),
+                           Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::resizeWindowHeight,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Up")),
+                           ShiftMask | Mod1Mask | ControlMask, -1));
+  _actions.push_back(Action(Action::resizeWindowHeight,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Down")),
+                           ShiftMask | Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::resizeWindowWidth,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Left")),
+                           ShiftMask | Mod1Mask | ControlMask, -1));
+  _actions.push_back(Action(Action::resizeWindowWidth,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Right")),
+                           ShiftMask | Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::iconify,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("I")),
+                           Mod1Mask | ControlMask));
+  _actions.push_back(Action(Action::toggleomnipresent,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("O")),
+                           Mod1Mask | ControlMask));
+  _actions.push_back(Action(Action::toggleMaximizeHorizontal,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("X")),
+                           ShiftMask | Mod1Mask));
+  _actions.push_back(Action(Action::toggleMaximizeVertical,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("X")),
+                           ShiftMask | ControlMask));
+  _actions.push_back(Action(Action::toggleMaximizeFull,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("X")),
+                           Mod1Mask | ControlMask));
+  _actions.push_back(Action(Action::changeWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("1")),
+                           Mod1Mask | ControlMask, 0));
+  _actions.push_back(Action(Action::changeWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("2")),
+                           Mod1Mask | ControlMask, 1));
+  _actions.push_back(Action(Action::changeWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("3")),
+                           Mod1Mask | ControlMask, 2));
+  _actions.push_back(Action(Action::changeWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("4")),
+                           Mod1Mask | ControlMask, 3));
+  _actions.push_back(Action(Action::sendToWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("1")),
+                           Mod1Mask | ControlMask | ShiftMask, 0));
+  _actions.push_back(Action(Action::sendToWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("2")),
+                           Mod1Mask | ControlMask | ShiftMask, 1));
+  _actions.push_back(Action(Action::sendToWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("3")),
+                           Mod1Mask | ControlMask | ShiftMask, 2));
+  _actions.push_back(Action(Action::sendToWorkspace,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("4")),
+                           Mod1Mask | ControlMask | ShiftMask, 3));
+  _actions.push_back(Action(Action::execute,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("Escape")),
+                           Mod1Mask | ControlMask,
+                           "sleep 1 && xset dpms force off"));
+  _actions.push_back(Action(Action::execute,
+                           XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("space")),
+                           Mod1Mask, "rxvt"));
   activateGrabs();
 }
 
@@ -104,8 +227,7 @@ void epist::activateGrabs() {
     ActionList::const_iterator ait, end = _actions.end();
 
     for(ait = _actions.begin(); ait != end; ++ait) {
-      XGrabKey(getXDisplay(), ait->keycode(), ait->modifierMask(),
-               (*scrit)->rootWindow(), True, GrabModeAsync, GrabModeAsync);
+      (*scrit)->grabKey(ait->keycode(), ait->modifierMask());
     }
   }
 }
@@ -138,7 +260,6 @@ void epist::process_event(XEvent *e) {
   else
     root = e->xany.window;
   
-  cout << "event\n";
   ScreenList::const_iterator it, end = _screens.end();
   for (it = _screens.begin(); it != end; ++it) {
     if ((*it)->rootWindow() == root) {
This page took 0.026584 seconds and 4 git commands to generate.