Skip to content

Commit

Permalink
Add key labels for colemak layout homerow (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
afreakk authored and cornerman committed Apr 29, 2019
1 parent fffb468 commit 77441e8
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 4 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ Usage: i3-easyfocus <options>
- <location> based on their location (default)
- <num> using the workspaces' numbers
-f --font <font-name> set font name, see `xlsfonts` for available fonts
-k --keys <mode> set the labeling keys to use, avy or alpha
- <avy> prefers home row (default)
-k --keys <mode> set the labeling keys to use:
- <avy> prefers home row for qwerty (default)
- <colemak> prefers home row for colemak
- <alpha> orders alphabetically
--color-urgent-bg <rgb> set label background color of urgent windows, e.g., FF00FF
--color-focused-bg <rgb> set label background color of focused windows, e.g., FF00FF
Expand Down
1 change: 1 addition & 0 deletions src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#define EXIT_KEYSYM XK_Escape
#define LABEL_KEYSYMS_AVY { XK_a, XK_s, XK_d, XK_f, XK_g, XK_h, XK_j, XK_k, XK_l, XK_q, XK_w, XK_e, XK_r, XK_t, XK_y, XK_u, XK_i, XK_o, XK_p, XK_z, XK_x, XK_c, XK_v, XK_b, XK_n, XK_m, XK_1, XK_2, XK_3, XK_4, XK_5, XK_6, XK_7, XK_8, XK_9, XK_0 }
#define LABEL_KEYSYMS_COLEMAK { XK_a, XK_r, XK_s, XK_t, XK_d, XK_h, XK_n, XK_e, XK_i, XK_o, XK_q, XK_w, XK_f, XK_p, XK_g, XK_j, XK_l, XK_u, XK_y, XK_z, XK_x, XK_c, XK_v, XK_b, XK_n, XK_m, XK_1, XK_2, XK_3, XK_4, XK_5, XK_6, XK_7, XK_8, XK_9, XK_0 }
#define LABEL_KEYSYMS_ALPHA { XK_a, XK_b, XK_c, XK_d, XK_e, XK_f, XK_g, XK_h, XK_i, XK_j, XK_k, XK_l, XK_m, XK_n, XK_o, XK_p, XK_q, XK_r, XK_s, XK_t, XK_u, XK_v, XK_w, XK_x, XK_y, XK_z, XK_1, XK_2, XK_3, XK_4, XK_5, XK_6, XK_7, XK_8, XK_9, XK_0 }

#define XCB_DEFAULT_FONT_NAME "-Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1"
Expand Down
9 changes: 7 additions & 2 deletions src/i3-easyfocus.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ static void print_help(void)
fprintf(stderr, " - <location> based on their location (default)\n");
fprintf(stderr, " - <num> using the workspaces' numbers\n");
fprintf(stderr, " -f --font <font-name> set font name, see `xlsfonts` for available fonts\n");
fprintf(stderr, " -k --keys <mode> set the labeling keys to use, avy or alpha\n");
fprintf(stderr, " - <avy> prefers home row (default)\n");
fprintf(stderr, " -k --keys <mode> set the labeling keys to use:\n");
fprintf(stderr, " - <avy> prefers home row for qwerty (default)\n");
fprintf(stderr, " - <colemak> prefers home row for colemak\n");
fprintf(stderr, " - <alpha> orders alphabetically\n");
fprintf(stderr, " --color-urgent-bg <rgb> set label background color of urgent windows, e.g., FF00FF\n");
fprintf(stderr, " --color-focused-bg <rgb> set label background color of focused windows, e.g., FF00FF\n");
Expand Down Expand Up @@ -111,6 +112,10 @@ static void parse_args(int argc, char *argv[])
{
key_mode = LABEL_KEY_MODE_ALPHA;
}
else if (strcmp(optarg, "colemak") == 0)
{
key_mode = LABEL_KEY_MODE_COLEMAK;
}
else
{
fprintf(stderr, "unrecognized key style type: %s\n", optarg);
Expand Down
7 changes: 7 additions & 0 deletions src/map.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
#define LENGTH_AVY (sizeof(label_avy_keysyms) / sizeof(label_avy_keysyms[0]))
static xcb_keysym_t label_avy_keysyms[] = LABEL_KEYSYMS_AVY;

#define LENGTH_COLEMAK (sizeof(label_colemak_keysyms) / sizeof(label_colemak_keysyms[0]))
static xcb_keysym_t label_colemak_keysyms[] = LABEL_KEYSYMS_COLEMAK;

#define LENGTH_ALPHA (sizeof(label_alpha_keysyms) / sizeof(label_alpha_keysyms[0]))
static xcb_keysym_t label_alpha_keysyms[] = LABEL_KEYSYMS_ALPHA;

Expand All @@ -32,6 +35,10 @@ void map_init(label_key_mode_e mode)
label_keysyms = label_alpha_keysyms;
map_length = LENGTH_ALPHA;
break;
case LABEL_KEY_MODE_COLEMAK:
label_keysyms = label_colemak_keysyms;
map_length = LENGTH_COLEMAK;
break;
}
win_map = calloc(map_length, sizeof(Window*));
}
Expand Down
1 change: 1 addition & 0 deletions src/map.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ typedef enum
{
LABEL_KEY_MODE_AVY,
LABEL_KEY_MODE_ALPHA,
LABEL_KEY_MODE_COLEMAK,

LABEL_KEY_MODE_DEFAULT = LABEL_KEY_MODE_AVY,
} label_key_mode_e;
Expand Down

0 comments on commit 77441e8

Please sign in to comment.