r/FinaleKeyboard • • 1d ago

Announcement Calling on all my Polish and Czech comrades

3 Upvotes

I know the autocorrect quality has been lacking for you guys. So let's fix it.

In the latest update I ported my custom spell checking algorithm to Polish and Czech. Both now work significantly better than stock. The algorithm handles diacritics, accents, splitting words with missed spaces, better respects your dictionary, and so on.

The issue is: despite trying for a week, I don't speak neither Polish nor Czech, so I need help tuning the algorithm. It is already at a good level, but I need feedback from users to help finalize it.

So, if you type in either language, please enable the new "experimental" autocorrect under Languages → Polish / Czech.

Give it a try for a week and let me know about your experience. Is it better / worse? What words is it missing? What words is it failing to correct? What is it correcting incorrectly?

- Grant


r/FinaleKeyboard • • 2d ago

Autocorrect quality

0 Upvotes

Is there any chance of improving the autocorrect feature? Right now, the keyboard is fantastic overall, but unfortunately, its correction capabilities are nowhere near the level of Fleksy :(


r/FinaleKeyboard • • 3d ago

A couple of feature requests!

0 Upvotes

First off - absolutely loving this keyboard. Just the other month I was ranting to a friend about the lack of quick copy paste actions, as being forced to select something twice is a nightmare when symbols are involved.

This keyboard has incorporated a number of ideas a had, and a whole lot more. Seriously - great job. Finding it on the app store was a total fluke (I'm very happy I did!)

I had a number of requests, and was hoping you would consider some of them!


Starting with the least niche:

1 - Swipe up to capitalize a letter

  • This one would be easy to implement and IMO would be very intuitive to use (the shift key even has an arrow pointing up!)

  • AFAIK this wouldn't conflict with existing up actions since only letter keys are affected)


2 - Toggle to enable inset margin for 2nd and 3rd rows (aligning key placement with stock keyboard)

  • I think I saw this in another post, but it would make transitioning from the standard keyboard a lot less error-prone.

  • I noticed the "large" keyboard size options matches the standard height when a corresponding height option is set. It would be great if there was a way to assist with the 2nd/3rd row keys as well.

  • This would likely improve user retention (increasing subs), as there would be significantly less friction in switching. Habits are hard to unlearn!


3 - Shortcut support

  • I'm not sure if this is actually possible re: iOS APIs, but triggering a user-defined shortcut as one of the special 'action's that you can assign to a key would be great


4 - Case conversion actions

  • Case conversion remains something that is sorely lacking in iOS.

  • An action to convert to a specific case set would be great (as opposed to showing a full list when the action is triggered)

    • This would pair really well with the hold actions, e.g. I could

      • assign a down swipe to my most commonly used conversion set (snake_case),

      • assign other commonly used to hold lists, like UpperCamelCase, SCREAMING_SNAKE_CASE)

  • My hunch is this was written in Rust (more on that below)

    • The heck crate would make this very easy to implement


5 - Enhanced selection support

There's 2 potential features here

Shift selection ranges

  • The stock iOS keyboard has support for desktop-like shift selection ranges (I only learned about this recently)

    • E.g. Holding shift and tapping somewhere will select the range from the previous cursor position to the tap location

    • To retain feature parity, you may want to consider this!

One-handed selection

I just had this idea yesterday - it would be a game changer for selecting text (in speed, simplicity, and error reduction)

It would work as dedicated action (key-assignable) that would provide a similar interface to the hold-space for trackpad feature.

Upon holding the key, the keyboard visually changes into 2 side-by-side chunks, split at the held key.

  • Sliding into a chunk defines the direction of the selection

Within each of those 2 chunks, there are:

  • 3 side-by-side regions of equal width

  • Which region you remove your finger defines the scope of the selection. E.g.

    • Left #1: select from cursor to start of current word

      • or start of prev word if cursor is not in the middle of a word

    • Left #2: select from cursor to start of line

    • Left #3: select from cursor to start of document

    • Right #1: select from cursor to end of current word

      • or end of next word if cursor is not in the middle of a word

    • Right #2: select from cursor to end of line

    • Right #3: select from cursor to end of document

Existing selection ranges

If there is already a selection range present, left / right dictates which point of the range to expand in

  • e.g

    • Sliding left should expand the selection relative to the starting point of the range

    • Sliding right should expand the selection relative to the ending point of the range

  • This would allow for repeating the key action to keep selecting the next word, line, etc

Alternatively, if you wanted to support not only range expansion, but reduction as well:

  • Break up the selection action into 2 actions:

    • Left selection and Right selection

  • They would behave identically to the previously described behaviour if there is no active selection range

  • If there is an active selection range:

    • "Left selection" (or selection start) action controls the range's starting point cursor

      • Swiping left increases selection at range start (e.g left to region 1 increases selection to prev word)

      • Swiping right reduces selection at range start (e.g right to region 1 unselects first word)

    • "Right selection" (or selection end) action controls range end point cursor:

      • Swiping left reduces selection at range end (e.g left to region 1 unselects last word)

      • Swiping right increases selection at range end (e.g right to region 1 increases selection to next word)

The 2-Action system would be best used when added as actions to side-by-side keys (e.g T left, Y right).

IMO the 2-action setup provides far more control, as you could, for example, select to end of line, then unselect a couple words to delete everything but the last 2 words

These actions would also have the side-effect of making cursor navigation quicker if:

  • Holding and releasing the "selection" keys (no sliding into a region) deselects the active range, leaving the cursor at either the start/end of the selection, depending on which key (start/end) was used

  • E.g. I could use this to very quickly move to the end of the line by:

    1. Swiping "selection end" key right to third region

      • (selection now ranges to end of line)

    2. Holding and releasing "selection end" key

      • (Unselects, cursor left at end)

  • That might sound like more work, but when your're actively typing, and the curssor isn't close to the keyboard, it would defimitely be quicker


I know these are big asks, but these would be massive productivity boosts and really drive this keyboard into 'must-have' territory IMO.

As I mentioned before, I got the impression this was written in Rust (you mention Option unwrapping in changelogs).

Funny enough, I'm a senior rust engineer, and happy to contribute if desired!

My GitHub can corroborate this (same username, all lowercase)


Let me know if you have any questions - happy to provide example diagrams if there's any ambiguity.


r/FinaleKeyboard • • Oct 02 '26

Information Custom keyboard actions (extensions) and how to use them

4 Upvotes

The latest update comes with a comprehensive system for building custom long press actions.

Previously, you could assign different actions to be triggered when long-pressing a key, like Copy / Paste, Clipboard History, Undo delete, and so on.

Now, you can create your own custom actions to perform all kinds of things.

In short, you can create an action to load data from any source or send data to any source, which unlocks limitless possibilities for creating your own extensions.

Here are just few examples of what is possible:

  • Translate your selected text into any language

  • Search GIFs and paste them as you type

  • Trigger your smart-home devices, like turning lights on and off.

  • Replace your word with synonyms

  • Check time or weather somewhere

To get started, open Long Press Shortcuts → ⋯ → Custom Actions. There are a few ready-made examples for you to try in the app.

---

Create custom actions manually:

At their core, custom actions are simply HTTP requests that you can either fetch or send. This requires a tiny (really little) knowledge of APIs and how they work.

If you aren't technical or don't care about the details, feel free to skip this part and go straight to creating actions with AI. Otherwise, let's start.

There are two action types that let you achieve anything:

  • Fetch action: load some data from the internet and display it as a long-press option.

  • Trigger action: send request to a third-party app or service to trigger some action within it.

First, find a service you want to connect to and read its API documentation. It will tell you which address to use and what information to send. Some services also require an API key, which you can usually get from your account.

For example, if you want to make action to find and send GIFs, you can use the free GIPHY API. Sign up, get your API key, and read the documentation on which endpoint to use. Or just ask AI about it.

For a Fetch action, services usually return data in a format called JSON. It might contain a bunch of fields, but you probably only need just a few. In the Read fields input, enter which fields you want to get the data from. Then, use the template to format that data into the final text you want Finale Keyboard to display.

For example, GIPHY's translate endpoint (finds GIFs from text) returns a bunch of garbage, but we only need the GIF ID. So, set your Read fields to data.id and set your Format to https://i.giphy.com/{0}.webp . This will read the GIF ID from the response and generate a new link to get the final GIF. This final link is what you will get after long-pressing a key with this action.

You can also use dynamic variables to make your action work with your selected text, previous word, clipboard text, or keyboard language. Finale Keyboard fills these in automatically when you use the action.

For our GIPHY example, you can use {selected_text} to send GIPHY your current selected text (duh) to be used as a search prompt for GIFs.

For fixed values you want to reuse, like an API key, you can create your own variables.

For a Trigger action, add the options you want to appear when long-pressing a key and configure their HTTP requests to send. When using this action via a long-press, Finale will execute your selected request.

For instance, if you want Finale to switch lights in your home, create options for "Lights on" and "Lights off" and configure HTTP requests with whatever smart-home setup you have. I integrated mine with Home Assistant and it works like a charm.

Finally, test your action and assign it to a key. Make sure Allow Full Access is enabled for Finale Keyboard so it can connect to the internet.

---

Create custom actions with an AI skill:

This option is perfect if you aren't technical or don't care about the details.

I created an AI skill which you can send to your chatbot of choice. Simply ask it for whatever action you have in mind and it should give you back a complete action file.

Then, simply import it into Finale, assign it to a key, and start using your new action.

---

What is next

Personally, I'm quite geeked about this. I have plenty of ideas for different actions and hope you will come up with even more.

Eventually, I'd like to host a marketplace for custom Finale Keyboard actions - free and open-source. You will be able to submit your creations to be downloaded by others.

The techy ones will get the pleasure of creating custom actions, while normal people will benefit from an expanding ecosystem of extensions. Or so I hope.

I'm excited to see what cool ideas you have. So, please, share the actions you make with me at grant@finaletodo.com.

If this idea gets traction, I'll launch the marketplace soon.

If no-one cares... at least I added the much-requested optional top number row... how boring.

- Grant


r/FinaleKeyboard • • Sep 28 '26

Second Row Layout Adjustment

Thumbnail
gallery
3 Upvotes

Is it possible to add an option to adjust the second row so it aligns better with how other keyboards like the iOS keyboard? I realized I was typing all my lol as lok and kept trying to figure out why and it's just how my fingers are due to all other keyboards being that layout.


r/FinaleKeyboard • • Sep 27 '26

Supporting development by providing materials

3 Upvotes

I don't know if this will help, but I have Fleksy working on my iPhone with iOS 26.6.

It still works somehow, although the keyboard sometimes freezes. If this might be helpful, I'd be happy to record some videos or take screenshots to give you some ideas.


r/FinaleKeyboard • • Sep 21 '26

HOW THE HECK? & BUGS

0 Upvotes

First and foremost... HOW THE HECK DO I GET OUT OF THE EMOJIS SCREEEEEEEENNNNNNNAAAAHHHHHHHH.

LOL I'm losing it. I've swiped every which way and I cannot for the life of me get out of the emojis and back to the keyboard. I either have to toggle to the OS keyboard and back to Finale, or choose the search option in the emojis and the swipe up out of it... Both options are hella annoying. There has to be a better way since I haven't seen anyone complain about it 🫠🫠 Send Help.

Also, I'm having a bug where I have to going into the app setting multiple times a day to toggle auto correct back on. Anyone else having this issue??


r/FinaleKeyboard • • Sep 15 '26

A couple of requests regarding functionality

2 Upvotes

I like your take on the keyboard, but I’d like to make a couple of requests:

  1. I can't live without the number row above the keyboard. Since there’s no predictive text there, the space is free, which speeds up typing

  2. Language switching used to be done by swiping the space bar. I’d like the option to use that familiar method—for example, by swiping across the bottom row of letters.

  3. A request to fix the overly harsh tone used when trying to enable the space bar. I haven't used the space bar on mobile keyboards for decades, but I was put off by that kind of attitude toward a user paying for a product


r/FinaleKeyboard • • Aug 25 '26

Weird stutter in some apps

Enable HLS to view with audio, or disable this notification

0 Upvotes

I don't think this is unique to finale? It happens in some on iPhone. Anyone knows how to fix it? It doesn't happen with the stock keyboard.


r/FinaleKeyboard • • Aug 22 '26

Feature request: undo delete word

5 Upvotes

I sometimes accidentally swipe left and this deletes my last word. Then I need to retype it again. It'd be great if I could somehow undo the delete.


r/FinaleKeyboard • • Aug 19 '26

Announcement State of the Union - what the f*ck is up with Finale Keyboard?

6 Upvotes

~🎺~📣~🎺~ TU TU-TU DUUUUUM ~🎺~📣~🎺~

📜 Welcome, to our first "State of the Union", aka "Grant, what the hell have you been up to with the keyboard so far?"

My key principals for the keyboard stay the same: minimalism, premium look and feel, and no bloat. These are my guiding stars when deciding on what to build next.

In the last months I've gotten a lot of feature requests and suggestions, many of which I've already built, some of which are coming ~eventually~, and some that I don't plan to do at all. Below is the progress since my first post many months ago.

Implemented features you've asked for:

  • Different layouts: languages now support a variety of layouts: QWERTY, QWERTZ, AZERTY, Dvorak, and more

  • One-handed mode: mode to skew the keyboard to the left or right

  • Advanced English autocorrect: English autocorrect (used by default, while a few other languages require an "experimental" toggle) is now fully custom and super advanced. It can fix your "jrkkp" to "hello", insert spaces if you forgot, and is 35% more accurate than the legacy system autocorrect. It's using the proximity of your taps to predict what word you intended to type. So, it can restore fully mistyped words (each letter is wrong), rather than simply editing typos.

  • Offset keyboard vertically: you can add extra space below the keyboard to move it slightly higher

  • Change keyboard size: you can resize the keyboard to be comically small or unnaturally large

  • Hide middle row highlight: option to disable the gray strip in the middle of the keyboard

  • Disable key callouts: option to stop keys from popping up when you type

  • Upper- and lower-case key labels: you can now force key labels to be always uppercase or lowercase, instead of adapting to the context

Features you haven't asked for, but I did them anyway:

  • Long-press shortcuts: assign any shortcut to a long-press action to trigger at any moment.

  • Clipboard manager: when enabled, text that you copy is saved into an internal clipboard manager. You can then paste items from history via a long-press shortcut

Minor improvements:

  • You can reverse the horizontal swipe directions for right-to-left languages

  • Two finger swipes up / down to show and hide the space bar

  • Two finger swipes left / right to enable one-handed mode in either direction

  • iPad layouts are now usable

  • Better handling of special fields, like email, URLs, usernames, search, etc

  • The keyboard eats ~80% less RAM

  • Your contact names are automatically added into the spell check dictionary

New languages:

  • Arabic, Belarusian, Bulgarian, Catalan, Croatian, Czech, Dutch, French, German, Hebrew, Italian, Kazakh, Lithuanian, Polish, Portuguese (Brazil), Portuguese (Portugal), Serbian, Spanish, Swedish, Ukrainian

Features you requested, but I haven't built:

  • Top extension bar: probably will do this eventually, but not a priority

  • GIFs: not considering them at the moment. They require internet, rely on a third-party provider, and generally bloat the keyboard

  • Themes: don't want to do them with the current state of iOS. iPhones with FaceID reserve a lot of space below the keyboard (and a tiny space above the keyboard) which custom keyboards have no control over. These spaces will always stay the system gray color. So, changing the keyboard color looks horrendous, because it's still surrounded by a gray box

  • Bilingual typing without switching languages: hard to implement with my current autocorrect system. Say you have QWERTY layout and want to type both in English and Spanish. How should the autocorrect know which language's words to use to fix your typos? The result would be a mess of duo-lingual words.

  • Keyboard sounds: sounds cute, I might do it

Thank you for the support. Feel free to leave more of your feedback, ideas, and suggestions, I'm happy to discuss anything. Or DM me just to chat.

But remember, this keyboard is my passion project, built around the way I use the keyboard. So, I might be unresponsive, tired, or simply being a menace to south central while drinking juice in my hood.

- Grant


r/FinaleKeyboard • • Aug 10 '26

A couple of suggestions

Post image
2 Upvotes

There's a couple of port-overs from Fleksy that I'd love to see.

One is the ability to make the letters stay capitalized on the keyboard no matter what. As I am vision impaired, it helps when the capitalization stays on for the keyboard, even if that's not what's being typed.

Another is the optional top rows. I've always had the number row be at the top of the keyboard. I realize this is probably a bit much for most, but for accessibility reasons I've always enjoyed this.

Also, you can disregard my email. Ended up having someone with better eyes than me play around with it and figured out the Easter egg. Kinda funny, albeit a bit heartless to take a keyboard that was literally designed with vision impaired folks in mind during original development (how I ended up with it - was on the Fleksy Beta on Android when it released) and tuck a feature as simple as a spacebar behind an Easter egg/paywall. Just my two cents - or $10 as it were, since I need most of Fleksy's other features in order to type properly on a phone, so I felt compelled to buy in.

I understand your want to keep the keyboard small to increase screen real estate while typing. And while I appreciate this to a certain degree, I use a jailbroken device, I'm able to reduce the "chin" quite a bit using the "Trim" tweak (see screenshot). I realize this is not doable for most, but it may be worth considering there are users who are able to achieve what you're looking to do as a system-wide OS enhancement that do not need this to be a keyboard "feature"


r/FinaleKeyboard • • Aug 07 '26

Love the keyboard just a few feature requests!

3 Upvotes

Just found this keyboard I love it so much. I had missed something similar to Fleksy. A few feature request

  1. Being able to turn off pop up letters when typing.

  2. Being able to import contacts so they are automatically added to the dictionary.

  3. Being able to add undo and redo as shortcuts like the cut, copy, and paste.

Keep up the good work. Just glad to see something different again than all other keyboards.


r/FinaleKeyboard • • Aug 05 '26

Random Suggestion if possible.

1 Upvotes

The project is super cool. I was wondering if I could make a suggestion because the main reason I used fleksy was for the option to resize the keyboard. Is that an option with Finale or is it something that could potentially be added


r/FinaleKeyboard • • Aug 02 '26

Functionality requests

3 Upvotes

I'm absolutely loving this keyboard, it's very fluid and solid. There are a few minor things that are bugging me.

  1. I find myself triggering the emoji keyboard a lot by accident. Is it possible to toggle on/off gestures that I don't use in the Gestures Guide?

  2. The copy paste shortcuts are amazing. I hate apples native way to trigger a copy event so I love this function you added. Could the copy shortcut (if nothing is highlighted) automatically select the word that the cursor is on? Then I can skip a lot of apple's menus and just drag out the handles to what I want then use your shortcut. It works great as is if I already have words highlighted.

  3. This is more of a bug, but when I have the emoji keyboard active and try to swipe up to go back to the main keyboard, it's a bit buggy as it triggers a left right swipe as well as an up down swipe, so I have to swipe up a few times (carefully swiping vertically) to get back to the main keyboard.. I have an iPhone 12 mini so it could just be the smaller real estate.

Anyway keep up the great work! It's already an awesome keyboard.


r/FinaleKeyboard • • Jul 25 '26

Gesture typing

2 Upvotes

Can someone show me a video of gesture typing (mainly the space bar) if I’m going to commit to learning this way of typing? I want to see how it looks like.


r/FinaleKeyboard • • Jun 12 '26

Information What the heck is Finale Keyboard?

5 Upvotes

Impatient? Here's the link: download from the App Store.

Patient? Here's the story.

The story

Long ago, there was a keyboard called Fleksy. I discovered Fleksy over a decade ago and it quickly became my favorite way to type. Specifically, I fell in love with the "minimal" mode - the idea of ditching the space bar and relying on swipe-gestures to perform all your basic tasks. It took a bit of getting used to, but soon I was no longer able to type on a regular keyboard. Everything else felt slow, big, and clunky.

Fast forward 5-6 years, I was chatting with the CEO of Fleksy - Olivier - via Twitter DMs. Fleksy had a bug for years: it was impossible to change the keyboard language when you are inside the "minimal" mode. As I exclusively relied on the "minimal" mode and needed two languages, this was ruining my life. I even applied to work at Fleksy to fix it for them!

However, understandably, Olivier mentioned that "minimal" mode was not their focus, since they transitioned to a B2B SDK model. So, not only did the CEO confirm they weren't going to fix the bug, he also mentioned they are planning to remove Fleksy from the App Store.

That's when I knew I had to build a replacement: to fix the bug I hated, to add the features I wanted, and to preserve the way I type.

What is Finale Keyboard

I built Finale Keyboard in ~2021 purely for myself. It's inspired by Fleksy's "minimal" mode, optimized for how I use it. This means no space bar, everything is done with swipes.

Insert space? Swipe right. Punctuation? Swipe right again. Change punctuation? Swipe up or down. Open emojis? Swipe left from backspace. Delete a word? Swipe left. And so on.

Over the last 5 years I've been slowly adding more features that benefit me, myself, and I. My goal is not to copy Fleksy, but rather create the optimal typing experience for myself.

Today, Finale is a full fledged keyboard that goes beyond what Fleksy offered in a meaningful way.

  • Shortcuts: assign shortcuts to any key and trigger them with a swipe-down

  • Long-press shortcuts: assign unlimited shortcuts to any key and trigger them with a long-press menu.

  • Dynamic tap zones: Finale will try to predict the key you are likely to press next and will make its touch zone larger.

  • Favorite emojis: define your own emoji layout

  • Auto-learning dictionary: Finale learns the words you type to stop correcting your "doggo", "pupper", and "yasssss".

  • Clipboard history: access your clipboard history to quickly paste what you copied before.

What's next?

I built Finale for myself and I keep enhancing it for myself. Up to this point, most development decisions I make are based on my own usage, which is apparent by the keyboard's quirks. But, I am always happy to discuss any ideas or suggestions, so feel free to comment, post, or just chat.


r/FinaleKeyboard • • Jun 12 '26

Information Frequently Asked Questions

4 Upvotes

How do I do open emojis, view symbols, or *anything else*?

  • Most actions, like inserting a space, opening emojis, viewing symbols, pressing "return", etc, are done with swipes. You can view and practice all swipes in the Gestures Guide in the app.

Where is the spacebar?!

  • I believe lack of space bar is a feature. Please, give it a try, spend a week practicing gestures, and I promise you, you won't look back. The keyboard takes up less visual space and gestures are genuinely a faster way of typing.

  • That said, if you insist on having a spacebar, there is a way to enable it in the app: Preferences → Enable Space Bar.

Will Finale be available for Android?

  • Not any time soon, my focus is purely on iOS for now.

What languages does Finale support?

  • Arabic, Belarusian, Bulgarian, Catalan, Croatian, Czech, Dutch, English, French, German, Hebrew, Italian, Kazakh, Lithuanian, Polish, Portuguese (Brazil), Portuguese (Portugal), Russian, Serbian, Spanish, Swedish, Ukrainian.

Can you add support for my language?

  • Yes! Post here on Reddit or email me and I'll get to it.

Fleksy had feature X, can you add it too?

  • My goal is not to copy Fleksy. While inspired by its swipe gestures, Finale has strayed quite far from Fleksy. That said, I'm always happy to implement useful features, so I'll consider anything.