Details
Keys go to the field that has focus. Before typing, read a screenshot and check the
cursor is in the right field; if not, tap that field first.
Key holds and gaps vary, averaging about 43 ms per character, with short pauses
at spaces, tabs and newlines. No typos or extra characters are added.
--stdin accepts no positional text. One final LF or CRLF is removed by default;
spaces, tabs and other LF newlines are preserved. LF sends Enter; tab moves focus.
--keep-final-newline preserves LF, and --enter sends an additional Enter.
All input is validated before connecting or sending any key. Unsupported control
characters, invalid UTF-8, accents and emoji fail without echoing input.
Messages: Enter in the To: field adds the recipient but keeps focus there. Tap the
message field, check the screenshot, then type "..." --enter (Enter sends).
Only US-ASCII: no accents or emoji. iOS autocorrect may change a word; check with
--screenshot before --enter.
XCTest mode: types any text (accents, emoji) into the field that has focus; tap the
field first so the keyboard shows. WebDriverAgent does not check focus: with no field
focused type still says "typed" and nothing happens. Use --screenshot or --wait-text.
Password fields: while a secure field has focus, screenshots show the old screen
for 2-30 s. Type once, wait, or press key tab before you read the screen. Never
type again because the screen looks unchanged: that once doubled a password. Never
tap "Show password". To clear a secure field, tap it and press key backspace once
per character; cmd+a did not clear it reliably.
SIM PIN sheet (Settings > Cellular > SIM PIN) ignores the Bluetooth keyboard: tap
the on-screen keypad digits, one dot per tap, then Done ONCE. If the PIN is rejected
or the result is unclear, stop and ask the user: 3 wrong PINs lock the SIM (PUK).