1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-03-16 03:53:01 -05:00

David Damerell tells me I should be using Ctrl-hjklyubn rather than

Shift-hjklyubn for batch movement in NetHack, because they have
subtly different behaviour within the game and the Ctrl-moves are
more useful. Unfortunately, PuTTY's NetHack keypad mode doesn't
support Ctrl-moves. Therefore, it does now :-)

[originally from svn r6593]
This commit is contained in:
Simon Tatham 2006-03-08 18:10:12 +00:00
parent 0b673fd02d
commit 3f6dfdaa61
2 changed files with 20 additions and 18 deletions

View File

@ -729,19 +729,21 @@ gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
if (inst->cfg.nethack_keypad) { if (inst->cfg.nethack_keypad) {
char *keys = NULL; char *keys = NULL;
switch (event->keyval) { switch (event->keyval) {
case GDK_KP_1: case GDK_KP_End: keys = "bB"; break; case GDK_KP_1: case GDK_KP_End: keys = "bB\002"; break;
case GDK_KP_2: case GDK_KP_Down: keys = "jJ"; break; case GDK_KP_2: case GDK_KP_Down: keys = "jJ\012"; break;
case GDK_KP_3: case GDK_KP_Page_Down: keys = "nN"; break; case GDK_KP_3: case GDK_KP_Page_Down: keys = "nN\016"; break;
case GDK_KP_4: case GDK_KP_Left: keys = "hH"; break; case GDK_KP_4: case GDK_KP_Left: keys = "hH\010"; break;
case GDK_KP_5: case GDK_KP_Begin: keys = ".."; break; case GDK_KP_5: case GDK_KP_Begin: keys = "..."; break;
case GDK_KP_6: case GDK_KP_Right: keys = "lL"; break; case GDK_KP_6: case GDK_KP_Right: keys = "lL\014"; break;
case GDK_KP_7: case GDK_KP_Home: keys = "yY"; break; case GDK_KP_7: case GDK_KP_Home: keys = "yY\031"; break;
case GDK_KP_8: case GDK_KP_Up: keys = "kK"; break; case GDK_KP_8: case GDK_KP_Up: keys = "kK\013"; break;
case GDK_KP_9: case GDK_KP_Page_Up: keys = "uU"; break; case GDK_KP_9: case GDK_KP_Page_Up: keys = "uU\025"; break;
} }
if (keys) { if (keys) {
end = 2; end = 2;
if (event->state & GDK_SHIFT_MASK) if (event->state & GDK_CONTROL_MASK)
output[1] = keys[2];
else if (event->state & GDK_SHIFT_MASK)
output[1] = keys[1]; output[1] = keys[1];
else else
output[1] = keys[0]; output[1] = keys[0];

View File

@ -3723,31 +3723,31 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
if (cfg.nethack_keypad && !left_alt) { if (cfg.nethack_keypad && !left_alt) {
switch (wParam) { switch (wParam) {
case VK_NUMPAD1: case VK_NUMPAD1:
*p++ = shift_state ? 'B' : 'b'; *p++ = "bB\002\002"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD2: case VK_NUMPAD2:
*p++ = shift_state ? 'J' : 'j'; *p++ = "jJ\012\012"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD3: case VK_NUMPAD3:
*p++ = shift_state ? 'N' : 'n'; *p++ = "nN\016\016"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD4: case VK_NUMPAD4:
*p++ = shift_state ? 'H' : 'h'; *p++ = "hH\010\010"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD5: case VK_NUMPAD5:
*p++ = shift_state ? '.' : '.'; *p++ = shift_state ? '.' : '.';
return p - output; return p - output;
case VK_NUMPAD6: case VK_NUMPAD6:
*p++ = shift_state ? 'L' : 'l'; *p++ = "lL\014\014"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD7: case VK_NUMPAD7:
*p++ = shift_state ? 'Y' : 'y'; *p++ = "yY\031\031"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD8: case VK_NUMPAD8:
*p++ = shift_state ? 'K' : 'k'; *p++ = "kK\013\013"[shift_state & 3];
return p - output; return p - output;
case VK_NUMPAD9: case VK_NUMPAD9:
*p++ = shift_state ? 'U' : 'u'; *p++ = "uU\025\025"[shift_state & 3];
return p - output; return p - output;
} }
} }