Virtual Keyboard for Plasma desktop/screen locker

raffarti raffarti at zoho.com
Sat Mar 14 19:09:38 UTC 2015


Hello everyone,

this is about design and development of a virtual keyboard for plasma.
TOPICS:
  1)End-user features.
  2)Technical issues and solutions.
  
NOTE: this is not a statement of purpose, this is a request for help, you're 
invited to discuss every pixel of it.

INTRO:
As tablet pc owner, I can say that what plasma really needs is a keyboard for 
the screen locker, everything else (even login with kdm) can be done using any 
existing virtual keyboard (like onboard).
Also sddm needs it.
Currently I'm using a QML keyboard with a C++ plugin based on XTest (didn't 
tried to put it on the screen locker yet, though). It works great to me, but 
it's a rough implementation so I'm planning to rework it.
It would be great if it could be adopted for plasma (or compatible, at least), 
so I'd like to collect as many advices and minds as possible.

Basic Idea:
I'd like the keyboard to be able to works in as many contexts as possible 
(stand-alone or qt integrated), that is how I'd like it:
  -A QML wrapper.
  -A C++ plugin for QML.
  -One or more QML Models (one for each layout or layout type?).
  -A set of implementations for the QML Model (most likely one KDE and one 
plain QML).
  -A Set of C++ dynamic plugins, one for each implementation.
  -One keymap for IM, one for full physical keyboard emulation.

1)END-USER Features:
What I'd like to do is a virtual keyboard capable of switching between an 
Input Method mode (text based) and a physical emulation mode (Key event 
based).
An Input Method approach should be more reliable and easy to implement on a 
client application, supporting only text input, it should have a compact 
layout and allow extra features as spell checking/prediction/correction.
A physical emulation keyboard is useful for legacy environments, not designed 
for mobile, which makes large use of keyboard shortcuts.

My question is, which one means more to KDE? A text input only (IM) strategy 
could cover everything essential, has a typical compact layout optimal for 
small screens, but KDE is actually a desktop environment and a physical 
emulation would be useful for seasoned KDE user especially on devices such as 
2-in-1 and convertible tablets.
Which of those two ways has to be implemented first?

Desirable features:
-Seamless IM/emulation switching
-Editable keymaps
-Extra fancy plugins (probably integrated by QML directly)(e.g. virtual 
touchpad, applications integration, windows management,...)
-...?


2)TECHNICAL issues and solutions:

Warning: I'm not much experienced on those matters so anything follows could 
be inaccurate or wrong.

IM (text based) solution:
  -one key mapping per language.
  -key mapping based on UTF8 for printable characters + Qt::Key (or other 
enum/string/whatever) for action buttons (enter, backspace,...)
  -QInputMethod for Qt
  -XIM for X (or so I guess, just googled it yesterday)
  -Wayland supports IM AFAIK
  
Key emulation solution:
  -one key mapping per platform or one per language if based on Qt::Key (note 
that using native keycodes you should have immediate support for all native 
supported languages)
  -Qt doesn't provides any conversion form Qt::Key to UTF8, thus both Qt and 
X11 implementations will use XKB for keysym to utf8 translation
  -Moreover, both Qt and X11 implementations will require KKeyServer if key 
mapping uses Qt::Key
  -X11 implementation can be done using XTest library or using XSendEvent 
directly (caveat) or xcb equivalents. (please don't forget to discuss that 
point)
  -QCoreApplication::processEvent(...) or QCoreApplication::sendEvent(...)
  -Wayland I have no idea, but my guess is something similar to X exists.
  
For both a set of symbols or icons is needed to display non-printable keys.


Each part of this project should be modular and re-usable by similar projects, 
their interface should be as generic as possible.

Anyone willing to join the development is welcome (especially true for QML 
parts).

  Raffaele Pertile
  
P.S.
Is Maliit still dead?
---
raffarti



More information about the Plasma-devel mailing list