Compose IME is an open-source Android InputMethodService framework and power-user keyboard engineered entirely with pure Jetpack Compose, solving native service lifecycle limitations.
Pure Compose
100% Jetpack Compose Android IME architecture
Zero Freezes
Rock-solid lifecycle state management & recomposition
Full Modifiers
Latching Ctrl, Alt, Shift, and ANSI terminal codes
Key Pain Point: Standard InputMethodService does not implement LifecycleOwner, ViewModelStoreOwner, or SavedStateRegistryOwner.
Engineered LifecycleInputMethodService to manually bridge Android service events to the RESUMED lifecycle state, alongside latching Ctrl/Alt/Shift/Fn terminal modifier engines and animated key components.
LifecycleInputMethodService properly manages LifecycleRegistry transitions across onCreate, onWindowShown, and onWindowHidden.
ComposeInputMethodService provides a clean onCreateInputView() returning ComposeView with view composition strategies configured.
The modifier state machine translates keypresses into standard ASCII control codes (e.g. Ctrl+C to 0x03, Ctrl+Z to 0x1A).
Compose IME provides the missing architectural foundation for building modern Android software keyboards in pure Jetpack Compose. By solving the InputMethodService lifecycle limitation, it enables developers to create responsive, customizable, terminal-ready keyboards with full modifier key support.
Our research revealed critical insights that informed our strategy and implementation.
LifecycleInputMethodService properly manages LifecycleRegistry transitions across onCreate, onWindowShown, and onWindowHidden.
ComposeInputMethodService provides a clean onCreateInputView() returning ComposeView with view composition strategies configured.
The modifier state machine translates keypresses into standard ASCII control codes (e.g. Ctrl+C to 0x03, Ctrl+Z to 0x1A).
SnippetEngine provides one-tap macro expansions for Git commands, Docker operations, and code templates.
Dark, OLED, and Material 3 theme configurations offer sleek visual styling out of the box.
Compose IME empowers Android developers to build cutting-edge custom keyboards using modern declarative Kotlin without wrestling with legacy XML or lifecycle freezing bugs.
A clear roadmap for implementing these strategies and next steps.
Add io.github.epheos:compose-ime dependency to your Android project.
Extend ComposeInputMethodService and implement the @Composable KeyboardContent() function.
Utilize TerminalControlRow and KeyboardKey components for responsive layouts.
Configure custom themes and snippet macro expansions.
Publish your custom keyboard to Google Play and F-Droid.
Get expert guidance implementing these strategies
Let's work together to achieve remarkable results for your organization.