La cantidad de pulsaciones de teclas que registramos en un día es enorme. Desde aplicaciones de mensajería hasta codificación o escritura de la próxima novela, la gran cantidad de pulsaciones de teclas es difícil de calcular. Pero, ¿qué pasaría si pudiéramos ahorrar un poco de tiempo y nuestras articulaciones doloridas creando un teclado de acceso directo?
Keybow 2040 de Pimoroni es un teclado de 16 teclas que se puede programar en CircuitPython para que actúe como un teclado USB. Cada tecla se puede programar para iniciar una aplicación, controlar los niveles de audio, cambiar de escena en OBS o pegar imágenes divertidas de gatos en Twitter.
En este tutorial, configuraremos Keybow 2040 para que sea un teclado de uso general con teclas de navegación de página, atajos de OBS y dos teclas de acceso rápido para iniciar aplicaciones comunes.
Nuestro teclado de atajo fue diseñado para rascarse la picazón. Para aumentar nuestro teclado existente y agregar funciones adicionales como el cambio de escena OBS y los lanzadores de aplicaciones. Su diseño será un reflejo de sus necesidades, así que utilice esta guía como base para crear un diseño personalizado.
Para este proyecto Necesitará
Configuración de su keybow 2040
Pimoroni tiene un guía completa sobre cómo configurar su Keybow 2040, y el proceso de construcción es increíblemente simple, solo requiere un destornillador y unos minutos de esfuerzo. Keybow 2040 viene con CircuitPython y todas las bibliotecas necesarias preinstaladas. Si necesita instalar CircuitPython y las bibliotecas, entonces Pimoroni tiene un tutorial que puede seguir.
En lugar de usar las teclas incluidas, obtuvimos algunas mayúsculas compatibles con MX de un teclado de repuesto. Luego colocamos las mayúsculas en el teclado en nuestro diseño deseado.
La fila superior es navegación básica, inicio, flecha hacia arriba, final y página hacia arriba. La segunda fila son las teclas de flecha restantes y la página hacia abajo. La tercera fila controla nuestro volumen, hacia arriba y hacia abajo, inicia la herramienta de captura de pantalla y abre una terminal/símbolo del sistema. La última fila está reservada para OBS, moviéndose entre cuatro escenas. Obviamente, si está probando esto en casa, puede usar las teclas que desee y asignarlas a las funciones que desee, ya sea iniciar una aplicación, realizar una acción en un programa como OBS o controlar la reproducción de medios.
Keybow 2040 usa un sistema de numeración que ve la clave 0 en t La parte inferior izquierda del tablero y la clave 15 en la parte superior derecha. Al usar la biblioteca Keybow CircuitPython, usaremos estos números para configurar lo que hará cada tecla y cómo se iluminará.
Programando su Keybow 2040 teclas de acceso directo
El código para este proyecto está escrito en CircuitPython, que es muy similar a MicroPython y Python 3.
1. Conecta tu Keybow 2040 a tu computadora mediante un cable USB-C. Aparecerá un nuevo dispositivo, CIRCUITPY.
2. Con su editor preferido, open code.py que se encuentra en la unidad CIRCUITPY. Recomendamos los editores de código Visual Studio Code, Thonny o Mu de Microsoft.
3. Elimina cualquier texto del archivo.
4. Importa cuatro bibliotecas . La primera es la placa , que nos permite usar el GPIO en el chip RP2040. El segundo es Keybow2040 , que es una abstracción para facilitar el control del Keybow 2040. Importe tiempo para controlar el ritmo del código. Finalmente importa usb_hid que nos permitirá enviar atajos de teclado como si tuviéramos un teclado USB.
tablero de importación
de keybow2040 importar Keybow2040
tiempo de importación
importar usb_hid
5. Importe tres bibliotecas para permitir que Keybow 2040 actúe como un teclado, con un diseño de EE. UU., y permita que las pulsaciones de teclas se generen mediante código.
from adafruit_hid.keyboard import Keyboard
desde adafruit_hid.keyboard_layout_us importar KeyboardLayoutUS
desde adafruit_hid.keycode import Keycode
6. Importa dos bibliotecas que permitirán al Keybow 2040 enviar códigos de control de consumo, que normalmente se utilizan para claves multimedia.
de adafruit_hid.consumer_control_code import ConsumerControlCode
de adafruit_hid.consumer_control import ConsumerControl
7. Keybow usa I2C para comunicarse con el RP2040. Necesitamos decirle al código que estamos usando I2C y crear un objeto <×keybow× al que podamos hacer referencia fácilmente. Luego usamos ese objeto para crear otro objeto, teclas que hace que la interacción con el teclado sea mucho más fácil.
i2c=board.I2C ()
arco de llave=Keybow2040 (i2c)
keys=keybow.keys
8. Crea tres objetos , teclado , que se utiliza para crear un dispositivo de interfaz humana USB (HID) y un diseño que configura el teclado para usar un diseño de EE. UU. El tercer objeto es consumidor y nos permite enviar pulsaciones de teclas especiales, normalmente asignadas a teclas multimedia como el control de volumen.
keyboard=Keyboard (usb_hid.devices)
layout=KeyboardLayoutUS (teclado)
consumidor=ConsumerControl (usb_hid.devices)
9. Crea dos listas: <×default× y
default=[0,1,3,4,5,8,9,11,12,13,14, 15]
wasd=[2,6,7,10]
10. Crea un bucle para ejecutar constantemente el código principal.
while True:
11. Dentro del ciclo forever crea un ciclo for que iterará a través de la lista predeterminada , estableciendo el LED de cada tecla numerada en verde. Cada vez que el bucle for se repite, el valor de i cambia al siguiente elemento de la lista, de 0 a 1,3… 15. Tenga en cuenta que Keybow 2040 utiliza LED G R B (verde, rojo, azul), por lo que el verde brillante es 255,0,0.
o i por defecto: keybow.keys [i].set_led (255,0,0)
12. Crea otro bucle for . Esta vez para establecer el color de las teclas del cursor en rojo, para que podamos ubicarlas fácilmente.
para i en wasd: keybow.keys [i].set_led (0,255,0)
13. Utilice una prueba condicional para comprobar si se presiona una tecla. La primera clave es la clave 0, ubicada en la esquina inferior izquierda. Cuando se presiona esta tecla, queremos que presione las teclas SHIFT + A, suelte las teclas y luego encienda la tecla en rojo durante 0.1 segundos. Este atajo cambia escenas en OBS cuando presentamos el programa The Pi Cast.
if keys [0].pressed: keyboard.send (Código de tecla.SHIFT, Código de tecla.A) keybow.keys [0].set_led (0, 255, 0) keyboard.release_all () tiempo. de sueño (0.1)
14. Establecer una condición para la clave 1 , ubicada una clave hacia arriba desde la parte inferior izquierda. Cuando se presiona esta tecla, establece todos los LED en violeta (rojo y azul mezclados) y luego envía un comando de tecla de medios para bajar (disminuir) el volumen. Las teclas se liberan y una suspensión breve reduce el riesgo de supresión de rebotes. Repita este proceso para todas las claves que desee mapear. Si necesita una plantilla, el código completo para este proyecto se encuentra al final de este cómo.
teclas elif [1].presionado: keybow.set_all (0, 255, 255) consumer.send (ConsumerControlCode.VOLUME_DECREMENT) keyboard.release_all () tiempo de sueño (0.01)
15. La tecla 9 del teclado tiene una tecla PrtSc, y esta tecla activará la herramienta de recorte de Windows. Configure esta tecla para configurar todos los LED en azul cuando se presionan, y luego le indicamos a CircuitPython que presione tres teclas a la vez. Estas teclas son Control, ALT y P. Luego soltamos las teclas y pausamos el código por un momento.
teclas elif [9].presionado: keybow.set_all (0, 0, 255) keyboard.send (Keycode.CONTROL, Keycode.ALT, Keycode.P) keyboard.release_all () tiempo. de sueño (0.1)
16. Repite el proceso condicional para las 16 claves. El proceso de identificar una tecla y configurar las acciones que se realizarán cuando se presione se repite para las dieciséis teclas. La tecla final es la tecla 15 (comenzamos en 0) y cuando se presiona esta tecla, se configuran todos los LED en azul, luego envía una pulsación de la tecla Page Up antes de soltar las teclas y hacer una pausa por un momento.
teclas elif [15].presionado: keybow.set_all (0, 0, 255) keyboard.send (Keycode.PAGE_UP) keyboard.release_all () tiempo. de sueño (0.1)
17. Para mantener el keybow buscando entrada, necesitamos decirle que se actualice al final de cada ciclo . Si falta esto, el código no funcionará como se esperaba.
keybow.update ()
Guarde el archivo code.py y Keybow 2040 se reiniciarán y ejecutarán su código, en unos segundos puede presionar las teclas y hacer la mayoría de las tareas rápidamente, pero todavía tenemos un poco de trabajo por hacer.
Agregar atajos de teclado para iniciar aplicaciones de Windows
Si está utilizando Windows, Necesitamos crear atajos de teclado para que cuando presione una de las teclas en el teclado, el sistema operativo sepa iniciar un programa como la herramienta Recortes (para presionar la tecla Prtsrc en nuestro teclado) o el indicador CMD después de presionar la tecla Terminal en nuestro teclado. Tenga en cuenta que el método de atajo de teclado integrado de Windows quiere CTRL + ALT + [una letra o un número], por lo que la tecla Prtsrc de nuestro teclado en realidad activará CTRL + ALT + P, por ejemplo. Repita estos pasos para cualquier tecla del teclado que inicie programas.
1. Busque la aplicación (p. ej.,”herramienta de recorte”) en el cuadro de búsqueda de Windows. No lo inicies.
2. Haga clic con el botón derecho en el icono del programa y seleccione”Abrir ubicación de archivo”
3. Haga clic con el botón derecho en el icono de acceso directo l y seleccione”Propiedades”.
4. Haga clic en el campo Tecla de acceso directo e ingrese la combinación de teclado (CTRL + ALT + P en nuestro caso para Prtsrc). Esto establecerá la tecla de método abreviado para ese comando que coincide con el código de esa tecla.
Configuración de las teclas de acceso directo de OBS
Para configurar los accesos directos de OBS, debemos abrir OBS y luego hacer clic en Configuración >> Teclas de acceso rápido para asignar una pulsación de tecla a una escena.
Lista de códigos completa
Tenga en cuenta que este código incluye accesos directos para las 16 teclas, que es posible que desee utilizar para diferentes funciones en su proyecto.
tablero de importación
de keybow2040 importar Keybow2040
tiempo de importación
importar usb_hid
desde adafruit_hid.keyboard importar teclado
desde adafruit_hid.keyboard_layout_us importar KeyboardLayoutUS
desde adafruit_hid.keycode import Keycode
de adafruit_hid.consumer_control_code importar ConsumerControlCode
de adafruit_hid.consumer_control import ConsumerControl # Configurar Keybow
i2c=tablero.I2C ()
arco de llave=Keybow2040 (i2c)
keys=keybow.keys # Configurar el teclado y el diseño
keyboard=Teclado (usb_hid.devices)
layout=KeyboardLayoutUS (teclado)
consumidor=ConsumerControl (usb_hid.devices)
predeterminado=[0,1,3,4,5,8,9,11,12,13,14,15]
wasd=[2,6,7,10] mientras que es verdadero: para yo por defecto: keybow.keys [i].set_led (255,0,0) porque yo en wasd: keybow.keys [i].set_led (0,255,0) si las teclas [0].presionadas: keyboard.send (Código de tecla.SHIFT, Código de tecla.A) keybow.keys [0].set_led (0, 255, 0) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [1].presionadas: keybow.set_all (0, 255, 255) consumer.send (ConsumerControlCode.VOLUME_DECREMENT) keyboard.release_all () time.sleep (0.01) teclas elif [2].presionadas: keybow.set_all (255, 0, 0) keyboard.send (Keycode.LEFT_ARROW) keyboard.release_all () tiempo de sueño (0.01) teclas elif [3].presionadas: keybow.set_all (255, 0, 0) keyboard.send (Keycode.HOME) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [4].presionadas: keyboard.send (Keycode.SHIFT, Keycode.B) keybow.keys [4].set_led (0, 255, 0) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [5].presionadas: keybow.set_all (0, 255, 255) consumer.send (ConsumerControlCode.VOLUME_INCREMENT) time.sleep (0.01) teclas elif [6].presionadas: keybow.set_all (255, 0, 0) keyboard.send (Keycode.DOWN_ARROW) keyboard.release_all () tiempo de sueño (0.01) teclas elif [7].presionadas: keybow.set_all (255, 0, 0) keyboard.send (Keycode.UP_ARROW) keyboard.release_all () tiempo de sueño (0.01) teclas elif [8].presionadas: keyboard.send (Keycode.SHIFT, Keycode.C) keybow.keys [8].set_led (0, 255, 0) tiempo. de sueño (0.1) teclas elif [9].presionadas: keybow.set_all (0, 0, 255) keyboard.send (Keycode.CONTROL, Keycode.ALT, Keycode.P) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [10].presionadas: keybow.set_all (255, 0, 0) keyboard.send (Keycode.RIGHT_ARROW) keyboard.release_all () time.sleep (0.01) teclas elif [11].presionadas: keybow.set_all (255, 0, 0) keyboard.send (Código clave.END) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [12].presionadas: keyboard.send (Código de tecla.SHIFT, Código de tecla.D) keybow.keys [12].set_led (0, 255, 0) tiempo. de sueño (0.1) teclas elif [13].presionadas: keybow.set_all (0, 0, 255) keyboard.send (Keycode.CONTROL, Keycode.ALT, Keycode.T) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [14].presionadas: keybow.set_all (0, 0, 255) keyboard.send (Keycode.PAGE_DOWN) keyboard.release_all () tiempo. de sueño (0.1) teclas elif [15].presionadas: keybow.set_all (0, 0, 255) keyboard.send (Keycode.PAGE_UP) keyboard.release_all () tiempo. de sueño (0.1) keybow.update ()