remove unecessary jump table
This commit is contained in:
46
config.h
46
config.h
@@ -61,50 +61,50 @@
|
|||||||
binding keys[] = {
|
binding keys[] = {
|
||||||
|
|
||||||
// Focus the top-most window in a spot.
|
// Focus the top-most window in a spot.
|
||||||
{ .mod = Mod4Mask, .key = XK_Left, .act = ACTION_FOCUS, .num = SPOT1 },
|
{ .mod = Mod4Mask, .key = XK_Left, .act = action_focus, .num = SPOT1 },
|
||||||
{ .mod = Mod4Mask, .key = XK_Up, .act = ACTION_FOCUS, .num = SPOT2 },
|
{ .mod = Mod4Mask, .key = XK_Up, .act = action_focus, .num = SPOT2 },
|
||||||
{ .mod = Mod4Mask, .key = XK_Right, .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_Down, .act = action_focus, .num = SPOT3 },
|
||||||
|
|
||||||
// Move the current window to another spot.
|
// Move the current window to another spot.
|
||||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Left, .act = ACTION_MOVE, .num = SPOT1 },
|
{ .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_Up, .act = action_move, .num = SPOT2 },
|
||||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Right, .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_Down, .act = action_move, .num = SPOT3 },
|
||||||
|
|
||||||
// Flip between the top two windows in the current spot.
|
// 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.
|
// 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.
|
// 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.
|
// 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.
|
// 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.
|
// Switch focus between monitors.
|
||||||
{ .mod = Mod4Mask, .key = XK_Next, .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 },
|
{ .mod = Mod4Mask, .key = XK_Prior, .act = action_focus_monitor, .num = -1 },
|
||||||
|
|
||||||
// Move windows between monitors.
|
// Move windows between monitors.
|
||||||
{ .mod = ShiftMask|Mod4Mask, .key = XK_Next, .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 },
|
{ .mod = ShiftMask|Mod4Mask, .key = XK_Prior, .act = action_move_monitor, .num = -1 },
|
||||||
|
|
||||||
// Launcher
|
// 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
|
// Snapshot state
|
||||||
{ .mod = Mod4Mask, .key = XK_s, .act = ACTION_SNAPSHOT },
|
{ .mod = Mod4Mask, .key = XK_s, .act = action_snapshot },
|
||||||
{ .mod = Mod4Mask, .key = XK_r, .act = ACTION_ROLLBACK },
|
{ .mod = Mod4Mask, .key = XK_r, .act = action_rollback },
|
||||||
|
|
||||||
// Find or start apps by WM_CLASS (lower case match).
|
// 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...
|
// 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_F1, .act = action_find_or_start, .data = "urxvt" },
|
||||||
{ .mod = AnyModifier, .key = XK_F2, .act = ACTION_FIND_OR_START, .data = "chromium" },
|
{ .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_F3, .act = action_find_or_start, .data = "pcmanfm" },
|
||||||
};
|
};
|
||||||
69
xoat.c
69
xoat.c
@@ -52,7 +52,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
X(XOAT_SPOT),\
|
X(XOAT_SPOT),\
|
||||||
X(XOAT_EXIT),\
|
X(XOAT_EXIT),\
|
||||||
X(XOAT_RESTART),\
|
X(XOAT_RESTART),\
|
||||||
X(_MOTIF_WM_HINTS),\
|
|
||||||
X(_NET_SUPPORTED),\
|
X(_NET_SUPPORTED),\
|
||||||
X(_NET_ACTIVE_WINDOW),\
|
X(_NET_ACTIVE_WINDOW),\
|
||||||
X(_NET_CLOSE_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 { SPOT1=1, SPOT2, SPOT3, SPOT_CURRENT, SPOT_SMART, SPOT1_LEFT, SPOT1_RIGHT };
|
||||||
enum { FOCUS_IGNORE=1, FOCUS_STEAL, };
|
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 {
|
typedef struct {
|
||||||
short x, y, w, h;
|
short x, y, w, h;
|
||||||
} box;
|
} box;
|
||||||
@@ -152,6 +125,28 @@ typedef struct {
|
|||||||
Window windows[STACK];
|
Window windows[STACK];
|
||||||
} 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"
|
#include "config.h"
|
||||||
|
|
||||||
Display *display;
|
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 --------
|
// ------- event handlers --------
|
||||||
|
|
||||||
void create_notify(XEvent *e)
|
void create_notify(XEvent *e)
|
||||||
@@ -874,7 +851,7 @@ void key_press(XEvent *ev)
|
|||||||
if (bind && bind->act)
|
if (bind && bind->act)
|
||||||
{
|
{
|
||||||
client *cli = window_build_client(current);
|
client *cli = window_build_client(current);
|
||||||
actions[bind->act](bind->data, bind->num, cli);
|
bind->act(bind->data, bind->num, cli);
|
||||||
client_free(cli);
|
client_free(cli);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user