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
|
@interface OGKKeyReleaseEvent: OGKKeyboardEvent
|
||||||
@end
|
@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
|
@interface OGKMouseEvent: OGKEvent
|
||||||
@property (readonly, assign) of_point_t cursor;
|
@property (readonly, assign) of_point_t cursor;
|
||||||
@property (readonly, assign) of_point_t wheel;
|
@property (readonly, assign) of_point_t wheel;
|
||||||
|
|
|
@ -43,6 +43,26 @@
|
||||||
@implementation OGKKeyReleaseEvent
|
@implementation OGKKeyReleaseEvent
|
||||||
@end
|
@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
|
@implementation OGKMouseEvent
|
||||||
- (of_point_t)cursor
|
- (of_point_t)cursor
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
display: (OGKDisplay*)display;
|
display: (OGKDisplay*)display;
|
||||||
- (void)keyWasReleased: (OGKKeyReleaseEvent*)event
|
- (void)keyWasReleased: (OGKKeyReleaseEvent*)event
|
||||||
display: (OGKDisplay*)display;
|
display: (OGKDisplay*)display;
|
||||||
|
- (void)characterWasTyped: (OGKCharacterTypedEvent*)event
|
||||||
|
display: (OGKDisplay*)display;
|
||||||
- (void)mouseWasMoved: (OGKMouseMovedEvent*)event
|
- (void)mouseWasMoved: (OGKMouseMovedEvent*)event
|
||||||
display: (OGKDisplay*)display;
|
display: (OGKDisplay*)display;
|
||||||
- (void)mouseButtonWasPressed: (OGKMouseButtonPressedEvent*)event
|
- (void)mouseButtonWasPressed: (OGKMouseButtonPressedEvent*)event
|
||||||
|
|
|
@ -107,6 +107,22 @@ static int mouse_retain_count = 0;
|
||||||
display: display];
|
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;
|
break;
|
||||||
case ALLEGRO_EVENT_MOUSE_AXES:
|
case ALLEGRO_EVENT_MOUSE_AXES:
|
||||||
object_setClass(event, [OGKMouseMovedEvent class]);
|
object_setClass(event, [OGKMouseMovedEvent class]);
|
||||||
|
|
|
@ -37,6 +37,19 @@ OF_APPLICATION_DELEGATE(TestMain)
|
||||||
display: (OGKDisplay*)display
|
display: (OGKDisplay*)display
|
||||||
{
|
{
|
||||||
of_log(@"Pressed: %d", event.keycode);
|
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) {
|
switch (event.keycode) {
|
||||||
case OGK_KEY_R:
|
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
|
- (void)mouseWasMoved: (OGKMouseMovedEvent*)event
|
||||||
display: (OGKDisplay*)display
|
display: (OGKDisplay*)display
|
||||||
{
|
{
|
||||||
|
|
Reference in a new issue