Skip to content

Implement key repeat for virtual keyboard#36

Open
mrinaldi wants to merge 2 commits into
Termix-SSH:mainfrom
mrinaldi:feature/repeat-keys
Open

Implement key repeat for virtual keyboard#36
mrinaldi wants to merge 2 commits into
Termix-SSH:mainfrom
mrinaldi:feature/repeat-keys

Conversation

@mrinaldi

Copy link
Copy Markdown

Overview

This PR adds long-press key repeat to the Termix Mobile virtual keyboard. Hold down arrow keys, backspace, delete, space, or Page Up/Down for fast input—like you'd expect on a real keyboard.

  • Added: Key repeat on long-press for navigation and editing keys
  • Added: Repeat settings in keyboard customization UI
  • Updated: Keyboard keys to handle long-press repeat
  • Updated: Input fields now have better tap targets for easier focus

Changes Made

Key Repeat Feature

  • Created a new keyboard-repeat-config.ts constant file and useKeyRepeat hook (React hooks with proper cleanup via refs)
  • Supports repeating: arrow keys, backspace, delete, space, Page Up, Page Down
  • Character keys are excluded so they still show the emoji/country flag menus
  • Default settings: 250ms before repeat starts, 100ms between repeats (slightly longer than desktop to feel natural on touch screens)
  • Added input fields to the keyboard settings UI so users can tune the behavior (delay + speed)

Small UX Improvement

  • Moved padding onto the TextInput itself in Input.tsx instead of wrapping it in a View. Makes focus input fields easier.

Related Issues

No specific issue.

Screenshots / Demos

(Feature is hard to screenshot—just try holding down any arrow key or backspace in a terminal to see it.)
repeating-keys

Screenshot of the new settings is below
image

Checklist

  • Code follows project style guidelines
  • Supports mobile (React Native for iOS + Android)
  • I have read Contributing.md

mrinaldi added 2 commits July 25, 2026 00:40
Repeat arrow keys, backspace, delete, space, Page Up, and Page Down on long press.

Create repeat interval and initial delay settings to control the long press.
Apply padding directly to TextInput instead of container View
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant