Add OGKCharacterTypedEvent.
This commit is contained in:
parent
a98c97edb2
commit
0dca20000d
5 changed files with 57 additions and 6 deletions
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Reference in a new issue