Repository navigation
Touchscreen on boxes that have one: menu taps, petting, TOUCH status - #149
Merged
Merged
Conversation
This was referenced Oct 14, 2026
Some boxes of the ATK-DNESP32S3-BOX V1.1 have a CHSC5432 at 0x2E on I2C0, others don't. The firmware probes it at boot, reports TOUCH CHSC5432 or TOUCH NONE (at boot, on hello and on the STATUS view), and on a box with one reads the report every 20 ms. A tap on a menu row selects it and acts, a tap on a key hint is that key, a tap on the buddy pets it, and a tap in Leisure calls the buddy back like any key. The keys are unchanged (ADR-0017). Hit testing uses the rectangles the display draws with. Card taps come in a second PR with the protocol change (#148). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On box 30:ED:A0:A4:0D:08 a finger aimed at STATUS landed 15 px under it, below the row's bar, and nothing happened. A row now takes taps across its whole pitch, and the last one down to the line above the hints. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On box 30:ED:A0:A4:0D:08 it took several taps to close the STATUS view: the finger went for the empty right half of the hint bar, past CLOSE. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0017 went to voice commands (#133) and 0018 is held for accounts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On box 30:ED:A0:A4:0D:08 dragon tapped the dimmed edge around the menu to close it, again and again; now that is K2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
longzhi
force-pushed
the
claude/touchscreen
branch
from
October 21, 2026 02:58
ceffa54 to
48653e8
Compare
longzhi
marked this pull request as ready for review
October 21, 2026 04:18
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 1 of #148 (spec). Decision record:
docs/adr/0019-touch-is-optional-and-everything-stays-on-the-keys.md; new terms Touchscreen, Tap and Pet inCONTEXT.md.What changes
0x2E. The box printsTOUCH CHSC5432orTOUCH NONEat boot and in answer todevice.hello, and the STATUS view gets a TOUCH row. A box without a touchscreen behaves exactly as before.firmware-rs/core/src/touch.rs). The 28-byte report at0x2000002Cis parsed as ALIENTEK's driver does, read every 20 ms. A tap is down and up within 400 ms, staying within 12 px. Every tap printsTAP <x> <y>.card_rect,panel_row_rect,hint_rects,buddy_rect), so the targets follow the layout. The tapped target is outlined for 150 ms.device-menu.md(Touch section, images),protocol.md(TOUCH,TAP),hardware.md, and both READMEs.Differences from the spec
Mac and Linux
No App changes on either side. Neither the daemon nor the Apps use the
TOUCHline; it is ignored like any other diagnostic line. Card taps, which need a daemon change shared by both platforms, come in part 2.Testing
cargo test -p vibebuddy-firmware-core: report parsing, the tap recognizer andMenu::tap_rowunit tests. The integration tests use aFakeBoardwith a finger and cover: TOUCH at boot and on hello, a box without a touchscreen, row taps, hint taps, petting, a slide, and Leisure.tools/build-firmware.shbuilds.30:ED:A0:A4:0D:08(2026-10-15, with the App quit, reading the serial port):TOUCH CHSC5432.68cb887(firmwarefirmware-v0.5.0-41-ge06f):TAP 0 138) closes the menu.TAP 319 121) closes the menu.🤖 Generated with Claude Code