Skip to content

Latest commit

 

History

384 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wurstfinger

App Store TestFlight License: MIT

The keyboard for fat fingers.

The name “Wurstfinger” is a nod to the “fat finger” problem—thumb-heavy typing on small screens.

Wurstfinger is a MessagEase-inspired keyboard for iOS written in SwiftUI. It brings thumb-friendly gestures from Thumb-Key and the original MessagEase layout to Apple devices, including circular gestures for uppercase letters, return swipes for typographic punctuation, and compose rules to generate accented characters.

Download

Download on the App Store

Requirements: iOS 17.0 or later

Lower case layout (light)

Light Theme

Lower case layout (dark)

Dark Theme

Numbers layout (light)

Numbers Layer

Numbers layout (dark)

Numbers Layer (Dark)

Why Wurstfinger?

Traditional QWERTY keyboards waste screen space and require precise tapping. Wurstfinger uses a 3×3 grid with swipe gestures, so your thumbs travel less and hit the right key more often—even on small screens. Once you get past the learning curve (a few days of practice), you'll type faster and with fewer errors.

Beta Testing

Want to try the latest features before they hit the App Store? Join our public TestFlight beta!

Join TestFlight Beta

  • Nightly builds with the latest features from the develop branch
  • Help shape the keyboard with your feedback
  • Early access to experimental features

Features

  • Multi-language support: 26 keyboard layouts — Arabic, Croatian, English, Estonian-Finnish, Finnish, French, German, Greek, Hebrew, Hindi, Italian, Japanese (Hiragana), Japanese (Katakana), Korean, Persian, Polish, Portuguese, Russian, Spanish, Spanish-Catalan, Swedish, Tagalog, Thai, Ukrainian, Urdu, and Vietnamese (with Telex input)
  • MessagEase layout with symbol and numeric layers
  • Compose engine that reproduces Thumb-Key's combination triggers (e.g. ' + a → á)
  • Return swipes for punctuation and math symbols (?¿, *, /÷, ...)
  • Circular gestures on keys to insert uppercase letters
  • Drag gestures for cursor movement and progressive deletion
  • Customizable settings: Adjust haptic feedback intensity, keyboard scale, and key aspect ratio
  • Onboarding flow with interactive setup guide

FAQ

Wondering why something doesn't work as expected? Check out the Frequently Asked Questions for common issues and their solutions.

Localization

The app UI is localized into 23 languages. The Expert section and the imprint are English only — see Localization Scope.

Getting Started

Prerequisites

  • Xcode 16 (or newer)
  • iOS 17 SDK

Building

Open the project in Xcode:

xed wurstfinger/wurstfinger.xcodeproj

or build from the command line on macOS:

cd wurstfinger/wurstfinger
xcodebuild -scheme Wurstfinger -destination 'platform=iOS Simulator,name=iPhone 16' build

Running Tests

The project includes unit tests for gesture handling and compose logic. Run all tests with:

cd wurstfinger/wurstfinger
xcodebuild test -scheme Wurstfinger -destination 'platform=iOS Simulator,name=iPhone 16' -only-testing:WurstfingerTests

Note: Some tests require an available iOS Simulator. Adjust the destination to match your local simulator name if necessary.

Note: The screenshot-generating UI tests (ScreenshotTests, wurstfingerUITestsLaunchTests) skip themselves unless the test runner sees GENERATE_SCREENSHOTS=1. Pass TEST_RUNNER_GENERATE_SCREENSHOTS=1 to xcodebuildscripts/generate-screenshots.sh does this for you.

Linting

SwiftFormat, SwiftLint and markdownlint run in CI on every pull request. To get the same checks before committing, install the tools and the pre-commit hook:

brew install swiftformat swiftlint markdownlint-cli2
./scripts/install-hooks.sh

The hook formats staged Swift files, auto-fixes what it can in staged Markdown, and fails the commit on whatever is left. To check every Markdown file by hand, run this from the repository root:

markdownlint-cli2 "**/*.md"

Installing the Keyboard

  1. Build and run the Wurstfinger scheme on a device or simulator.
  2. The app includes an interactive onboarding guide that walks you through:
    • Adding the keyboard in Settings › General › Keyboard › Keyboards
    • Enabling "Allow Full Access" for cursor control and deletion features
    • Testing the keyboard in the practice view

Project Layout

wurstfinger/
├─ README.md
├─ LICENSE
├─ wurstfinger/                # Xcode project root
│  ├─ wurstfinger.xcodeproj    # Project file
│  ├─ wurstfinger/             # Host app (minimal)
│  ├─ wurstfingerKeyboard/     # Keyboard extension sources
│  ├─ wurstfingerTests/        # Swift Testing unit tests
│  └─ wurstfingerUITests/      # UI + screenshot tests

Naming across the codebase follows docs/GLOSSARY.md — the canonical vocabulary for modes, slots, gestures, and the pipeline. Check it before adding a type.

License

This project is licensed under the MIT License.

Acknowledgements

About

MessagEase-inspired SwiftUI keyboard for iOS with compose rules, return swipes, and fat-finger friendly gestures.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages