quartz: resolve the modifier confusion on the Mac
- map Alt/Option to MOD1 - map Command to MOD2 - map MOD2 to the virtual Meta - improve/fix (?) group handling in gdkkeys-quartz.c
This commit is contained in:
parent
c50063397f
commit
a99d14f61c
@ -223,8 +223,10 @@ get_keyboard_modifiers_from_ns_event (NSEvent *nsevent)
|
||||
modifiers |= GDK_SHIFT_MASK;
|
||||
if (nsflags & NSControlKeyMask)
|
||||
modifiers |= GDK_CONTROL_MASK;
|
||||
if (nsflags & NSCommandKeyMask)
|
||||
if (nsflags & NSAlternateKeyMask)
|
||||
modifiers |= GDK_MOD1_MASK;
|
||||
if (nsflags & NSCommandKeyMask)
|
||||
modifiers |= GDK_MOD2_MASK;
|
||||
|
||||
return modifiers;
|
||||
}
|
||||
@ -912,7 +914,7 @@ fill_key_event (GdkWindow *window,
|
||||
{
|
||||
case GDK_KEY_Meta_R:
|
||||
case GDK_KEY_Meta_L:
|
||||
mask = GDK_MOD1_MASK;
|
||||
mask = GDK_MOD2_MASK;
|
||||
break;
|
||||
case GDK_KEY_Shift_R:
|
||||
case GDK_KEY_Shift_L:
|
||||
@ -923,7 +925,7 @@ fill_key_event (GdkWindow *window,
|
||||
break;
|
||||
case GDK_KEY_Alt_R:
|
||||
case GDK_KEY_Alt_L:
|
||||
mask = GDK_MOD5_MASK;
|
||||
mask = GDK_MOD1_MASK;
|
||||
break;
|
||||
case GDK_KEY_Control_R:
|
||||
case GDK_KEY_Control_L:
|
||||
|
@ -561,8 +561,8 @@ gdk_quartz_keymap_get_entries_for_keyval (GdkKeymap *keymap,
|
||||
(*n_keys)++;
|
||||
|
||||
key.keycode = i / KEYVALS_PER_KEYCODE;
|
||||
key.group = 0;
|
||||
key.level = i % KEYVALS_PER_KEYCODE;
|
||||
key.group = (i % KEYVALS_PER_KEYCODE) >= 2;
|
||||
key.level = i % 2;
|
||||
|
||||
g_array_append_val (keys_array, key);
|
||||
}
|
||||
@ -617,7 +617,7 @@ gdk_quartz_keymap_get_entries_for_keycode (GdkKeymap *keymap,
|
||||
GdkKeymapKey key;
|
||||
|
||||
key.keycode = hardware_keycode;
|
||||
key.group = i / 2;
|
||||
key.group = i >= 2;
|
||||
key.level = i % 2;
|
||||
|
||||
g_array_append_val (keys_array, key);
|
||||
@ -673,6 +673,11 @@ translate_keysym (guint hardware_keycode,
|
||||
tmp_keyval = upper;
|
||||
}
|
||||
|
||||
if (effective_group)
|
||||
*effective_group = group;
|
||||
if (effective_level)
|
||||
*effective_level = level;
|
||||
|
||||
return tmp_keyval;
|
||||
}
|
||||
|
||||
@ -727,14 +732,17 @@ static void
|
||||
gdk_quartz_keymap_add_virtual_modifiers (GdkKeymap *keymap,
|
||||
GdkModifierType *state)
|
||||
{
|
||||
/* FIXME: For now, we've mimiced the Windows backend. */
|
||||
if (*state & GDK_MOD2_MASK)
|
||||
*state |= GDK_META_MASK;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gdk_quartz_keymap_map_virtual_modifiers (GdkKeymap *keymap,
|
||||
GdkModifierType *state)
|
||||
{
|
||||
/* FIXME: For now, we've mimiced the Windows backend. */
|
||||
if (*state & GDK_META_MASK)
|
||||
*state |= GDK_MOD2_MASK;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user