diff options
| -rw-r--r-- | src/client/chat.c | 12 | ||||
| -rw-r--r-- | src/widget/widget_textfield.c | 43 |
2 files changed, 49 insertions, 6 deletions
diff --git a/src/client/chat.c b/src/client/chat.c index 9d35519..ca98389 100644 --- a/src/client/chat.c +++ b/src/client/chat.c @@ -143,13 +143,21 @@ static void processMessageKey(SDL_keysym keysym) /* here would be much better to put 'strcat' as 'line' is expected * to be full of '0' up to its end */ - line[len] = keysym.sym; + char c = keysym.sym; + + /* TODO: should correspond with ASCII table */ + if (keysym.mod & KMOD_RSHIFT) + c --; + + line[len] = c; + return; } /* processing of letters */ if (keysym.sym >= SDLK_a && keysym.sym <= SDLK_z) { char c = keysym.sym; - if (keysym.mod == KMOD_SHIFT) { + + if (keysym.mod & KMOD_SHIFT) { c = toupper(c); } /* here would be much better to put 'strcat' as 'line' is expected diff --git a/src/widget/widget_textfield.c b/src/widget/widget_textfield.c index f292927..41428ff 100644 --- a/src/widget/widget_textfield.c +++ b/src/widget/widget_textfield.c @@ -181,7 +181,7 @@ static void checkText(widget_textfield_t * p) } -static void readKey(widget_textfield_t *p) +static void readKey (widget_textfield_t *p) { int len; int i; @@ -219,7 +219,7 @@ static void readKey(widget_textfield_t *p) char c = '\0'; - /* printf("name %s\n", name); */ + /* printf("name %s : %d\n", name, k.sym); */ switch (strlen (name)) { case 1: @@ -230,9 +230,9 @@ static void readKey(widget_textfield_t *p) break; } - if (!strcmp (name, "space")) + if (k.sym == SDLK_SPACE || k.sym == SDLK_TAB) c = ' '; - else if (!strcmp (name, "backspace") && len > 0 ) { + else if (k.sym == SDLK_BACKSPACE && len > 0 ) { p->text[len-1] = '\0'; checkText (p); break; @@ -259,6 +259,41 @@ static void readKey(widget_textfield_t *p) p->text[len] -= 32; } +/* + switch (k.sym) { + case SDLK_PLUS: + p->text[len] = '1'; + break; + case SDLK_WORLD_76: + p->text[len] = '2'; + break; + case SDLK_WORLD_25: + p->text[len] = '3'; + break; + case SDLK_WORLD_72: + p->text[len] = '4'; + break; + case SDLK_WORLD_88: + p->text[len] = '5'; + break; + case SDLK_WORLD_30: + p->text[len] = '6'; + break; + case SDLK_WORLD_93: + p->text[len] = '7'; + break; + case SDLK_WORLD_65: + p->text[len] = '8'; + break; + case SDLK_WORLD_77: + p->text[len] = '9'; + break; + case SDLK_WORLD_73: + p->text[len] = '0'; + break; + } +*/ + checkText (p); len ++; } |