[AD] [ alleg-Bugs-3194187 ] [OS X] ALLEGRO_EVENT_KEY_CHAR not always generated |
[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
- To: noreply@xxxxxxxxxx
- Subject: [AD] [ alleg-Bugs-3194187 ] [OS X] ALLEGRO_EVENT_KEY_CHAR not always generated
- From: "SourceForge.net" <noreply@xxxxxxxxxx>
- Date: Sun, 27 Feb 2011 16:01:12 +0000
Bugs item #3194187, was opened at 2011-02-27 15:47
Message generated for change (Comment added) made by elias
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105665&aid=3194187&group_id=5665
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Mac OSX
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Evert Glebbeek (eglebbk)
Assigned to: Peter Hull (peterhull90)
Summary: [OS X] ALLEGRO_EVENT_KEY_CHAR not always generated
Initial Comment:
When pressing a key with a non-printable character (eg, an arrow key), I don't get KEY_CHAR events, only KEY_DOWN and KEY_UP events. This is fine if the intention for the KEY_CHAR event is to enter text, but from the description in the manual it appears that it should work for non-printable characters as well.
I'm actually fine with the current behaviour (text input and key presses for controling a game are two distinct operations, after all), but I suspect it's not the intended behaviour and not consistent across platforms.
The relevant piece of code in src/macosx/keybd.m is
ALLEGRO_EVENT event;
event.keyboard.type = ALLEGRO_EVENT_KEY_DOWN;
event.keyboard.timestamp = al_get_time();
event.keyboard.display = dpy;
event.keyboard.keycode = scancode;
event.keyboard.unichar = 0;
event.keyboard.modifiers = 0;
event.keyboard.repeat = false;
if (!is_repeat) {
_al_event_source_emit_event(&keyboard.es, &event);
}
if (unicode > 0)
{
event.keyboard.type = ALLEGRO_EVENT_KEY_CHAR;
event.keyboard.unichar = unicode;
event.keyboard.modifiers = modifiers;
event.keyboard.repeat = is_repeat;
_al_event_source_emit_event(&keyboard.es, &event);
}
----------------------------------------------------------------------
>Comment By: Elias Pschernig (elias)
Date: 2011-02-27 16:01
Message:
This is a bug. Arrow keys of course need to generate KEY_CHAR events (how
can you ever make a text entry box otherwise?) and they do so both in Linux
and Windows as intended. What should happen for a cursor key press is:
KEY_DOWN, KEY_CHAR, KEY_CHAR (repeat), ..., KEY_UP
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105665&aid=3194187&group_id=5665