[ioquake3] 11/34: Improve keys using international key layouts
Simon McVittie
smcv at debian.org
Fri Sep 8 10:33:20 UTC 2017
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to annotated tag debian/1.36+u20170908+dfsg1-1
in repository ioquake3.
commit 34d0b7875421ccb3b90251105ff5bf6c301b300a
Author: Zack Middleton <zack at cloemail.com>
Date: Mon Aug 21 20:20:19 2017 -0500
Improve keys using international key layouts
Always map number row to number keys for AZERTY.
Map Unicode character keys to world keys using scan code.
Based on patches by @mickael9.
---
code/sdl/sdl_input.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/code/sdl/sdl_input.c b/code/sdl/sdl_input.c
index 4c8ff1f..9d45a57 100644
--- a/code/sdl/sdl_input.c
+++ b/code/sdl/sdl_input.c
@@ -192,7 +192,18 @@ static keyNum_t IN_TranslateSDLToQ3Key( SDL_Keysym *keysym, qboolean down )
{
keyNum_t key = 0;
- if( keysym->sym >= SDLK_SPACE && keysym->sym < SDLK_DELETE )
+ if( keysym->scancode >= SDL_SCANCODE_1 && keysym->scancode <= SDL_SCANCODE_0 )
+ {
+ // Always map the number keys as such even if they actually map
+ // to other characters (eg, "1" is "&" on an AZERTY keyboard).
+ // This is required for SDL before 2.0.6, except on Windows
+ // which already had this behavior.
+ if( keysym->scancode == SDL_SCANCODE_0 )
+ key = '0';
+ else
+ key = '1' + keysym->scancode - SDL_SCANCODE_1;
+ }
+ else if( keysym->sym >= SDLK_SPACE && keysym->sym < SDLK_DELETE )
{
// These happen to match the ASCII chars
key = (int)keysym->sym;
@@ -280,6 +291,15 @@ static keyNum_t IN_TranslateSDLToQ3Key( SDL_Keysym *keysym, qboolean down )
case SDLK_CAPSLOCK: key = K_CAPSLOCK; break;
default:
+ if( !( keysym->sym & SDLK_SCANCODE_MASK ) && keysym->scancode <= 95 )
+ {
+ // Map Unicode characters to 95 world keys using the key's scan code.
+ // FIXME: There aren't enough world keys to cover all the scancodes.
+ // Maybe create a map of scancode to quake key at start up and on
+ // key map change; allocate world key numbers as needed similar
+ // to SDL 1.2.
+ key = K_WORLD_0 + (int)keysym->scancode;
+ }
break;
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git
More information about the Pkg-games-commits
mailing list