mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-22 00:15:46 -07:00
I've had two complaints that Solo ought to recognise the numeric
keypad. The reason it doesn't is because front ends were carefully translating the numeric keypad into 8-way directional keys for the benefit of Cube. Therefore, a policy change: - front ends process the numeric keypad by sending MOD_NUM_KEYPAD | '3' and similar - front ends running on a platform with Num Lock SHOULD do this _irrespective_ of the state of Num Lock - back ends do whatever they see fit with numeric keypad keys. Result: the numeric keypad now works in Solo, and also works in OS X Cube (which it previously didn't because I forgot to implement that bit of the front end!). [originally from svn r5774]
This commit is contained in:
18
cube.c
18
cube.c
@ -1017,23 +1017,23 @@ static game_state *make_move(game_state *from, game_ui *ui,
|
||||
struct solid *poly;
|
||||
|
||||
/*
|
||||
* All moves are made with the cursor keys.
|
||||
* All moves are made with the cursor keys or numeric keypad.
|
||||
*/
|
||||
if (button == CURSOR_UP)
|
||||
if (button == CURSOR_UP || button == (MOD_NUM_KEYPAD | '8'))
|
||||
direction = UP;
|
||||
else if (button == CURSOR_DOWN)
|
||||
else if (button == CURSOR_DOWN || button == (MOD_NUM_KEYPAD | '2'))
|
||||
direction = DOWN;
|
||||
else if (button == CURSOR_LEFT)
|
||||
else if (button == CURSOR_LEFT || button == (MOD_NUM_KEYPAD | '4'))
|
||||
direction = LEFT;
|
||||
else if (button == CURSOR_RIGHT)
|
||||
else if (button == CURSOR_RIGHT || button == (MOD_NUM_KEYPAD | '6'))
|
||||
direction = RIGHT;
|
||||
else if (button == CURSOR_UP_LEFT)
|
||||
else if (button == (MOD_NUM_KEYPAD | '7'))
|
||||
direction = UP_LEFT;
|
||||
else if (button == CURSOR_DOWN_LEFT)
|
||||
else if (button == (MOD_NUM_KEYPAD | '1'))
|
||||
direction = DOWN_LEFT;
|
||||
else if (button == CURSOR_UP_RIGHT)
|
||||
else if (button == (MOD_NUM_KEYPAD | '9'))
|
||||
direction = UP_RIGHT;
|
||||
else if (button == CURSOR_DOWN_RIGHT)
|
||||
else if (button == (MOD_NUM_KEYPAD | '3'))
|
||||
direction = DOWN_RIGHT;
|
||||
else
|
||||
return NULL;
|
||||
|
Reference in New Issue
Block a user