A versatile, QML-based virtual keyboard for embedded applications
SomcoKeyboard is a lightweight, production-ready on-screen virtual keyboard designed for embedded systems. Whether you're building touch interfaces for medical devices, industrial systems, or consumer products, SomcoKeyboard delivers a smooth typing experience with built-in theming, multi-language support, and seamless Qt integration.
β¨ Zero configuration needed β just integrate and go. Comprehensive customization available for advanced use cases.
| Feature | Details |
|---|---|
| π¨ Built-in Themes | Ready-to-use light and dark themes β no setup required |
| ποΈ Customizable Appearance | Easily define and switch custom themes for your brand |
| π Multi-Language Support | 17+ keyboard layouts included (Latin, Cyrillic, Greek) |
| β‘ Embedded-Friendly | Optimized for performance and minimal resource usage |
| π Qt Integration | Simple, seamless integration into Qt Quick projects |
| π Open Source | MIT licensed β free to use, modify, and extend |
-
Add as a Git submodule:
git submodule add git@github.com:somcosoftware/somcokeyboard.git 3rdParty/SomcoKeyboard
-
Include in your CMake:
add_subdirectory(3rdParty/SomcoKeyboard)
-
Set the input method in
main.cpp:int main(int argc, char** argv) { qputenv("QT_IM_MODULE", QByteArray("somcokeyboard")); // ... }
-
Use in QML:
import QtQuick.SomcoKeyboard 1.0 ApplicationWindow { InputPanel { id: inputPanel z: 99 y: Qt.inputMethod.visible ? (parent.height - height) : parent.height width: parent.width Behavior on y { NumberAnimation { duration: 300 easing.type: Easing.InOutQuad } } } }
SomcoKeyboard comes with two pre-configured themes:
No configuration needed β just use them!
InputPanel {
themeName: "defaultDark"
}Override built-in themes with your own:
InputPanel {
themeName: "myTheme"
themes: [
KeyboardTheme {
themeName: "myTheme"
backgroundColor: "#222"
btnBackgroundColor: "#333"
btnTextColor: "#FFF"
// ... other properties
}
]
}
β οΈ Note: When custom themes are provided, default themes are not added automatically.
| Language Name | Language Code | Layout File |
|---|---|---|
| Bosnian (Cyrillic) | CyBs | CySrBsLayout.qml |
| Bosnian (Latin) | LtBs | LtSrHrBsLayout.qml |
| Croatian | Hr | LtSrHrBsLayout.qml |
| Czech | Cs | CsLayout.qml |
| Danish | Da | DaLayout.qml |
| Dutch | Nl | NlLayout.qml |
| English | En | EnLayout.qml |
| Finnish | Fi | FiLayout.qml |
| French | Fr | FrLayout.qml |
| German | De | DeLayout.qml |
| Greek | El | ElLayout.qml |
| Italian | It | ItLayout.qml |
| Polish | Pl | PlLayout.qml |
| Portuguese | Pt | PtLayout.qml |
| Russian | Ru | RuLayout.qml |
| Serbian (Cyrillic) | CySr | CySrBsLayout.qml |
| Serbian (Latin) | LtSr | LtSrHrBsLayout.qml |
| Spanish | Es | EsLayout.qml |
| Swedish | Sv | SvLayout.qml |
| Ukrainian | Uk | UkLayout.qml |
All layouts are extensible β easily add or customize languages for your needs.
Customize keyboard behavior with simple QML properties:
InputPanel {
availableLanguageLayouts: ["En", "De", "Uk"]
languageLayout: "En"
persistentShift: false
autoCapitalize: true
}We love contributions! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/YourFeature - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/YourFeature - Open a Pull Request
Please follow standard Qt coding conventions.
- π Fix bugs
- π Add new keyboard layouts
- π Improve documentation
- π¨ Enhance UI/UX
- π‘ Suggest features
Somco Software (previously Scythe Studio) is an embedded and cross-platform software development company with a strong focus on Qt and C++, delivering reliable, high-quality solutions for regulated industries, with particular expertise in medical devices. We are an ISO 9001 and ISO 13485 certified software house, specializing in GUI development, Linux-based systems, and advanced connectivity solutions. Somco Software is an official Qt Service Partner and a trusted partner of leading hardware manufacturers.
|
|
|
|
We support projects from design to delivery, offering UX/UI design, custom Yocto Linux images, and development in Qt as well as LVGL and TouchGFX. We also help with software modernization, training, and technical consulting. With a practical, developer-focused approach, we build efficient, reliable solutions that fit real project needs.
Need help with anything? Weβve got you covered. Our professional support services are here to assist you with. For more details about support options and pricing, just drop us a line at https://somcosoftware.com/en/contact.
Stay updated on the latest in Qt and QML development:
- π Somco Software Website
- βοΈ Somco Software Blog
- π Somco Software LinkedIn
- π₯ Somco Software YouTube
- Uwe Kindler - Initial work - githubuser0xFFFF
- Andrea Ricchi - CuteKeyboard inspiration - AndreaRicchi (from amarula/cutekeyboard)
- Oleksandr Movchan - Somco Software contributions - SomcoSoftware


