// This version is used by the CommandManager to track the keystrokes the user has hit for binding lookups. public static KeyboardShortcut[] AccelsFromKey(Gdk.EventKey raw, out bool complete) { KeyboardShortcut[] shortcuts; Gdk.ModifierType modifier; Gdk.Key key; GtkWorkarounds.MapKeys(raw, out key, out modifier, out shortcuts); complete = !KeyIsModifier(key); return(shortcuts); }
protected override bool OnKeyPressEvent(EventKey evnt) { Gdk.Key key; Gdk.ModifierType mod; KeyboardShortcut[] accels; GtkWorkarounds.MapKeys(evnt, out key, out mod, out accels); switch (accels [0].Key) { case Gdk.Key.Left: case Gdk.Key.KP_Left: LeftItem(); break; case Gdk.Key.Right: case Gdk.Key.KP_Right: RightItem(); break; case Gdk.Key.Up: case Gdk.Key.KP_Up: PrevItem(false); break; case Gdk.Key.Down: case Gdk.Key.KP_Down: NextItem(false); break; case Gdk.Key.Tab: if ((accels [0].Modifier & ModifierType.ShiftMask) == 0) { NextItem(true); } else { PrevItem(true); } break; case Gdk.Key.Return: case Gdk.Key.KP_Enter: case Gdk.Key.ISO_Enter: OnRequestClose(new RequestActionEventArgs(true)); break; case Gdk.Key.Escape: OnRequestClose(new RequestActionEventArgs(false)); break; } return(base.OnKeyPressEvent(evnt)); }
// This version is used by the KeyBindingsPanel to display the keystrokes that the user has hit. public static string AccelLabelFromKey (Gdk.EventKey raw, out bool complete) { KeyboardShortcut[] shortcuts; Gdk.ModifierType modifier; Gdk.Key key; GtkWorkarounds.MapKeys (raw, out key, out modifier, out shortcuts); bool keyIsModifier = KeyIsModifier (key); complete = !keyIsModifier; // The first shortcut is the fully decomposed version string accel = ModifierToString (shortcuts[0].Modifier); if (keyIsModifier) return accel + ModifierKeyToString (shortcuts[0].Key); return accel + KeyToString (shortcuts[0].Key); }
protected override bool OnKeyReleaseEvent(Gdk.EventKey evnt) { if (initialKey.IsEmpty) { Gdk.Key key; Gdk.ModifierType mod; KeyboardShortcut [] accels; GtkWorkarounds.MapKeys(evnt, out key, out mod, out accels); initialKey = new KeyboardShortcut(key, mod); } var releaseMods = GtkWorkarounds.KeysForMod(initialKey.Modifier); if ((releaseMods.Length == 0 && (evnt.Key == Gdk.Key.Control_L || evnt.Key == Gdk.Key.Control_R)) || releaseMods.Contains(evnt.Key)) { OnRequestClose(new RequestActionEventArgs(true)); } return(base.OnKeyReleaseEvent(evnt)); }