mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
(Apple) Rewrite apple_input_keyboard_event - already transform the
modifier events before calling the function
This commit is contained in:
parent
41d7d3e47b
commit
6f951a9ac1
@ -61,10 +61,15 @@ void apple_rarch_exited(void)
|
|||||||
if (ch && ch.length != 0)
|
if (ch && ch.length != 0)
|
||||||
{
|
{
|
||||||
character = [ch characterAtIndex:0];
|
character = [ch characterAtIndex:0];
|
||||||
mod = event.modifierFlags;
|
mod |= (event.modifierFlags & NSAlphaShiftKeyMask) ? RETROKMOD_CAPSLOCK : 0;
|
||||||
|
mod |= (event.modifierFlags & NSShiftKeyMask ) ? RETROKMOD_SHIFT : 0;
|
||||||
|
mod |= (event.modifierFlags & NSControlKeyMask ) ? RETROKMOD_CTRL : 0;
|
||||||
|
mod |= (event.modifierFlags & NSAlternateKeyMask ) ? RETROKMOD_ALT : 0;
|
||||||
|
mod |= (event.modifierFlags & NSCommandKeyMask ) ? RETROKMOD_META : 0;
|
||||||
|
mod |= (event.modifierFlags & NSNumericPadKeyMask) ? RETROKMOD_NUMLOCK : 0;
|
||||||
|
|
||||||
for (NSUInteger i = 1; i < ch.length; i ++)
|
for (NSUInteger i = 1; i < ch.length; i ++)
|
||||||
apple_input_keyboard_event(event_type == NSKeyDown, 0, [ch characterAtIndex:i], event.modifierFlags);
|
apple_input_keyboard_event(event_type == NSKeyDown, 0, [ch characterAtIndex:i], mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
apple_input_keyboard_event(event_type == NSKeyDown, event.keyCode, character, mod);
|
apple_input_keyboard_event(event_type == NSKeyDown, event.keyCode, character, mod);
|
||||||
|
@ -126,7 +126,23 @@ static void handle_touch_event(NSArray* touches)
|
|||||||
|
|
||||||
@implementation RApplication
|
@implementation RApplication
|
||||||
|
|
||||||
// Keyboard handler for iOS 7
|
/* Keyboard handler for iOS 7. */
|
||||||
|
|
||||||
|
/* This is copied here as it isn't
|
||||||
|
* defined in any standard iOS header */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NSAlphaShiftKeyMask = 1 << 16,
|
||||||
|
NSShiftKeyMask = 1 << 17,
|
||||||
|
NSControlKeyMask = 1 << 18,
|
||||||
|
NSAlternateKeyMask = 1 << 19,
|
||||||
|
NSCommandKeyMask = 1 << 20,
|
||||||
|
NSNumericPadKeyMask = 1 << 21,
|
||||||
|
NSHelpKeyMask = 1 << 22,
|
||||||
|
NSFunctionKeyMask = 1 << 23,
|
||||||
|
NSDeviceIndependentModifierFlagsMask = 0xffff0000U
|
||||||
|
};
|
||||||
|
|
||||||
- (id)_keyCommandForEvent:(UIEvent*)event
|
- (id)_keyCommandForEvent:(UIEvent*)event
|
||||||
{
|
{
|
||||||
NSUInteger i;
|
NSUInteger i;
|
||||||
@ -143,17 +159,25 @@ static void handle_touch_event(NSArray* touches)
|
|||||||
{
|
{
|
||||||
NSString* ch = (NSString*)event._privateInput;
|
NSString* ch = (NSString*)event._privateInput;
|
||||||
uint32_t character = 0;
|
uint32_t character = 0;
|
||||||
|
uint32_t mod = 0;
|
||||||
|
|
||||||
|
mod |= (event._modifierFlags & NSAlphaShiftKeyMask) ? RETROKMOD_CAPSLOCK : 0;
|
||||||
|
mod |= (event._modifierFlags & NSShiftKeyMask ) ? RETROKMOD_SHIFT : 0;
|
||||||
|
mod |= (event._modifierFlags & NSControlKeyMask ) ? RETROKMOD_CTRL : 0;
|
||||||
|
mod |= (event._modifierFlags & NSAlternateKeyMask ) ? RETROKMOD_ALT : 0;
|
||||||
|
mod |= (event._modifierFlags & NSCommandKeyMask ) ? RETROKMOD_META : 0;
|
||||||
|
mod |= (event._modifierFlags & NSNumericPadKeyMask) ? RETROKMOD_NUMLOCK : 0;
|
||||||
|
|
||||||
if (ch && ch.length != 0)
|
if (ch && ch.length != 0)
|
||||||
{
|
{
|
||||||
character = [ch characterAtIndex:0];
|
character = [ch characterAtIndex:0];
|
||||||
apple_input_keyboard_event(event._isKeyDown, (uint32_t)event._keyCode, 0, (uint32_t)event._modifierFlags);
|
apple_input_keyboard_event(event._isKeyDown, (uint32_t)event._keyCode, 0, mod);
|
||||||
|
|
||||||
for (i = 1; i < ch.length; i++)
|
for (i = 1; i < ch.length; i++)
|
||||||
apple_input_keyboard_event(event._isKeyDown, 0, [ch characterAtIndex:i], (uint32_t)event._modifierFlags);
|
apple_input_keyboard_event(event._isKeyDown, 0, [ch characterAtIndex:i], mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
apple_input_keyboard_event(event._isKeyDown, (uint32_t)event._keyCode, character, (uint32_t)event._modifierFlags);
|
apple_input_keyboard_event(event._isKeyDown, (uint32_t)event._keyCode, character, mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [super _keyCommandForEvent:event];
|
return [super _keyCommandForEvent:event];
|
||||||
|
@ -249,26 +249,12 @@ void apple_input_reset_icade_buttons(void)
|
|||||||
icade_buttons = 0;
|
icade_buttons = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is copied here as it isn't
|
|
||||||
* defined in any standard iOS header */
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
NSAlphaShiftKeyMask = 1 << 16,
|
|
||||||
NSShiftKeyMask = 1 << 17,
|
|
||||||
NSControlKeyMask = 1 << 18,
|
|
||||||
NSAlternateKeyMask = 1 << 19,
|
|
||||||
NSCommandKeyMask = 1 << 20,
|
|
||||||
NSNumericPadKeyMask = 1 << 21,
|
|
||||||
NSHelpKeyMask = 1 << 22,
|
|
||||||
NSFunctionKeyMask = 1 << 23,
|
|
||||||
NSDeviceIndependentModifierFlagsMask = 0xffff0000U
|
|
||||||
};
|
|
||||||
|
|
||||||
void apple_input_keyboard_event(bool down,
|
void apple_input_keyboard_event(bool down,
|
||||||
unsigned code, uint32_t character, uint32_t mod)
|
unsigned code, uint32_t character, uint32_t mod)
|
||||||
{
|
{
|
||||||
apple_input_data_t *apple = (apple_input_data_t*)driver.input_data;
|
apple_input_data_t *apple = (apple_input_data_t*)driver.input_data;
|
||||||
enum retro_mod mods = RETROKMOD_NONE;
|
|
||||||
|
|
||||||
code = HIDKEY(code);
|
code = HIDKEY(code);
|
||||||
|
|
||||||
@ -286,16 +272,9 @@ void apple_input_keyboard_event(bool down,
|
|||||||
|
|
||||||
if (apple)
|
if (apple)
|
||||||
apple->key_state[code] = down;
|
apple->key_state[code] = down;
|
||||||
|
|
||||||
mods |= (mod & NSAlphaShiftKeyMask) ? RETROKMOD_CAPSLOCK : 0;
|
|
||||||
mods |= (mod & NSShiftKeyMask) ? RETROKMOD_SHIFT : 0;
|
|
||||||
mods |= (mod & NSControlKeyMask) ? RETROKMOD_CTRL : 0;
|
|
||||||
mods |= (mod & NSAlternateKeyMask) ? RETROKMOD_ALT : 0;
|
|
||||||
mods |= (mod & NSCommandKeyMask) ? RETROKMOD_META : 0;
|
|
||||||
mods |= (mod & NSNumericPadKeyMask) ? RETROKMOD_NUMLOCK : 0;
|
|
||||||
|
|
||||||
input_keyboard_event(down,
|
input_keyboard_event(down,
|
||||||
input_translate_keysym_to_rk(code), character, mods);
|
input_translate_keysym_to_rk(code), character, (enum retro_mod)mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user