Add OGKCharacterTypedEvent.

This commit is contained in:
Jonathan Schleifer 2012-08-28 21:58:49 +02:00
parent a98c97edb2
commit 0dca20000d
5 changed files with 57 additions and 6 deletions

View file

@ -45,6 +45,12 @@
@interface OGKKeyReleaseEvent: OGKKeyboardEvent
@end
@interface OGKCharacterTypedEvent: OGKKeyboardEvent
@property (readonly, assign) of_unichar_t character;
@property (readonly, assign) unsigned modifiers;
@property (readonly, assign) BOOL repeated;
@end
@interface OGKMouseEvent: OGKEvent
@property (readonly, assign) of_point_t cursor;
@property (readonly, assign) of_point_t wheel;

View file

@ -43,6 +43,26 @@
@implementation OGKKeyReleaseEvent
@end
@implementation OGKCharacterTypedEvent
- (of_unichar_t)character
{
if (event.keyboard.unichar < 1)
return 0xFFFD;
return event.keyboard.unichar;
}
- (unsigned)modifiers
{
return event.keyboard.modifiers;
}
- (BOOL)repeated
{
return event.keyboard.repeat;
}
@end
@implementation OGKMouseEvent
- (of_point_t)cursor
{

View file

@ -33,6 +33,8 @@
display: (OGKDisplay*)display;
- (void)keyWasReleased: (OGKKeyReleaseEvent*)event
display: (OGKDisplay*)display;
- (void)characterWasTyped: (OGKCharacterTypedEvent*)event
display: (OGKDisplay*)display;
- (void)mouseWasMoved: (OGKMouseMovedEvent*)event
display: (OGKDisplay*)display;
- (void)mouseButtonWasPressed: (OGKMouseButtonPressedEvent*)event

View file

@ -107,6 +107,22 @@ static int mouse_retain_count = 0;
display: display];
}
break;
case ALLEGRO_EVENT_KEY_CHAR:
object_setClass(event, [OGKCharacterTypedEvent class]);
if ([delegate respondsToSelector:
@selector(characterWasTyped:display:)]) {
OGKDisplay *display = [OGKDisplay
OGK_displayForAllegroDisplay:
allegroEvent->keyboard.display];
OGKCharacterTypedEvent *characterTypedEvent =
(OGKCharacterTypedEvent*)event;
[delegate characterWasTyped: characterTypedEvent
display: display];
}
break;
case ALLEGRO_EVENT_MOUSE_AXES:
object_setClass(event, [OGKMouseMovedEvent class]);

View file

@ -37,6 +37,19 @@ OF_APPLICATION_DELEGATE(TestMain)
display: (OGKDisplay*)display
{
of_log(@"Pressed: %d", event.keycode);
}
- (void)keyWasReleased: (OGKKeyReleaseEvent*)event
display: (OGKDisplay*)display
{
of_log(@"Released: %d", event.keycode);
}
- (void)characterWasTyped: (OGKCharacterTypedEvent*)event
display: (OGKDisplay*)display
{
of_log(@"Character typed: %u (keycode=%d, modifiers=%d, repeated=%d)",
event.character, event.keycode, event.modifiers, event.repeated);
switch (event.keycode) {
case OGK_KEY_R:
@ -63,12 +76,6 @@ OF_APPLICATION_DELEGATE(TestMain)
}
}
- (void)keyWasReleased: (OGKKeyReleaseEvent*)event
display: (OGKDisplay*)display
{
of_log(@"Released: %d", event.keycode);
}
- (void)mouseWasMoved: (OGKMouseMovedEvent*)event
display: (OGKDisplay*)display
{