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;
}
{
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:
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:
(*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);
}
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);
tmp_keyval = upper;
}
+ if (effective_group)
+ *effective_group = group;
+ if (effective_level)
+ *effective_level = level;
+
return tmp_keyval;
}
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;
}