Skip to content

somcosoftware/SomcoKeyboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

155 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎹 SomcoKeyboard

License: MIT Built with Qt

SomcoKeyboard

A versatile, QML-based virtual keyboard for embedded applications


Overview

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.


✨ Features

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

πŸš€ Quick Start

Installation

  1. Add as a Git submodule:

    git submodule add git@github.com:somcosoftware/somcokeyboard.git 3rdParty/SomcoKeyboard
  2. Include in your CMake:

    add_subdirectory(3rdParty/SomcoKeyboard)
  3. Set the input method in main.cpp:

    int main(int argc, char** argv) {
        qputenv("QT_IM_MODULE", QByteArray("somcokeyboard"));
        // ...
    }
  4. 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
                 }
             }
        }
    }

🎨 Themes

Built-in Themes

SomcoKeyboard comes with two pre-configured themes:

  • defaultLight β€” Light theme (default) Default Light Theme
  • defaultDark β€” Dark theme Default Dark Theme

No configuration needed β€” just use them!

Switch Themes

InputPanel {
    themeName: "defaultDark"
}

Create Custom Themes

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.


🌍 Supported Languages

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.


βš™οΈ Configuration

Customize keyboard behavior with simple QML properties:

InputPanel {
    availableLanguageLayouts: ["En", "De", "Uk"]
    languageLayout: "En"
    persistentShift: false
    autoCapitalize: true
}

🀝 Contributing

We love contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/YourFeature
  3. Commit your changes: git commit -m 'Add some feature'
  4. Push to the branch: git push origin feature/YourFeature
  5. Open a Pull Request

Please follow standard Qt coding conventions.

Ways to Contribute

  • πŸ› Fix bugs
  • 🌐 Add new keyboard layouts
  • πŸ“š Improve documentation
  • 🎨 Enhance UI/UX
  • πŸ’‘ Suggest features

About Somco Software (previously Scythe Studio)

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.

Qt Service Partner Clutch Profile ISO 13485 ISO 9001

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.

Professional Support

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.

Follow Us

Stay updated on the latest in Qt and QML development:

Authors

About

A QML based on screen virtual keyboard for embedded QML applications

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors