You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Source of truth: the public declarations in the in-repo frameworks
EasyEngineCore and EasyKeyKit β there is no generated schema or
interface file. This page narrates that surface; if the two disagree, the
source wins. EasyKeyApp is the executable and its types are not public API
(protocols such as TranslationProviding are app-internal seams, not
libraries).
Naming drift to be aware of when reading issue-tracker vocabulary: there is
no KeyboardOptions type β keyboard behavior is InputSettings +
TypingOptions; and the task of per-app "Smart Switch preferences" is the
SmartSwitchPreference record kept by SmartSwitchStore, not a type called
SmartSwitchPreferences.
Dependency direction is enforced by architecture fitness tests:
EasyKeyApp β EasyKeyKit β EasyEngineCore; EasyEngineCore imports no
AppKit, SwiftUI, or Combine (see reference.md).
Typing engine
One streaming engine consumes raw keystrokes and emits edit instructions.
The buffer is recomputed from source keystrokes on every edit, which makes
backspace, repeat-to-undo, and word restoration exact. With
literalTechnicalTokens enabled, a token starting with a technical prefix
(/, @, #, !, :) at a word boundary is passed through
untransformed until the token ends.
Example: feeding the engine the keystrokes v, i, e, t, s with input
method Telex and encoding unicode yields a buffer of viαΊΏt, and the output
instructs the caller to replace the current focused text. This exact case is
one of the conformance fixtures (Fixtures/sample-telex.json) exercised by the
test suite.
Encoding conversion
Type
Public surface
Converter
conversion entry point between encodings
ConverterTransform
transform cases (e.g. Unicode β legacy)
ConverterConfiguration
source/destination encoding pair
VietnameseEncoding (protocol), EncodingFactory
public encoding protocol and factory; the shared codec (EncodingCodec) is internal to EasyEngineCore
Schema migration (SettingsMigration, the stepwise schemaVersion bump) is
internal to EasyEngineCore β it is no longer public API, though the
version-bump loop remains exercised by tests.
bundleIdentifier, workarounds set (also emptyCharacterInsertion, chromium, unicodeCombiningOutput, spotlightSelection, alternateEmptyCharacter)
Deprecated operations
Operation
Deprecated in
Removed in
Replacement
none
β
β
β
No API is currently deprecated; removals of internal settings keys (for
example the legacy chromiumBrowserBundleIdentifiers and
quickStartEndConsonant decode aliases) are handled by tolerant decoding
inside the option structs, not by public API churn.