diff --git a/Example/demo.cs b/Example/demo.cs
index 6db1bb40b..9edfeb4d0 100644
--- a/Example/demo.cs
+++ b/Example/demo.cs
@@ -90,8 +90,8 @@ static class Demo {
Width = Dim.Fill (),
Height = Dim.Fill ()
};
- container.OnKeyUp += (KeyEvent ke) => {
- if (ke.Key == Key.Esc)
+ container.KeyUp += (sender, e) => {
+ if (e.KeyEvent.Key == Key.Esc)
container.Running = false;
};
@@ -469,9 +469,9 @@ static class Demo {
}
- container.OnKeyDown += (KeyEvent keyEvent) => KeyDownPressUp (keyEvent, "Down");
- container.OnKeyPress += (KeyEvent keyEvent) => KeyDownPressUp (keyEvent, "Press");
- container.OnKeyUp += (KeyEvent keyEvent) => KeyDownPressUp (keyEvent, "Up");
+ container.KeyDown += (o, e) => KeyDownPressUp (e.KeyEvent, "Down");
+ container.KeyPress += (o, e) => KeyDownPressUp (e.KeyEvent, "Press");
+ container.KeyUp += (o, e) => KeyDownPressUp (e.KeyEvent, "Up");
Application.Run (container);
}
#endregion
diff --git a/Terminal.Gui/Core.cs b/Terminal.Gui/Core.cs
index 6ab3314d2..60f968331 100644
--- a/Terminal.Gui/Core.cs
+++ b/Terminal.Gui/Core.cs
@@ -126,7 +126,7 @@ namespace Terminal.Gui {
///
/// Contains the details about the key that produced the event.
/// true if the event was handled
- public virtual bool KeyDown (KeyEvent keyEvent)
+ public virtual bool OnKeyDown (KeyEvent keyEvent)
{
return false;
}
@@ -136,7 +136,7 @@ namespace Terminal.Gui {
///
/// Contains the details about the key that produced the event.
/// true if the event was handled
- public virtual bool KeyUp (KeyEvent keyEvent)
+ public virtual bool OnKeyUp (KeyEvent keyEvent)
{
return false;
}
@@ -1065,15 +1065,20 @@ namespace Terminal.Gui {
SuperView?.SetFocus(this);
}
+ public class KeyEventEventArgs : EventArgs {
+ public KeyEventEventArgs(KeyEvent ke) => KeyEvent = ke;
+ public KeyEvent KeyEvent { get; set; }
+ }
+
///
/// Invoked when a character key is pressed and occurs after the key up event.
///
- public Action OnKeyPress;
+ public event EventHandler KeyPress;
///
public override bool ProcessKey (KeyEvent keyEvent)
{
- OnKeyPress?.Invoke (keyEvent);
+ KeyPress?.Invoke (this, new KeyEventEventArgs(keyEvent));
if (Focused?.ProcessKey (keyEvent) == true)
return true;
@@ -1083,6 +1088,7 @@ namespace Terminal.Gui {
///
public override bool ProcessHotKey (KeyEvent keyEvent)
{
+ KeyPress?.Invoke (this, new KeyEventEventArgs (keyEvent));
if (subviews == null || subviews.Count == 0)
return false;
foreach (var view in subviews)
@@ -1094,6 +1100,7 @@ namespace Terminal.Gui {
///
public override bool ProcessColdKey (KeyEvent keyEvent)
{
+ KeyPress?.Invoke (this, new KeyEventEventArgs(keyEvent));
if (subviews == null || subviews.Count == 0)
return false;
foreach (var view in subviews)
@@ -1105,16 +1112,16 @@ namespace Terminal.Gui {
///
/// Invoked when a key is pressed
///
- public Action OnKeyDown;
+ public event EventHandler KeyDown;
- ///
- public override bool KeyDown (KeyEvent keyEvent)
+ /// Contains the details about the key that produced the event.
+ public override bool OnKeyDown (KeyEvent keyEvent)
{
- OnKeyDown?.Invoke (keyEvent);
+ KeyDown?.Invoke (this, new KeyEventEventArgs (keyEvent));
if (subviews == null || subviews.Count == 0)
return false;
foreach (var view in subviews)
- if (view.KeyDown (keyEvent))
+ if (view.OnKeyDown (keyEvent))
return true;
return false;
@@ -1123,16 +1130,16 @@ namespace Terminal.Gui {
///
/// Invoked when a key is released
///
- public Action OnKeyUp;
+ public event EventHandler KeyUp;
- ///
- public override bool KeyUp (KeyEvent keyEvent)
+ /// Contains the details about the key that produced the event.
+ public override bool OnKeyUp (KeyEvent keyEvent)
{
- OnKeyUp?.Invoke (keyEvent);
+ KeyUp?.Invoke (this, new KeyEventEventArgs (keyEvent));
if (subviews == null || subviews.Count == 0)
return false;
foreach (var view in subviews)
- if (view.KeyUp (keyEvent))
+ if (view.OnKeyUp (keyEvent))
return true;
return false;
@@ -2165,7 +2172,7 @@ namespace Terminal.Gui {
{
var chain = toplevels.ToList ();
foreach (var topLevel in chain) {
- if (topLevel.KeyDown (ke))
+ if (topLevel.OnKeyDown (ke))
return;
if (topLevel.Modal)
break;
@@ -2177,7 +2184,7 @@ namespace Terminal.Gui {
{
var chain = toplevels.ToList ();
foreach (var topLevel in chain) {
- if (topLevel.KeyUp (ke))
+ if (topLevel.OnKeyUp (ke))
return;
if (topLevel.Modal)
break;
diff --git a/Terminal.Gui/Views/Menu.cs b/Terminal.Gui/Views/Menu.cs
index 56eecf66c..16fdad686 100644
--- a/Terminal.Gui/Views/Menu.cs
+++ b/Terminal.Gui/Views/Menu.cs
@@ -347,7 +347,7 @@ namespace Terminal.Gui {
});
}
- public override bool KeyDown (KeyEvent keyEvent)
+ public override bool OnKeyDown (KeyEvent keyEvent)
{
if (keyEvent.IsAlt) {
host.CloseAllMenus ();
@@ -362,7 +362,7 @@ namespace Terminal.Gui {
// To ncurses simulate a AltMask key pressing Alt+Space because
// it canīt detect an alone special key down was pressed.
if (keyEvent.IsAlt && keyEvent.Key == Key.AltMask) {
- KeyDown (keyEvent);
+ OnKeyDown (keyEvent);
return true;
}
@@ -562,9 +562,7 @@ namespace Terminal.Gui {
}
bool openedByAltKey;
-
- ///
- public override bool KeyDown (KeyEvent keyEvent)
+ public override bool OnKeyDown (KeyEvent keyEvent)
{
if (keyEvent.IsAlt) {
openedByAltKey = true;
@@ -580,7 +578,7 @@ namespace Terminal.Gui {
///
///
///
- public override bool KeyUp (KeyEvent keyEvent)
+ public override bool OnKeyUp (KeyEvent keyEvent)
{
if (keyEvent.IsAlt) {
// User pressed Alt - this may be a precursor to a menu accelerator (e.g. Alt-F)
@@ -1003,8 +1001,8 @@ namespace Terminal.Gui {
// To ncurses simulate a AltMask key pressing Alt+Space because
// it canīt detect an alone special key down was pressed.
if (kb.IsAlt && kb.Key == Key.AltMask && openMenu == null) {
- KeyDown (kb);
- KeyUp (kb);
+ OnKeyDown (kb);
+ OnKeyUp (kb);
return true;
} else if (kb.IsAlt) {
if (FindAndOpenMenuByHotkey (kb)) return true;