Skip to content

Add custom keyboard extension for code input #11

@BillSteinUNB

Description

@BillSteinUNB

Summary

Create a custom keyboard extension optimized for coding with frequently-used symbols, making code input faster and more comfortable on mobile.

Context

Coding on mobile is challenging with a standard keyboard - constantly switching between letters and symbols (brackets, operators, etc.) slows down development. A custom keyboard tailored for code would significantly improve the mobile coding experience.

Proposed Features

1. Code-Focused Key Layout

Custom rows with common coding symbols:

  • Programming brackets: ( ) [ ] { } < >
  • Operators: = + - * / % & | ! ?
  • Punctuation: : ; , . " ' \ ~ ^`
  • Common pairs: => -> === !== <= >=
  • Quick access to: / * # @ $ _

2. Smart Features

  • Swipe gestures for common operations (delete word, capitalize, etc.)
  • Long-press for alternate characters (e.g., long-press " for ")
  • Number row toggle for quick digit access
  • Tab key for indentation
  • Auto-pairs for brackets and quotes

3. Language-Specific Layouts

  • Default (general programming)
  • Python-focused (colon, indentation-friendly)
  • JavaScript/TypeScript (arrow functions, template strings)

4. Integration

  • Works across the system (not just in WhisperCode)
  • Sync preferences with main app
  • Haptic feedback on key press

Technical Considerations

  • Use iOS Keyboard Extension API
  • Request "Full Access" for advanced features
  • Handle memory constraints of extensions
  • Support both light and dark modes

User Experience

The keyboard should feel fast and native:

  • Minimal latency on key press
  • Visual feedback for all inputs
  • Smooth animations
  • Responsive to different screen sizes

Alternative Approach

Instead of a full keyboard extension, consider:

  • An in-app custom input view/overlay
  • Custom toolbar with quick-insert buttons

Labels

  • enhancement
  • ios-specific
  • developer-experience

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions