Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-07-22 17:21:35 +0000
committerStijn Buys <ingar@osirion.org>2008-07-22 17:21:35 +0000
commit9adc3720cd8fe2ba843d014dbbfe81bf936f9715 (patch)
treeb6610b334a33ede55068f1daa1b869c251548c6f /src/client/keyboard.cc
parentbb8b4e081d33f4f1aca6ba23a78842e1fc9cd721 (diff)
more keyboard handling cleanups
Diffstat (limited to 'src/client/keyboard.cc')
-rw-r--r--src/client/keyboard.cc66
1 files changed, 32 insertions, 34 deletions
diff --git a/src/client/keyboard.cc b/src/client/keyboard.cc
index da93814..410e76c 100644
--- a/src/client/keyboard.cc
+++ b/src/client/keyboard.cc
@@ -429,17 +429,16 @@ void setkeyboardmode(bool input)
*/
}
-unsigned int translate_keysym(const SDL_keysym &keysym)
+unsigned int translate_keysym(int keysym, int modifier)
{
- int key = keysym.sym;
bool shift = false;
bool numlock = false;
// keypad keys
- if (keysym.mod & KMOD_NUM) {
+ if (modifier & KMOD_NUM) {
numlock = true;
- switch (key) {
+ switch (keysym) {
case SDLK_KP0:
return '0';
break;
@@ -475,7 +474,7 @@ unsigned int translate_keysym(const SDL_keysym &keysym)
break;
}
} else {
- switch (key) {
+ switch (keysym) {
case SDLK_KP0:
return SDLK_INSERT;
break;
@@ -510,7 +509,7 @@ unsigned int translate_keysym(const SDL_keysym &keysym)
}
// special keys
- switch (key) {
+ switch (keysym) {
case SDLK_ESCAPE:
return SDLK_ESCAPE;
break;
@@ -535,91 +534,90 @@ unsigned int translate_keysym(const SDL_keysym &keysym)
}
// caps lock
- if (keysym.mod & KMOD_CAPS)
+ if (modifier & KMOD_CAPS)
shift = true;
// left/right shift
- if ((keysym.mod & KMOD_LSHIFT) || (keysym.mod & KMOD_RSHIFT)) {
+ if ((KMOD_LSHIFT + KMOD_RSHIFT) & modifier) {
shift = !shift;
}
if (shift) {
- if ((key >= 'a' && key <= 'z')) {
- key = key + 'A' - 'a';
- return key;
+ if ((keysym >= 'a' && keysym <= 'z')) {
+ return keysym + 'A' - 'a';
}
- switch (key) {
+ switch (keysym) {
case '`':
- key = '~';
+ return '~';
break;
case '1':
- key = '!';
+ return '!';
break;
case '2':
- key = '@';
+ return '@';
break;
case '3':
- key = '#';
+ return '#';
break;
case '4':
- key = '$';
+ return '$';
break;
case '5':
- key = '%';
+ return '%';
break;
case '6':
- key = '^';
+ return '^';
break;
case '7':
- key = '&';
+ return '&';
break;
case '8':
- key = '*';
+ return '*';
break;
case '9':
- key = '(';
+ return '(';
break;
case '0':
- key = ')';
+ return ')';
break;
case '-':
- key = '_';
+ return '_';
break;
case '=':
- key = '+';
+ return '+';
break;
// second row
case '[':
- key = '{';
+ return '{';
break;
case ']':
- key = '}';
+ return '}';
break;
case '|':
- key = '\\';
+ return '\\';
break;
// third row
case ';':
- key = ':';
+ return ':';
break;
case '\'':
- key = '"';
+ return '"';
break;
// fourth row
case ',':
- key = '<';
+ return '<';
break;
case '.':
- key = '>';
+ return '>';
break;
case '/':
- key = '?';
+ return '?';
break;
}
}
- return key;
+ return keysym;
}
} // namespace client