Show / Hide Table of Contents

# Class Responder

Responder base class implemented by objects that want to participate on keyboard and mouse input.

##### Inheritance

System.Object
Responder
View

###### Namespace: Terminal.Gui

###### Assembly: Terminal.Gui.dll

##### Syntax

    public class Responder

### Constructors

#### Responder()

##### Declaration

    public Responder ();

### Properties

#### CanFocus

Gets or sets a value indicating whether this Responder can focus.

##### Declaration

    public virtual bool CanFocus { get; set; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if can focus; otherwise, `false`.

#### HasFocus

Gets or sets a value indicating whether this Responder has focus.

##### Declaration

    public virtual bool HasFocus { get; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if has focus; otherwise, `false`.

### Methods

#### MouseEvent(MouseEvent)

Method invoked when a mouse event is generated

##### Declaration

    public virtual bool MouseEvent (Terminal.Gui.MouseEvent mouseEvent);

##### Parameters

Type | Name | Description
--- | --- | ---
MouseEvent | mouseEvent | Contains the details about the mouse event.

##### Returns

Type | Description
--- | ---
System.Boolean | `true`, if the event was handled, `false` otherwise.

#### ProcessColdKey(KeyEvent)

This method can be overwritten by views that want to provide accelerator functionality (Alt-key for example), but without interefering with normal ProcessKey behavior.

##### Declaration

    public virtual bool ProcessColdKey (Terminal.Gui.KeyEvent keyEvent);

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent | Contains the details about the key that produced the event.

##### Returns

Type | Description
--- | ---
System.Boolean | To be added.

##### Remarks

After keys are sent to the subviews on the current view, all the view are processed and the key is passed to the views to allow some of them to process the keystroke as a cold-key.

This functionality is used, for example, by default buttons to act on the enter key. Processing this as a hot-key would prevent non-default buttons from consuming the enter keypress when they have the focus.

#### ProcessHotKey(KeyEvent)

This method can be overwritten by view that want to provide accelerator functionality (Alt-key for example).

##### Declaration

    public virtual bool ProcessHotKey (Terminal.Gui.KeyEvent kb);

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | kb | To be added.

##### Returns

Type | Description
--- | ---
System.Boolean | To be added.

##### Remarks

Before keys are sent to the subview on the current view, all the views are processed and the key is passed to the widgets to allow some of them to process the keystroke as a hot-key.

For example, if you implement a button that has a hotkey ok "o", you would catch the combination Alt-o here. If the event is caught, you must return true to stop the keystroke from being dispatched to other views.

#### ProcessKey(KeyEvent)

If the view is focused, gives the view a chance to process the keystroke.

##### Declaration

    public virtual bool ProcessKey (Terminal.Gui.KeyEvent keyEvent);

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent | Contains the details about the key that produced the event.

##### Returns

Type | Description
--- | ---
System.Boolean | To be added.

##### Remarks

Views can override this method if they are interested in processing the given keystroke. If they consume the keystroke, they must return true to stop the keystroke from being processed by other widgets or consumed by the widget engine. If they return false, the keystroke will be passed using the ProcessColdKey method to other views to process.

The View implementation does nothing but return false, so it is not necessary to call base.ProcessKey if you derive directly from View, but you should if you derive other View subclasses.