remove unecessary jump table
This commit is contained in:
46
config.h
46
config.h
@@ -61,50 +61,50 @@
|
||||
binding keys[] = {
|
||||
|
||||
// Focus the top-most window in a spot.
|
||||
{ .mod = Mod4Mask, .key = XK_Left, .act = ACTION_FOCUS, .num = SPOT1 },
|
||||
{ .mod = Mod4Mask, .key = XK_Up, .act = ACTION_FOCUS, .num = SPOT2 },
|
||||
{ .mod = Mod4Mask, .key = XK_Right, .act = ACTION_FOCUS, .num = SPOT2 },
|
||||
{ .mod = Mod4Mask, .key = XK_Down, .act = ACTION_FOCUS, .num = SPOT3 },
|
||||
{ .mod = Mod4Mask, .key = XK_Left, .act = action_focus, .num = SPOT1 },
|
||||
{ .mod = Mod4Mask, .key = XK_Up, .act = action_focus, .num = SPOT2 },
|
||||
{ .mod = Mod4Mask, .key = XK_Right, .act = action_focus, .num = SPOT2 },
|
||||
{ .mod = Mod4Mask, .key = XK_Down, .act = action_focus, .num = SPOT3 },
|
||||
|
||||
// Move the current window to another spot.
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Left, .act = ACTION_MOVE, .num = SPOT1 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Up, .act = ACTION_MOVE, .num = SPOT2 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Right, .act = ACTION_MOVE, .num = SPOT2 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Down, .act = ACTION_MOVE, .num = SPOT3 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Left, .act = action_move, .num = SPOT1 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Up, .act = action_move, .num = SPOT2 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Right, .act = action_move, .num = SPOT2 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Down, .act = action_move, .num = SPOT3 },
|
||||
|
||||
// Flip between the top two windows in the current spot.
|
||||
{ .mod = Mod4Mask, .key = XK_Tab, .act = ACTION_OTHER },
|
||||
{ .mod = Mod4Mask, .key = XK_Tab, .act = action_other },
|
||||
|
||||
// Cycle through all windows in the current spot.
|
||||
{ .mod = Mod4Mask, .key = XK_grave, .act = ACTION_CYCLE },
|
||||
{ .mod = Mod4Mask, .key = XK_grave, .act = action_cycle },
|
||||
|
||||
// Gracefully close the current window.
|
||||
{ .mod = Mod4Mask, .key = XK_Escape, .act = ACTION_CLOSE },
|
||||
{ .mod = Mod4Mask, .key = XK_Escape, .act = action_close },
|
||||
|
||||
// Toggle current window full screen.
|
||||
{ .mod = Mod4Mask, .key = XK_f, .act = ACTION_FULLSCREEN_TOGGLE },
|
||||
{ .mod = Mod4Mask, .key = XK_f, .act = action_fullscreen },
|
||||
|
||||
// Toggle current window above.
|
||||
{ .mod = Mod4Mask, .key = XK_a, .act = ACTION_ABOVE_TOGGLE },
|
||||
{ .mod = Mod4Mask, .key = XK_a, .act = action_above },
|
||||
|
||||
// Switch focus between monitors.
|
||||
{ .mod = Mod4Mask, .key = XK_Next, .act = ACTION_FOCUS_MONITOR, .num = +1 },
|
||||
{ .mod = Mod4Mask, .key = XK_Prior, .act = ACTION_FOCUS_MONITOR, .num = -1 },
|
||||
{ .mod = Mod4Mask, .key = XK_Next, .act = action_focus_monitor, .num = +1 },
|
||||
{ .mod = Mod4Mask, .key = XK_Prior, .act = action_focus_monitor, .num = -1 },
|
||||
|
||||
// Move windows between monitors.
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Next, .act = ACTION_MOVE_MONITOR, .num = +1 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Prior, .act = ACTION_MOVE_MONITOR, .num = -1 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Next, .act = action_move_monitor, .num = +1 },
|
||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Prior, .act = action_move_monitor, .num = -1 },
|
||||
|
||||
// Launcher
|
||||
{ .mod = Mod4Mask, .key = XK_x, .act = ACTION_COMMAND, .data = "dmenu_run" },
|
||||
{ .mod = Mod4Mask, .key = XK_x, .act = action_command, .data = "dmenu_run" },
|
||||
|
||||
// Snapshot state
|
||||
{ .mod = Mod4Mask, .key = XK_s, .act = ACTION_SNAPSHOT },
|
||||
{ .mod = Mod4Mask, .key = XK_r, .act = ACTION_ROLLBACK },
|
||||
{ .mod = Mod4Mask, .key = XK_s, .act = action_snapshot },
|
||||
{ .mod = Mod4Mask, .key = XK_r, .act = action_rollback },
|
||||
|
||||
// Find or start apps by WM_CLASS (lower case match).
|
||||
// Only works for apps that use some form of their binary name as their class...
|
||||
{ .mod = AnyModifier, .key = XK_F1, .act = ACTION_FIND_OR_START, .data = "urxvt" },
|
||||
{ .mod = AnyModifier, .key = XK_F2, .act = ACTION_FIND_OR_START, .data = "chromium" },
|
||||
{ .mod = AnyModifier, .key = XK_F3, .act = ACTION_FIND_OR_START, .data = "pcmanfm" },
|
||||
{ .mod = AnyModifier, .key = XK_F1, .act = action_find_or_start, .data = "urxvt" },
|
||||
{ .mod = AnyModifier, .key = XK_F2, .act = action_find_or_start, .data = "chromium" },
|
||||
{ .mod = AnyModifier, .key = XK_F3, .act = action_find_or_start, .data = "pcmanfm" },
|
||||
};
|
||||
71
xoat.c
71
xoat.c
@@ -52,7 +52,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
X(XOAT_SPOT),\
|
||||
X(XOAT_EXIT),\
|
||||
X(XOAT_RESTART),\
|
||||
X(_MOTIF_WM_HINTS),\
|
||||
X(_NET_SUPPORTED),\
|
||||
X(_NET_ACTIVE_WINDOW),\
|
||||
X(_NET_CLOSE_WINDOW),\
|
||||
@@ -96,32 +95,6 @@ enum { MONITOR_CURRENT=-1 };
|
||||
enum { SPOT1=1, SPOT2, SPOT3, SPOT_CURRENT, SPOT_SMART, SPOT1_LEFT, SPOT1_RIGHT };
|
||||
enum { FOCUS_IGNORE=1, FOCUS_STEAL, };
|
||||
|
||||
enum {
|
||||
ACTION_NONE,
|
||||
ACTION_MOVE,
|
||||
ACTION_FOCUS,
|
||||
ACTION_CYCLE,
|
||||
ACTION_CLOSE,
|
||||
ACTION_OTHER,
|
||||
ACTION_COMMAND,
|
||||
ACTION_FIND_OR_START,
|
||||
ACTION_MOVE_MONITOR,
|
||||
ACTION_FOCUS_MONITOR,
|
||||
ACTION_FULLSCREEN_TOGGLE,
|
||||
ACTION_ABOVE_TOGGLE,
|
||||
ACTION_SNAPSHOT,
|
||||
ACTION_ROLLBACK,
|
||||
ACTIONS
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
unsigned int mod;
|
||||
KeySym key;
|
||||
short act;
|
||||
void *data;
|
||||
int num;
|
||||
} binding;
|
||||
|
||||
typedef struct {
|
||||
short x, y, w, h;
|
||||
} box;
|
||||
@@ -152,6 +125,28 @@ typedef struct {
|
||||
Window windows[STACK];
|
||||
} stack;
|
||||
|
||||
typedef struct {
|
||||
unsigned int mod;
|
||||
KeySym key;
|
||||
void (*act)(void*, int, client*);
|
||||
void *data;
|
||||
int num;
|
||||
} binding;
|
||||
|
||||
void action_move(void*, int, client*);
|
||||
void action_focus(void*, int, client*);
|
||||
void action_close(void*, int, client*);
|
||||
void action_cycle(void*, int, client*);
|
||||
void action_other(void*, int, client*);
|
||||
void action_command(void*, int, client*);
|
||||
void action_find_or_start(void*, int, client*);
|
||||
void action_move_monitor(void*, int, client*);
|
||||
void action_focus_monitor(void*, int, client*);
|
||||
void action_fullscreen(void*, int, client*);
|
||||
void action_above(void*, int, client*);
|
||||
void action_snapshot(void*, int, client*);
|
||||
void action_rollback(void*, int, client*);
|
||||
|
||||
#include "config.h"
|
||||
|
||||
Display *display;
|
||||
@@ -749,24 +744,6 @@ void action_rollback(void *data, int num, client *cli)
|
||||
}
|
||||
}
|
||||
|
||||
// key actions
|
||||
void (*actions[ACTIONS])(void*, int, client*) = {
|
||||
[ACTION_NONE] = NULL,
|
||||
[ACTION_MOVE] = action_move,
|
||||
[ACTION_FOCUS] = action_focus,
|
||||
[ACTION_CYCLE] = action_cycle,
|
||||
[ACTION_CLOSE] = action_close,
|
||||
[ACTION_OTHER] = action_other,
|
||||
[ACTION_COMMAND] = action_command,
|
||||
[ACTION_FIND_OR_START] = action_find_or_start,
|
||||
[ACTION_MOVE_MONITOR] = action_move_monitor,
|
||||
[ACTION_FOCUS_MONITOR] = action_focus_monitor,
|
||||
[ACTION_FULLSCREEN_TOGGLE] = action_fullscreen,
|
||||
[ACTION_ABOVE_TOGGLE] = action_above,
|
||||
[ACTION_SNAPSHOT] = action_snapshot,
|
||||
[ACTION_ROLLBACK] = action_rollback,
|
||||
};
|
||||
|
||||
// ------- event handlers --------
|
||||
|
||||
void create_notify(XEvent *e)
|
||||
@@ -874,7 +851,7 @@ void key_press(XEvent *ev)
|
||||
if (bind && bind->act)
|
||||
{
|
||||
client *cli = window_build_client(current);
|
||||
actions[bind->act](bind->data, bind->num, cli);
|
||||
bind->act(bind->data, bind->num, cli);
|
||||
client_free(cli);
|
||||
}
|
||||
}
|
||||
@@ -1081,4 +1058,4 @@ int main(int argc, char *argv[])
|
||||
handlers[ev.type](&ev);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user