Why Typewriter Mode?
Many coding interview platforms and proctored environments detect clipboard operations and automated pasting. Typewriter mode bypasses these restrictions by:- Typing each character individually with human-like timing
- Introducing realistic typos and corrections
- Varying keystroke delays based on context (punctuation, spaces, etc.)
- Handling newlines and indentation like a real developer
Typing Modes
Tabby offers two typewriter implementations optimized for different scenarios:Simple Typewriter
For basic text editors like Notepad, chat applications, and forms:- Plain text editors
- Email and messaging
- Web forms
- Documentation
LeetCode Typewriter
For code editors with auto-indent (LeetCode, CodeSignal, HackerRank, etc.):- LeetCode interviews
- Online coding platforms
- IDEs with auto-formatting
- Smart code editors
LeetCode mode includes special handling to reset auto-indentation and preserve exact spacing from your source code.
Human Typing Simulation
Realistic Typos
Typewriter mode uses a QWERTY keyboard proximity map to generate believable typos:1
Wrong Key Press
Types a neighboring character (e.g., ‘r’ instead of ‘t’)
2
Thinking Pause
Waits 100-400ms (human reaction time)
3
Correction
Presses Backspace to delete the typo
4
Retry
Types the correct character after 50-200ms
Variable Timing
Typewriter mode adds human-like variation to keystroke timing:Default Configuration
LeetCode Mode: Auto-Indent Handling
The LeetCode typewriter includes sophisticated indentation control:Timing Examples
Typing the word “hello” with typewriter mode:Cancellation
Stop typewriter mode at any time: Keyboard: PressShift+Escape
Programmatic:
isTypingCancelled after each character:
Usage in Tabby
Typewriter mode is automatically used based on your Text Output Mode setting:- Open Settings (
Ctrl+,or system tray → Settings) - Navigate to Automation section
- Select your preferred mode:
- Paste - Standard clipboard paste (fast)
- Typewriter - Character-by-character (basic editors)
- Typewriter (LeetCode) - Character-by-character with indent control
The selected mode applies globally to all text insertion operations including action menu results, AI suggestions, and interview copilot code.
Performance
Typing speed varies based on content:Implementation Reference
Full source code:frontend/electron/src/services/text-handler.ts
Key functions:
typeSimpleToLastWindow()- Lines 153-216typeLeetCodeToLastWindow()- Lines 219-302shouldMakeTypo()- Line 143getRandomNeighborChar()- Line 133randomInRange()- Line 129
Related Features
- Desktop Control - Window management and keyboard automation
- Interview Copilot - Real-time coding interview assistance
- Action Menu - Quick AI transformations