Skip to content

v4.0 — Multi-touch keyboard & gaming overlays

Latest

Choose a tag to compare

@amcchord amcchord released this 23 Apr 02:50

What's New in v4.0

  • Multi-touch on-screen keyboard — three-finger tap anywhere on the Mac screen spawns a full QWERTY overlay with sticky Shift / Ctrl / Option / Command modifiers and an arrow cluster. Typing drives real ADB keystrokes, so it works in any Mac application. Three-finger tap again to dismiss.
  • Gaming overlay — four-finger tap spawns a D-pad plus Esc / Return / Space / Option action cluster for arrow-key games (Glider, Crystal Quest, Marathon, etc.). Four-finger tap dismisses; a three-finger tap while the gaming overlay is up swaps straight over to the keyboard.
  • "Transparent" overlay without alpha math — the compositor writes only the (even, even) sub-pixel of each 2x2 Mac-to-physical block, giving exact 25% coverage so the Mac content shows through the other three sub-pixels for free. Held keys overlay a 50% black checker; latched modifiers use the opposite checker so you can tell at a glance which Shift state is active.
  • Per-board PlatformIO pinning — Tab5 stays on pioarduino 55.03.35 (IDF 5.5.1) to avoid the MIPI-DSI backlight flicker that hit M5GFX in IDF 5.5.2; Waveshare moves to 55.03.38-1 (IDF 5.5.4) to pick up the newer esp_hosted that no longer panics in sdio_rx_get_buffer under sustained SD I/O. Each board dodges the other board's regression.
  • Tab5 USB Disk over USB-A — SD-card-over-USB-MSC now routes through the Tab5's USB-A port (OTG-HS, where TinyUSB actually lands on the ESP32-P4) instead of USB-C. HWCDC stays alive throughout, so the serial console keeps working while the card is mounted on your host. Plug a standard USB-A-to-USB-C cable into the Tab5 USB-A jack and the other end into your computer.
  • Auto-sized USB Disk dialog — the pre-boot MSC dialog now grows to fit its copy so Tab5 cable instructions no longer run under the Done button.
  • Carry-forward from the 3.4.x line — 180° Tab5 rotation, single-refresh boot splash, shared folder (ExtFS), baked-in ESP32-C6 WiFi firmware with SDIO hosted OTA, XPRAM write coalescing, and the pre-boot-to-Mac-OS handoff with no gray flash.

Download

Pick the binary for your board:

Both are single merged images (bootloader + partition table + app) that flash at offset 0x0.

Flash

pip install esptool

esptool --chip esp32p4 --port /dev/cu.usbmodem* \
    --baud 921600 write-flash 0x0 M5Tab-Macintosh-v4.0.bin

Replace the port with your platform's equivalent (/dev/cu.usbmodem* on macOS, COM3 on Windows, /dev/ttyACM0 on Linux). If flashing fails, try --baud 460800 or hold BOOT while pressing RESET to force bootloader mode.

SD card

An SD card image pre-loaded with Mac OS is available at mcchord.net/static/sdCard.zip. Extract to the root of a FAT32 microSD card.

Full README

See the project README for screenshots, hardware details, and the full docs on the pre-boot environment and on-screen keyboard gestures.