Re: [AD] key scan codes have changed? |
[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
- To: alleg-developers@xxxxxxxxxx
- Subject: Re: [AD] key scan codes have changed?
- From: Elias Pschernig <allefant@xxxxxxxxxx>
- Date: Mon, 25 Apr 2005 15:36:44 +0200
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:in-reply-to:mime-version:content-type:references; b=dAP9zKH5UjfWgMvGFcZ0px+ncJhpBnSMdBYkSREggEHkVAJgJ4qBZWcYO/prs2Xnvcr698A+OBtZWaV87VmrUW+x0UQIpCjtTyJQGWczl5bQvUQA+S4bq/Yl9gxWHRo0kjbJGPLhNk9mJvw7yWvn3R5vbW5irWvoaDrl+IDlyQk=
Hm, posting this from windows with gmail.. and of course, my reply I
sent this morning isn't here (which is really odd, since the archiv on
SF has it..)
Anyway, the attached patch should make Alt+key always return 0 as
ascii code for readkey().
Index: src/win/wkeybd.c
===================================================================
RCS file: /cvsroot/alleg/allegro/src/win/wkeybd.c,v
retrieving revision 1.32
diff -u -p -r1.32 wkeybd.c
--- src/win/wkeybd.c 8 Apr 2005 16:08:04 -0000 1.32
+++ src/win/wkeybd.c 25 Apr 2005 13:33:50 -0000
@@ -256,23 +256,29 @@ static void handle_key_press(unsigned ch
vkey = VK_RETURN;
}
- /* TODO: is there an advantage using this? maybe it would allow chinese and so on
- * characters? For now, always ToAscii is used. */
- //n = ToUnicode(vkey, scancode, keystate, chars, 16, 0);
- n = ToAscii(vkey, scancode, keystate, (WORD *)chars, 0);
- if (n == 1)
- {
- WCHAR wstr[2];
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPCSTR)chars, n, wstr, 2);
- unicode = wstr[0];
+ /* When alt key is pressed, any key always must return ASCII 0 in Allegro. */
+ if (keystate[VK_LMENU] & 0x80) {
+ unicode = 0;
}
- else
- {
- /* Don't generate key presses for modifier keys. */
- if (mycode >= KEY_MODIFIERS || n != 0)
- unicode = -1;
+ else {
+ /* TODO: is there an advantage using ToUnicode? maybe it would allow
+ * Chinese and so on characters? For now, always ToAscii is used. */
+ //n = ToUnicode(vkey, scancode, keystate, chars, 16, 0);
+ n = ToAscii(vkey, scancode, keystate, (WORD *)chars, 0);
+ if (n == 1)
+ {
+ WCHAR wstr[2];
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPCSTR)chars, n, wstr, 2);
+ unicode = wstr[0];
+ }
else
- unicode = 0;
+ {
+ /* Don't generate key presses for modifier keys or dead keys */
+ if (mycode >= KEY_MODIFIERS || n != 0)
+ unicode = -1;
+ else
+ unicode = 0;
+ }
}
_handle_key_press(unicode, mycode);