Copaky iconCopaky

How we got here

Copaky's feature set didn't come from a whiteboard. Here's roughly how we decided what to build, in three parts: what people told us, what we tried and set aside, and what we ended up building.

What people told us

Before writing a line of new code, we spent a stretch of time reading — not brainstorming user stories, but going through reviews, forum threads and open issues, in English, Japanese and Italian, about the keyboard apps people already use. The goal was narrow: find out what a keyboard is missing today, not what we'd personally like to build.

One theme came back constantly, in every language: people want a clipboard history that lives on the device and survives a reinstall without needing a cloud account. For a lot of people, it's the whole reason to look for a third-party keyboard in the first place. Right next to it, on the same threads, sat a more cautious voice: distrust of exactly that kind of feature, because clipboard managers have a documented history of leaking sensitive data, and granting a keyboard "Full Access" is unsettling with good reason — some keyboard apps really have done questionable things with that permission.

A third pattern was specific to people typing in Italian, or switching over from Android. What Italians were actually complaining about turned out to be less about the layout and more about order and reliability: the accented vowel that comes up first on a long-press often isn't the one people use most, and fast typing loses characters or gets silently rewritten by autocorrect. Android switchers, separately, kept asking for one small, specific thing: numbers visible on the top row, without having to leave the letter keyboard.

What we tried and set aside

A few ideas didn't survive contact with either the platform or our own rules for what we're comfortable shipping.

We looked at making clipboard capture fully automatic — reading whatever is on the pasteboard the moment the clipboard tab opens, no tap required. iOS itself pushes back on this: reading the system clipboard without a clear, user-initiated action triggers a system-level paste prompt, and we didn't want to design around hiding that dialog from you. We kept capture behind an explicit tap instead — the keyboard only reads a value when you ask it to, and otherwise only notices that something changed, never what it is.

We also looked at richer on-device conversion assistance beyond azooKey's existing kana-kanji engine. For a first release we set that aside: a keyboard extension that lives inside another app's process has a genuinely tight memory budget, and a heavier model didn't belong in v0.1 while we were still getting the basics right.

For custom tabs, azooKey upstream can pull ready-made layouts from a community library over the network. We removed that path entirely. It's a legitimately useful feature for a lot of people, but it would mean the keyboard extension making a network request — and "the extension makes no network calls" is one of the few claims we weren't willing to soften for convenience. Custom tabs are still fully supported; they're just imported from a file you already have, not fetched on the fly.

What we built, and why

What we ended up building lines up closely with the first section, on purpose. Clipboard history stays on the device, needs no account, expires unpinned items automatically after a week, and skips secure fields entirely — capture only happens when you tap for it. Full Access stays optional and off by default: basic typing, Japanese conversion and themes all work without it, and the keyboard doesn't ask for a permission it isn't using.

For Italian, rather than building a whole new keyboard layout, we fixed the specific thing that was reported broken: the order of accented characters on long-press now puts è ahead of é, and the rest of the accent set follows the same logic for the other vowels. A separate "Use Italian" setting — on by default when the phone's first preferred system language is Italian, off elsewhere — adds Italian to the language-switch key and starts suggesting words from an Italian dictionary — the key layout itself doesn't change, because the request was never about the layout in the first place.

The optional number row does exactly what it says: small digits above the letter row, long-press to type one, off unless you turn it on. And because a fork earns most of its credibility on privacy rather than on features, the keyboard extension has exactly one entitlement — the App Group that lets it talk to the companion app — and no networking code at all. That part isn't a marketing line; it's a constraint we designed everything else around.

Copaky is a fork of azooKey (MIT) by Keita Miwa (ensan) and contributors, reworked around a strict on-device, no-network model. Thank you, azooKey.