BookinglyTech News
Software

Un ESP32-C3 como teclado BLE: un botón que lanza Command+Shift+3 en el iPad

Un desarrollador ha montado un mando de un solo pulsador que se presenta al iPad como teclado Bluetooth y teclea el atajo de captura por él, sin apps ni automatizaciones.

3 min de lecturaDev.to0 vistas

Apple lleva años dando atajos para capturar la pantalla del iPad, pero todos piden tener el aparato a mano: o levantas el tablet del soporte, o alcanzas los botones físicos, o usas un teclado completo. Un desarrollador ha resuelto el problema con un mando de un solo botón construido sobre un ESP32-C3 que se anuncia al iPad como un teclado Bluetooth llamado Screenshot Remote y escribe Command+Shift+3 cuando pulsas.

El firmware vive en BT-Keyboard-Screenshot, escrito en MicroPython. No reimplementa la pila HID: reutiliza MicroPythonBLEHID, del que hay que copiar hid_services.py y hid_keystores.py a la placa junto al script bt_screenshot.py. El resto es cablear un pulsador y enseñarle al chip qué tres teclas tiene que soltar.

Hardware primero, radio después

La parte física es deliberadamente tonta. Un kit de desarrollo ESP32-C3 corre el firmware y da la conexión de batería; un pulsador táctil aparte es el único control, en el GPIO 5, configurado con pull-down interno, así que MicroPython lee 1 mientras se mantiene pulsado y 0 cuando no. El LED integrado cuelga del GPIO 8 y en muchas de estas placas tiene la polaridad invertida, con lo que encender es 0 y apagar es 1. La alimentación sale de una celda 18650 en su porta-pilas y todo el conjunto va metido en una caja de proyectos para que no quede un breadboard sobre la mesa.

El autor lo justifica: si el LED nunca se enciende, el problema está en el pin, no en el emparejamiento. Probar por partes evita perseguir fallos silenciosos del Bluetooth.

Emparejar una vez y olvidarse

El emparejamiento se resuelve con un NVSKeyStore, que guarda el vínculo en memoria no volátil y lo sobrevive a un corte de corriente. El dispositivo se anuncia durante un máximo de treinta segundos y luego deja de hacerlo; si nadie se conecta, el log serie lo dice con un mensaje escueto. Después del primer Settings → Bluetooth, apagar y encender la placa no obliga a repetir el proceso.

La parte útil del proyecto son dos informes HID y dos pausas cortas. El código fija SCREENSHOT_KEY en 0x20, el uso HID del 3, activa left_gui y left_shift, envía el informe, espera 80 milisegundos, y manda un segundo informe vacío que suelta todo. Esa liberación no es opcional. El propio autor la omitió una vez: la captura salió, pero el siguiente texto tecleado en un teclado real llegó con Command y Shift todavía pulsados y el iPad se quedó con los modificadores pegados hasta desconectar Bluetooth o reiniciar algo.

El rebote del pulsador se ataja con un retardo de 50 milisegundos, suficiente para que una pulsación no dispare la ristra de capturas casi idénticas que acabas viendo en Fotos.

El interés del montaje no está en las capturas del iPad, sino en el patrón: emular un teclado HID desde un microcontrolador es la vía más limpia para inyectar atajos en cualquier anfitrión, y el detalle del informe de liberación vale para todo firmware que se meta a fabricar eventos de entrada. No hay demo en vídeo ni app compañera, solo el repositorio y el código.