git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7059 c06c8d41-db1a-0410-9941-cceddc491573
BQUEDF6MDX6NSTRDH7RMXZ3PTJU2BIUJGA3YGO5EB4DVVGF73KKAC
offset = ctrl_offset;
else if (keysym.mod & KMOD_SHIFT)
offset = shift_offset;
mod |= MOD_CTRL;
if (keysym.mod & KMOD_ALT)
mod |= MOD_ALT;
// This is arbitrary, but here's the current mappings.
// 0-256: ASCII, Crawl arrow keys
// 0-1k : Other SDL keys (F1, Windows keys, etc...) and modifiers
// 1k-3k: Non-ASCII with modifiers other than just shift or just ctrl.
// 3k+ : ASCII with the alt modifier.
// Match what curses returns.
enum function_keys
{
F1 = 265,
F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15
};
int offset = mod ? 1000 + 256 * mod : 0;
int numpad_offset = 0;
if (mod == MOD_CTRL)
numpad_offset = ctrl_offset;
else if (mod == KMOD_SHIFT)
numpad_offset = shift_offset;
else
numpad_offset = offset;
return F15;
case SDLK_NUMLOCK:
case SDLK_CAPSLOCK:
case SDLK_SCROLLOCK:
case SDLK_RMETA:
case SDLK_LMETA:
case SDLK_LSUPER:
case SDLK_RSUPER:
case SDLK_MODE:
case SDLK_COMPOSE:
case SDLK_HELP:
case SDLK_PRINT:
case SDLK_SYSREQ:
case SDLK_BREAK:
case SDLK_MENU:
case SDLK_POWER:
case SDLK_EURO:
case SDLK_UNDO:
ASSERT(keysym.sym >= SDLK_F1 && keysym.sym <= SDLK_UNDO);
return keysym.sym + (SDLK_UNDO - SDLK_F1 + 1) * mod;