Summary
Daytona's computer-use keyboard layer passes key names directly to robotgo.KeyTap. When callers use title-case or uppercase names like Escape, ESC, or ESCAPE, robotgo injects an unwanted shift modifier, so the key event becomes shift+escape instead of plain escape.
This affects any named key whose first character is uppercase.
Root cause
robotgo.KeyTap applies an uppercase-to-shift heuristic before it normalizes key names:
- If the first rune of the key string is uppercase, it appends
shift
- Then it lowercases the string
- Then it resolves key aliases
So Escape starts with uppercase E, picks up shift, gets lowered to escape, and the final event is shift+escape.
This heuristic makes sense for printable characters (A should produce shift+a), but it breaks named keys that happen to start with an uppercase letter.
Expected behavior
Named keys should be case-insensitive. All of the following should send plain escape:
The shift heuristic should (probably) only kick in for single printable characters like A .
Proposed fix
Normalize key names and aliases to lowercase in the computer-use layer before handing them to robotgo, with single-character inputs being left as-is so that uppercase letters like A still correctly produce shift+a.
Summary
Daytona's computer-use keyboard layer passes key names directly to
robotgo.KeyTap. When callers use title-case or uppercase names likeEscape,ESC, orESCAPE, robotgo injects an unwantedshiftmodifier, so the key event becomesshift+escapeinstead of plainescape.This affects any named key whose first character is uppercase.
Root cause
robotgo.KeyTapapplies an uppercase-to-shift heuristic before it normalizes key names:shiftSo
Escapestarts with uppercaseE, picks upshift, gets lowered toescape, and the final event isshift+escape.This heuristic makes sense for printable characters (
Ashould produceshift+a), but it breaks named keys that happen to start with an uppercase letter.Expected behavior
Named keys should be case-insensitive. All of the following should send plain
escape:escapeEscapeESCESCAPEThe shift heuristic should (probably) only kick in for single printable characters like
A.Proposed fix
Normalize key names and aliases to lowercase in the computer-use layer before handing them to robotgo, with single-character inputs being left as-is so that uppercase letters like
Astill correctly produceshift+a.