Skip to content
  • Jarkko Koivikko's avatar
    Modularize virtual keyboard and add an extension interface · 59208eda
    Jarkko Koivikko authored
    
    
    With the extension interface it is possible to add new input
    method and/or languages without recompiling the Qt Virtual
    Keyboard plugin itself.
    
    The existing input methods are now isolated into plugins.
    So installing a new input method is a matter of copying the
    corresponding extension plugin to the plugins/virtualkeyboard
    directory (and any collateral required by the extension plugin
    itself).
    
    This change also renames the HunspellInputMethod to
    DefaultInputMethod. This change is necessary because some other
    extension plugin may want to provide the default input method
    instead.
    
    Implementation plan
    ===================
    [x] Create virtualkeyboard-private module
    [x] Create plugin library
    [x] Define interface for input method plugin
    [x] Define interface for keyboard layouts
    [x] Move existing input methods and layouts to plugins
        [x] HangulInputMethod
        [x] HunspellInputMethod
            [x] Maybe create a private library for sharing
                between HunspellInputMethod and LipiInputMethod
        [x] LipiInputMethod
        [x] OpenWnnInputMethod
        [x] PinyinInputMethod
        [x] T9WriteInputMethod
        [x] TCInputMethod
    [o] Rename some C++ classes (too generic name?)
    [x] Think again replacing the QtVirtualKeyboard namespace
    [x] Update documentation
        [x] General instructions for creating a plugin
        [x] For the C++ interfaces too (previously removed)
    
    [ChangeLog][Important Behavior Changes] Introduce an extension
    interface for the virtual keyboard. All the current input methods and
    some special keyboard layouts (e.g. Hunspell, OpenWnn, etc.) have been
    moved to extensions. The extension interface allows third party to
    create a new input method without having to modify or rebuild the
    virtual keyboard. In addition, this change makes it possible to add
    features and languages independently by copying the desired extension
    to the system.
    
    [ChangeLog][Important Behavior Changes] Introduce a virtualkeyboard
    module, which can be linked against an extension plugin. This module
    provides the C++ API necessary for creating an input method.
    
    [ChangeLog][Important Behavior Changes] Wrap the entire virtual
    keyboard API into Qt namespace (e.g. QT_BEGIN_NAMESPACE/QT_END_NAMESPACE).
    
    Task-number: QTBUG-57602
    Change-Id: I449f4429109f596a7a1df7517c81f97d4aada27c
    Reviewed-by: default avatarMitch Curtis <mitch.curtis@qt.io>
    59208eda