Learning and practice game for keyboard navigation
Translation of the German guide. The app interface is in German; key on-screen labels are kept in German below.
Version 1.6 · As of: 27 May 2026
Note: This English guide is a translation of the German game guide. The app's user interface is in German; where a specific on-screen label matters, the German wording is kept (e.g. the buttons
NEU,SIM,Ok).
flinqe finga trains fast and precise navigation on virtual keyboards. The goal is to type a given word with as few cursor movements as possible and as quickly as possible.
The cursor starts at a fixed position. Use the control pad to move it to the target key and confirm with ✓. Repeat this until the word is fully entered.
+------------------------------------------+
| flinqe finga 12:34:56 = | <- Header (compact)
| Player name |
+------------------------------------------+
| 05 * L2 * Mittel Description i | <- Level row: keyboard-no. . L# . name + description
| |
| H A L L O | <- Target-word tiles
| |
| [ ... virtual keyboard ... ] | <- Keyboard with red cursor
| |
| [ Input: h a _ ] | <- Input line
| |
| 00:12.34 * 8 moves | <- Stopwatch + move count (top)
| [NEU] Best time: 7.77 s * 8 mv [SIM] | <- Best-time bar (below) - share the row
| |
| /\ |
| < Ok > | <- Control pad
| \/ |
+------------------------------------------+
| hello world it is me | <- Marquee with the target phrase
| Opt: 14 (*) | <- Status: Opt value left, optional hint
+------------------------------------------+Level row: Shows keyboard-no. · L# · name in the badge with the description next to it (e.g. “01 · L3 · Mittel”). The keyboard name is shown in short form — the Tastatur_ prefix is dropped; Tastatur_001 becomes “01”, Tastatur_009 becomes “09”, Tastatur_101_ger becomes “101”. If the level name is just a number (“L1”), it isn’t shown twice. Tapping opens an info dialog with keyboard number, keyboard description, level number and level description (10-second auto-close timer). On keyboards with fewer rows the row text grows automatically (≤ 4 rows ≈ 30 % larger).
Stopwatch + best-time bar: The stopwatch (with move counter) and your personal best for the current phrase share the height of the NEU button. If no best time exists yet, the stopwatch stands alone in the centre.
Footer row 1 (yellow, scrolling): The target phrase as a marquee.
Footer row 2: Opt: N shows the optimal number of moves for the current phrase. If (*) follows, the optimal solution can only be reached with the help of the cursor keys ◀/▶ — these phrases are especially interesting for advanced players (see “cursor strategy” below). During game events (“undo”, “simulation running”, “time’s up”) a short hint appears to the right of the Opt value.
Wraparound is always active — at the edge the cursor jumps to the opposite side.
| Key | Function |
|---|---|
Arrow keys | Move the cursor on the keyboard |
Enter | Press the highlighted key |
Numpad 8 2 4 6 | Move the cursor (alternative) |
Numpad 5 | Press the key (alternative) |
| Gesture | Function |
|---|---|
| Tap the arrow buttons | Move the cursor on the keyboard |
| Tap Ok / check mark | Press the highlighted key |
| Tap <- | Undo the last cursor movement |
| Swipe left/right on the keyboard | Load the next / previous layout |
| Swipe up/down on the keyboard | Make the grid brighter / darker |
When diagonal navigation is enabled, a 3×3 control pad appears with 4 additional diagonal keys (on all keyboards, regardless of their shape):
diagonal-up-left up diagonal-up-right
left Ok right
diagonal-down-left down diagonal-down-rightAfter opening the app, a random target word appears. The timer is stopped – the first movement starts it.
Navigate to the desired key with the control pad and confirm with Ok. The game automatically detects when the input matches the target word.
| Symbol | Function |
|---|---|
BackSpace | Delete the last character |
Del | Delete the character at the cursor position |
Enter | Confirm the input |
Space | Insert a space |
Shift | Shift (single uppercase letter) |
CapsLock | Caps Lock (permanent uppercase) |
left right | Move the text cursor within the input line |
The left/right keys on the keyboard move the text input cursor. This lets you insert letters in any order. Example for the word “BRIEFE”: type R, I, E, F, E first, then press left several times to insert the B at the start. On certain keyboard layouts this saves many moves.
On correct input the completion overlay appears with score, time and moves. From there:
If a level has a time limit and the time runs out, “TIME UP” appears. Again starts a new attempt.
The time limit adapts to the difficulty of the phrase: the longer the optimal solution, the more time you get (but at least the level base time). This keeps even a difficult phrase fairly solvable. The simulation (optimal path, SIM) always runs through completely without a time limit — it shows the solution and never fails because of the clock.
Score = 10,000 - (moves x 10) - (time in ms / 200)Minimum value: 0 points (the score never goes negative).
| Factor | Effect | Tip |
|---|---|---|
| Moves | -10 points per cursor movement | Find the most direct paths |
| Time | -1 point per 200 ms | Type briskly, don't hesitate |
Example: word in 25 moves and 18 seconds: 10,000 - 250 - 90 = 9,660 points
Moves are more costly than time: 5 extra moves cost 50 points; 5 extra seconds cost 25 points.
The overlay also shows the deviation from the theoretical optimum (+N = N moves more than optimal). The optimal number of moves is calculated automatically.
For each combination (keyboard, rule set, phrase, diagonal, mode) the game stores exactly one entry — the best result. A new attempt automatically overwrites the old entry if it is better. In the completion overlay a golden NEW HIGH SCORE banner appears when you set a new record.
High scores are ranked separately for one-handed and two-handed play:
If you mostly play one-handed, you can specifically improve your own one-handed best results.
Phrases with a (*) star are those whose optimal solution uses the text cursor (◀/▶ on the keyboard). They are technically more demanding and interesting for advanced players.
High scores in the menu opens the high-score screen with three tabs. All tabs show the entries in the same card layout.
You can recognise the two online tabs by the globe symbol with an extra symbol: 🌐+filter = filtered to the current combination, 🌐+up/down arrows = all entries in order.
Tab “Online” (globe + filter — current combination):
Tab “Online” (globe + arrows — all entries):
Tab “Mine” (local entries):
“Mine” and “Online” are separate lists: “Mine” is your personal archive (it stays even if others are better online), “Online” shows only the respective rank-1 holder. A synchronisation never deletes local entries.
If the server is currently unreachable, the score is cached in an offline queue. The next time the app starts with a connection, these entries are submitted automatically — a short message (“N offline high scores synchronised”) confirms the sync. The server decides per entry whether it beats the current best result.
The operator can send messages to you individually or to all players (e.g. notes about new versions, replies to your questions). On the next app start, a dialog appears with subject, body and a reply field (max. 100 characters). Tapping “Verstanden” marks the message as read on the server and stores your reply. Each message is shown to each player only once.
If you get a new phone, or want your name changed, you can carry your account over without losing your place on the leaderboard:
As protection against misuse, a foreign name cannot simply be taken over — the approval is done by the operator.
The player settings contain an entry “Lokale Highscores hochladen” below the online-account block. It pushes all of your locally stored “Meine” high scores to the server in one go. The server only accepts entries that are better than what is already there (or that are still missing) — no local data is changed. Useful after a server data loss or after a device change, when you still have your local bests but the server doesn’t.
Each high-score entry contains:
| Field | Meaning |
|---|---|
| Target word | The typed word / phrase |
| Keyboard ID | Which layout was used |
| Navigation mode | Rule set (Rs01 / Rs02) |
| Diagonal | Was diagonal navigation active? |
| Mode | One-handed / two-handed (from the control-pad position) |
| Cursor path | Was the (*) trick optimal? |
| Moves / time / score | Core values |
| Optimal moves | Theoretical minimum |
| Player name | Local name |
| Build number | App version |
Note: Wraparound is always active — high scores are therefore comparable across all games.
Open via menu icon → Settings.
Local display name (max. 30 characters). Appears in the game header. High scores are only saved if a name is entered. Blocked terms are rejected during online registration.
Selection of the active keyboard and level. Optionally: include your own keyboard file via Load keyboard file.
With auto-layout switched on the app ignores the system font scaling from the Android accessibility settings and uses its own, device-independent defaults. The game then looks the same on every handset without you having to fine-tune anything per device.
While auto-layout is active the following size sliders are hidden entirely (key font, secondary-label font, max. font enlargement, scale key font to key height, target-tile size). Only after turning auto-layout off do they reappear and become individually adjustable.
| Setting | Function |
|---|---|
| Key font size | Global font-size multiplier (50–200 %) |
| Secondary-label font size | Size of the Shift labels on the keys (50–200 %) |
| Max. font enlargement (system) | Upper limit for the system font size (Android accessibility) |
| Scale key font to key height | Per-key font scaled proportionally to the rendered key height |
| Target-tile size | Size of the target-word tiles (16–44 px); font scales with it |
Max. font enlargement (system): Android has its own font-size setting in the accessibility options. flinqe finga adopts it so the app scales up/down with it. Very high system levels can however make the layout overflow. With this slider you set how much the app font may be enlarged at most — in 10 steps from ×1.30 to ×1.75 (default ×1.75). Lower = definitely no overflow; higher = larger font, but at very high system levels it can get tight. The lower limit is fixed so the font never becomes unreadably small.
In the player settings under Appearance you’ll find three colour pickers, each tinting a whole UI area:
#00BCD4.#00BCD4.#E94560.Each picker opens when you tap the corresponding colour swatch. Changes take effect immediately, no restart needed.
Controls how the cursor jumps at line boundaries when pressing arrow-up/-down.
Diagonal navigation: enables the four diagonal directions ↖↗↙↘; the control pad then becomes a 3×3 grid. With and without diagonal, separate high scores are kept.
| Setting | Function |
|---|---|
| Sound | Acknowledge direction keys with a tone |
| Sound volume | Slider 0–100 % |
| Vibration | Acknowledge direction keys with vibration |
| Key click | Acknowledge the Ok key with a click sound |
| Click volume | Slider 0–100 % |
| Intro sound | Play the voice announcement on app start |
| Vibration intensity | Light / medium / strong |
| Mode | Description |
|---|---|
| One-handed left | Control pad at the left edge |
| Two-handed | Control pad centred (default) |
| One-handed right | Control pad at the right edge |
| Setting | Function |
|---|---|
| NEU button | Show the quick-restart button next to the timer |
| Undo button | Undo the last cursor movement (button next to the control pad) |
| Highlight next key | Marks the key to be typed next in green. This is only a guide to the next character in word order — not necessarily the path that needs the fewest moves (see the “i” in the settings) |
| Auto-advance | Advance automatically after completing a level (0 = off, 1–15 sec.) |
Swipe left or right on the keyboard to switch between the available layouts.
Keyboards & levels opens the level-selection screen with all keyboards and levels.
| ID | Description |
|---|---|
| tastatur_001 | Standard QWERTZ |
| tastatur_002 | QWERTZ extended (Del key, more special characters) |
| tastatur_003 | Compact layout without number row |
| tastatur_004 | Compact layout, shifted |
| tastatur_005 | ABC grid (uppercase, no Shift) |
| tastatur_006 | Special-character keyboard |
| tastatur_007 | Mirror – QWERTZ mirrored horizontally |
| tastatur_008 | QWERTZ with CapsLock in the middle of the home row |
| tastatur_009 | Cursor – left cluster + cursor bridge + right island |
| ID | Concept |
|---|---|
| tastatur_101 | Islands – vowels on top / bridge / consonants below |
| tastatur_102 | Spiral – a–z clockwise on a 6×5 grid |
| tastatur_103 | Hub – E in the geometric centre, frequent letters as neighbours |
| tastatur_104 | Chessboard – vowels/consonants in an alternating pattern, incl. umlauts |
| tastatur_105 | Wraparound – frequent letter pairs at opposite edges |
Plan paths ahead The timer only starts on the first movement. Look at the target word and plan the path before you begin.
Use direct paths The shortest path between two keys often runs diagonally — when diagonal navigation is active, you can exploit this on every keyboard.
Use wraparound Wraparound is always active: the cursor jumps from the edge straight to the opposite side. On keyboards with frequent letter pairs at opposite edges (e.g. tastatur_105 “Wraparound”) this saves many moves.
Cursor strategy The left/right keys on the keyboard move the text input cursor. On certain layouts it pays off to type the letters that are close together first and then insert the distant letter with left — instead of navigating back and forth.
CapsLock instead of Shift For words with several consecutive uppercase letters (abbreviations: NASA, HTML, USB) CapsLock pays off instead of pressing Shift repeatedly — especially on tastatur_008, where CapsLock sits centrally in the home row.
Mind the cursor position after typing After every key press the cursor stays on the last pressed key. Choose letters in an order that leaves short paths to the next target.
Use hub letters On the hub keyboard (tastatur_103) E sits in the centre. Words with many E's have extremely short paths — E is always at most 1–2 steps away.
Track the optimum value The footer shows Opt: N — the theoretically minimal number of moves. The completion overlay shows your deviation from it (+N) as a clear indicator of room for improvement.
flinqe finga was developed with Flutter · © 2026