123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- using System;
- using Terminal.Gui;
- namespace UICatalog {
- [ScenarioMetadata (Name: "SendKeys", Description: "SendKeys sample - Send key combinations.")]
- [ScenarioCategory ("Input")]
- class SendKeys : Scenario {
- public override void Setup ()
- {
- var label = new Label ("Insert the text to send:") {
- X = Pos.Center (),
- Y = Pos.Center () - 6
- };
- Win.Add (label);
- var txtInput = new TextField ("MockKeyPresses") {
- X = Pos.Center (),
- Y = Pos.Center () - 5,
- Width = 20
- };
- Win.Add (txtInput);
- var ckbShift = new CheckBox ("Shift") {
- X = Pos.Center (),
- Y = Pos.Center () - 4
- };
- Win.Add (ckbShift);
- var ckbAlt = new CheckBox ("Alt") {
- X = Pos.Center (),
- Y = Pos.Center () - 3
- };
- Win.Add (ckbAlt);
- var ckbControl = new CheckBox ("Control") {
- X = Pos.Center (),
- Y = Pos.Center () - 2
- };
- Win.Add (ckbControl);
- label = new Label ("Result keys:") {
- X = Pos.Center (),
- Y = Pos.Center () + 1
- };
- Win.Add (label);
- var txtResult = new TextField () {
- X = Pos.Center (),
- Y = Pos.Center () + 2,
- Width = 20,
- };
- Win.Add (txtResult);
- var rKeys = "";
- var rControlKeys = "";
- var IsShift = false;
- var IsAlt = false;
- var IsCtrl = false;
- txtResult.KeyPress += (e) => {
- rKeys += (char)e.KeyEvent.Key;
- if (!IsShift && e.KeyEvent.IsShift) {
- rControlKeys += " Shift ";
- IsShift = true;
- }
- if (!IsAlt && e.KeyEvent.IsAlt) {
- rControlKeys += " Alt ";
- IsAlt = true;
- }
- if (!IsCtrl && e.KeyEvent.IsCtrl) {
- rControlKeys += " Ctrl ";
- IsCtrl = true;
- }
- };
- var lblShippedKeys = new Label () {
- X = Pos.Center (),
- Y = Pos.Center () + 3,
- AutoSize = true
- };
- Win.Add (lblShippedKeys);
- var lblShippedControlKeys = new Label () {
- X = Pos.Center (),
- Y = Pos.Center () + 5,
- AutoSize = true
- };
- Win.Add (lblShippedControlKeys);
- var button = new Button ("Process keys") {
- X = Pos.Center (),
- Y = Pos.Center () + 7,
- IsDefault = true
- };
- Win.Add (button);
- void ProcessInput ()
- {
- rKeys = "";
- rControlKeys = "";
- txtResult.Text = "";
- IsShift = false;
- IsAlt = false;
- IsCtrl = false;
- txtResult.SetFocus ();
- foreach (var r in txtInput.Text.ToString ()) {
- var ck = char.IsLetter (r)
- ? (ConsoleKey)char.ToUpper (r) : (ConsoleKey)r;
- Application.Driver.SendKeys (r, ck, ckbShift.Checked,
- ckbAlt.Checked, ckbControl.Checked);
- }
- lblShippedKeys.Text = rKeys;
- lblShippedControlKeys.Text = rControlKeys;
- txtInput.SetFocus ();
- }
- button.Clicked += () => ProcessInput ();
- Win.KeyPress += (e) => {
- if (e.KeyEvent.Key == Key.Enter) {
- ProcessInput ();
- e.Handled = true;
- }
- };
- }
- }
- }
|