Input methods

== Introduction ==
There are, in theory, several ways to input text on pmOS already. These are: 
* Matchbox-keyboard - a lightweight on-screen keyboard for X11.
* QT virtual keyboard, used in Plasma Mobile.
* Onboard - an on-screen keyboard for touch screen or for mobility impaired users.
* Hardware keyboards, e.g. on devices such as the Nokia N900 or the Droid 4.
** See also, :Category:Slide-Out_Keyboard_Handset
* Bluetooth and other wireless keyboards (if support exists for Bluetooth devices).
This page intends to track these as well as other, novel, input methods.
== Conventional on-screen keyboards ==
=== Onboard ===
Ubuntu used to come with Onboard, which is actually designed not for tablets, but as an assistive technology in conjunction with an external pointing device.
==== Settings ====
Notable options in the settings:
* General
** check "Auto-show when editing text" (and confirm Gnome Accessibility enabling)
** check "Show floating icon when Onboard is hidden" (and move the floating icon to a location it doesn't disturb, rather central)
** uncheck "Show tooltips"
** uncheck "Show status icon"
* Window
** check "Dock to screen edge"
* Layout
** Small: For small sized devices
** Compact: For medium sized devices
** Phone: Works well for login screen and unlocking screen
* Theme
** e.g. Nightshade
==== Command line options ====
For LightDM and xfce4-screensaver, command onboard -e -l Phone can be used. Option -e embeds the keyboard. Option -l defines the layout to be used. For LightDM configuration see Display_manager#LightDM. For xfce4-screensaver, the keyboard command can be set in the screensaver settings.
=== matchbox-keyboard ===
For usage in xfce4-screensaver, use command matchbox-keyboard --xid for embedding.
=== Maliit ===
Maliit is a cross-platform text-input system based on client-server model. Input methods are supported by plugins, which means it is quite extensible.
=== Other ===
Other options might include:
* corekeyboard
* caribou
* GOK (The Gnome on-screen keyboard), which apparently has won awards.
* Florence, a virtual keyboard for X11.
* xvkbd, a virtual keyboard for X11, with word completion and a few other features.
* wvkbd sxmo's official wayland keyboard.
* modified wvkbd onefinger keyboard.
* Squeekboard, Phosh's official keyboard.
* OSK Stub, next gen Phosh keyboard.
* Unfettered Keyboard, fork of androids unexpected keyboard with swipe support.
== CJK (Chinese Korean Japanese) IME ==
==== Hime ====
A CJK Ime that only support xorg
== Hardware keyboards==
It is often possible to connect a USB keyboard or mouse via the USB port of the device or using an OTG adopter. Hardware support for peripherals depends on the device, so consult the corresponding device page for further details.
=== Braille ===
The Orbit Writer
is an economical, portable, Bluetooth-enabled, Perkins-style keyboard.
It is optimized for 6-dot braille and has a number of additional buttons.
=== Chorded ===
GKOS is an implementation of a chorded keyboard that is semi-open. A chord for a musician is a combination of three or more notes that create a new note; the chorded keyboard is analogous to this in that key presses are created by combinations of a few key presses, albeit the GKOS method only uses single button presses or a combination of two presses.
* http://gkos.com/gkos/index-gkos-com.html
Unfortunately, GKOS's apps are not open-source. However, the standard itself is straightforward to implement either in hardware or software, and is entirely suitable for handhelds and PDAs.
According to its website, GKOS has been superseded by ComboKey. The ComboKey seems to apply some of the ideas behind the GKOS system to a user using the device single-handedly in a tight area.
* http://combokey.com/
=== Folding ===
==== Jelly Comb ====
The Jelly Comb Foldable Bluetooth Keyboard B003
is an economical, portable, folding keyboard with a built-in touchpad.
It supports both Bluetooth and USB.
=== DIY / Cyberdeck keyboard dock===
With enough effort, you can build a cyberdeck keyboard dock for your phone (for example : this )
== Handwriting/pointer-based systems ==
=== Graffiti and Quikwriting ===
Graffiti was the single-stroke handwriting system for Palm OS. It was the subject of a lawsuit from Xerox, which Palm lost.
Quikwriting was a research project that produced an alternative to the Graffiti method of text input. There is an open-source implementation called QWO. It is a little awkward to use, but it does work rather well, once one learns. See https://mrl.nyu.edu/~perlin/demos/quikwriting.html.
Other relevant links regarding Graffitti:
* http://blog.monstuff.com/archives/000012.html
=== Cellwriter ===
Similarly to Quikwriting, Cellwriter is the product of a research project. It is an accomplished handwriting system:
* https://web.archive.org/web/20160322130201/http://risujin.org/cellwriter/
=== Dasher ===
Dasher is a keyboard designed for when one only has a single pointing device and one wants to work quickly. To that extent it may be especially convenient for devices with styluses. It is free software and is designed also for accessibility to the impaired.
* http://www.inference.org.uk/dasher/DasherSummary.html
== Touchscreen ==
=== Simulate secondary click ===
There are different options available to generate a right mouse button click:
* Virtual keyboard onboard offers a button for right click. For availability and installation of onboard, see Input_methods#Onboard.
* Secondary click by a long touch can be achieved by package mousetweaks. It's not available on Alpine Linux or postmarketOS, needs to be compiled. When installed, the parameters can be tested in the terminal, e.g.: mousetweaks --ssc --ssc-time=0.5 --threshold=30 --daemonize. If the options are fine, the command can be added to the startup applications (how to do this depends on the user interface).
* Install package xdotool. In your user interface, go to the Keyboard Shortcut settings and assign command xdotool click 3 to one of the hardware buttons of your device. The hardware button now issues a right mouse button click at the current position of the pointer.
=== Simulate touchpad mouse ===
* TouchpadEmulator uses the touchscreen to emulate a laptop-style touchpad for cursor control with two finger right click, two finger scrolling, and tap and hold to drag. Uses volume keys to switch between touchpad and touchscreen modes. Very limited device support at the moment as device events are hard coded. Must be installed from source as it's not packaged for Alpine/postmarketOS.
== Miscellaneous ==
* GNOME's design page concerning on-screen keyboards has some of these and a few other items, not all of them freely-licensed.
* Literki keyboard, a keyboard for X11 that overlays over the current window, which may be convenient for handhelds, but may not be very accessible.
* Enscrebi input method, similar to CellWriter.
* GridPad input method, yet another grid-based handwriting system.
* OpenMoko Wiki's overview of input methods in a wish-list format.
* Vogel and Baudisch, 2007 - 'Shift: A Technique for Operating Pen-Based Interfaces Using Touch'.
* 'Keyboard Debate' article on OpenMoko Wiki
* Fcitx5 rime on pinephone postmarketOS blog post about setting up foreign language input support (Chinese, Japanese, etc)
Category:Technical Reference
Category:Peripherals