diff options
| author | Jonas Kölker <jonaskoelker@yahoo.com> | 2015-10-01 18:41:15 +0200 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2015-10-03 17:12:20 +0100 |
| commit | 79fe68dc57d72d4765850eb9aec23675523a1a4d (patch) | |
| tree | 55d4c1710c2f87c70e1cdb7527783663c95eccef | |
| parent | 6179e8df56000bc8f558129a8475cf977c06a249 (diff) | |
| download | puzzles-79fe68dc57d72d4765850eb9aec23675523a1a4d.zip puzzles-79fe68dc57d72d4765850eb9aec23675523a1a4d.tar.gz puzzles-79fe68dc57d72d4765850eb9aec23675523a1a4d.tar.bz2 puzzles-79fe68dc57d72d4765850eb9aec23675523a1a4d.tar.xz | |
Towers: allow marking of clues as done with the keyboard
| -rw-r--r-- | puzzles.but | 3 | ||||
| -rw-r--r-- | towers.c | 15 |
2 files changed, 17 insertions, 1 deletions
diff --git a/puzzles.but b/puzzles.but index 2c8f91b..113f462 100644 --- a/puzzles.but +++ b/puzzles.but @@ -2652,7 +2652,8 @@ Pressing M will fill in a full set of pencil marks in every square that does not have a main digit in it. Left-clicking a clue will mark it as done (grey it out), or unmark it -if it is already marked. +if it is already marked. Holding Control or Shift and pressing an +arrow key likewise marks any clue in the given direction. (All the actions described in \k{common-actions} are also available.) @@ -1292,6 +1292,7 @@ static char *interpret_move(const game_state *state, game_ui *ui, int x, int y, int button) { int w = state->par.w; + int shift_or_control = button & (MOD_SHFT | MOD_CTRL); int tx, ty; char buf[80]; @@ -1376,6 +1377,20 @@ static char *interpret_move(const game_state *state, game_ui *ui, } } if (IS_CURSOR_MOVE(button)) { + if (shift_or_control) { + int x = ui->hx, y = ui->hy; + switch (button) { + case CURSOR_LEFT: x = -1; break; + case CURSOR_RIGHT: x = w; break; + case CURSOR_UP: y = -1; break; + case CURSOR_DOWN: y = w; break; + } + if (is_clue(state, x, y)) { + sprintf(buf, "%c%d,%d", 'D', x, y); + return dupstr(buf); + } + return NULL; + } move_cursor(button, &ui->hx, &ui->hy, w, w, 0); ui->hshow = ui->hcursor = 1; return ""; |