Cómo usar control de teclado táctil .NET

En este artículo explicaremos como usar el control para .NET de teclado táctil. Existen dos formas de agregar el teclado a tu proyecto windows forms: desde el cuadro de herramientas del propio diseñador de formularios o por código. A continuación se explican detalladamente las dos formas, así como las principales propiedades y características.

Agregar el teclado táctil a través del diseñador

Antes de nada debes descargar .NET Touch Keyboard. A continuación crea un nuevo proyecto (o abre uno existente) de Windows Forms en Visual Studio.

Desde el diseño del formulario donde se desea usar el control del teclado táctil, abre el cuadro de herramientas y usa la opción del botón derecho para elegir nuevos elementos.

Pulsa sobre examinar, selecciona la librería Pove.TouchKeyboard.dll y pulsa aceptar. 

Ahora arrastra el control directamente sobre el formulario.

Puedes colocar el control en cualquier lugar del formulario y darle el tamaño que desees, la forma más sencilla de ubicarlo es usando la propiead "Dock" a "Bottom".

Ya puedes añadir un cuadro de texto al formulario y ejecutar la aplicación para probarlo.

Es posible indicar el tipo de teclado: normal, normal + teclado numérico o sólo teclado numérico.

También podemos cambiar la fuente de las teclas e indicar si queremos mostrar las flechas en el teclado numérico.

 

Usar el teclado táctil por código

Primero descarga .NET Touch Keyboard. A continuación crea un nuevo proyecto (o abre uno existente) de Windows Forms en Visual Studio.

Ahora agrega la librería Pove.TouchKeyboard.dll en Referencias del proyecto.

Una vez agregada la referencia, ya podemos usar la librería por código.

using System;
using System.Drawing;
using System.Windows.Forms;
// Es necesario referenciar la librería
using Pove.TouchKeyboard; 

namespace KBtest
{
    public partial class Form1 : Form
    {
        // Inicializar control
        TouchKeyBoard teclado = new TouchKeyBoard();

        // Creamos un cuadro de texto para probar el control
        TextBox texto = new TextBox();

        public Form1()
        {
            InitializeComponent();

            // Indicar tamaño del formulario
            this.Size = new Size(1200, 600);

            // Incluir teclado en el formulario
            teclado.Parent = this;
            // Situar control
            teclado.Dock = DockStyle.Bottom;

            // Propiedades del teclado
            teclado.KeyBoardType = IKeyboard.KBType.KeyboardAndNumPad; // Mostrar teclado numérico
            teclado.setCapsLock(true); // Bloquear mayúsculas

            // Propiedades genéricas de la clase teclado
            IKeyboard.AllowChangeCapsLock = false; // No permitir cambiar el bloqueo de mayúsculas
            IKeyboard.HideOnEscape = true; // El teclado se oculta al pulsar la tecla ESC

            // Eventos teclado
            teclado.TouchKeyClicked += Teclado_TouchKeyClicked;

            // Situar cuadro de texto        
            texto.Parent = this;
            texto.Multiline = true;
            texto.Height = 100;
            texto.Dock = DockStyle.Top;

            // Eventos cuadro de tecto
            texto.MouseClick += Texto_MouseClick;
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            texto.Focus(); // Situar el foco en el cuadro de texto al mostrar el formulario
        }

        private void Texto_MouseClick(object sender, MouseEventArgs e)
        {
            teclado.Show(); // Mostrar teclado si lo hemos ocultado
        }

        private void Teclado_TouchKeyClicked(object sender, TouchKeyBoard.TouchKeyClickEventArgs e)
        {
            Console.WriteLine(string.Format("Tecla pulsada: {0}, texto enviado: {1}",
                                              e.KeyClicked.Normal, e.StringSended));
        }
    }
}

Bonus

Con unos pequeños cambios en nuestro código, es posible usar nuestro teclado para escribir en otras aplicaciones.

[...]
 public partial class Form1 : Form
    {
        // Inicializar control
        TouchKeyBoard teclado = new TouchKeyBoard();

        // Creamos un cuadro de texto para probar el control
        TextBox texto = new TextBox();

        // No activar el formulario para poder escribir en otras aplicaciones
        const int WS_EX_NOACTIVATE = 0x08000000;
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams param = base.CreateParams;
                param.ExStyle |= WS_EX_NOACTIVATE;
                return param;
            }
        }

        public Form1()
        {
            InitializeComponent();

            // Conservar el formulario siempre por encima
            this.TopMost = true;

            // Indicar tamaño del formulario
            this.Size = new Size(1200, 600);
            [...]