|
@@ -4,6 +4,8 @@
|
|
|
// Authors:
|
|
|
// Miguel de Icaza ([email protected])
|
|
|
//
|
|
|
+using System;
|
|
|
+
|
|
|
namespace Terminal {
|
|
|
|
|
|
/// <summary>
|
|
@@ -81,10 +83,23 @@ namespace Terminal {
|
|
|
Unknown
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Describes a keyboard event
|
|
|
+ /// </summary>
|
|
|
public struct KeyEvent {
|
|
|
public Key Key;
|
|
|
public int KeyValue => (int)Key;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Gets a value indicating whether the Alt key was pressed (real or synthesized)
|
|
|
+ /// </summary>
|
|
|
+ /// <value><c>true</c> if is alternate; otherwise, <c>false</c>.</value>
|
|
|
public bool IsAlt => (Key & Key.AltMask) != 0;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Determines whether the value is a control key
|
|
|
+ /// </summary>
|
|
|
+ /// <value><c>true</c> if is ctrl; otherwise, <c>false</c>.</value>
|
|
|
public bool IsCtrl => ((uint)Key >= 1) && ((uint)Key <= 26);
|
|
|
|
|
|
public KeyEvent (Key k)
|
|
@@ -93,6 +108,61 @@ namespace Terminal {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Mouse flags reported in MouseEvent.
|
|
|
+ /// </summary>
|
|
|
+ /// <remarks>
|
|
|
+ /// They just happen to map to the ncurses ones.
|
|
|
+ /// </remarks>
|
|
|
+ [Flags]
|
|
|
+ public enum MouseFlags {
|
|
|
+ Button1Pressed = unchecked((int)0x2),
|
|
|
+ Button1Released = unchecked((int)0x1),
|
|
|
+ Button1Clicked = unchecked((int)0x4),
|
|
|
+ Button1DoubleClicked = unchecked((int)0x8),
|
|
|
+ Button1TripleClicked = unchecked((int)0x10),
|
|
|
+ Button2Pressed = unchecked((int)0x80),
|
|
|
+ Button2Released = unchecked((int)0x40),
|
|
|
+ Button2Clicked = unchecked((int)0x100),
|
|
|
+ Button2DoubleClicked = unchecked((int)0x200),
|
|
|
+ Button2TrippleClicked = unchecked((int)0x400),
|
|
|
+ Button3Pressed = unchecked((int)0x2000),
|
|
|
+ Button3Released = unchecked((int)0x1000),
|
|
|
+ Button3Clicked = unchecked((int)0x4000),
|
|
|
+ Button3DoubleClicked = unchecked((int)0x8000),
|
|
|
+ Button3TripleClicked = unchecked((int)0x10000),
|
|
|
+ Button4Pressed = unchecked((int)0x80000),
|
|
|
+ Button4Released = unchecked((int)0x40000),
|
|
|
+ Button4Clicked = unchecked((int)0x100000),
|
|
|
+ Button4DoubleClicked = unchecked((int)0x200000),
|
|
|
+ Button4TripleClicked = unchecked((int)0x400000),
|
|
|
+ ButtonShift = unchecked((int)0x2000000),
|
|
|
+ ButtonCtrl = unchecked((int)0x1000000),
|
|
|
+ ButtonAlt = unchecked((int)0x4000000),
|
|
|
+ ReportMousePosition = unchecked((int)0x8000000),
|
|
|
+ AllEvents = unchecked((int)0x7ffffff),
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Describes a mouse event
|
|
|
+ /// </summary>
|
|
|
+ public struct MouseEvent {
|
|
|
+ /// <summary>
|
|
|
+ /// The X (column) location for the mouse event.
|
|
|
+ /// </summary>
|
|
|
+ public int X;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// The Y (column) location for the mouse event.
|
|
|
+ /// </summary>
|
|
|
+ public int Y;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Flags indicating the kind of mouse event that is being posted.
|
|
|
+ /// </summary>
|
|
|
+ public MouseFlags Flags;
|
|
|
+ }
|
|
|
+
|
|
|
public class Event {
|
|
|
public class Key : Event {
|
|
|
public int Code { get; private set; }
|