|
||
Front End Processors, or FEPs, enable users to input characters that are not on the device keyboard. For most phones a FEP is essential for entering anything anything other than numbers. Typically FEPs are used for processing multi-tap keypad input, predictive text, handwriting recognition, voice recognition and character selection.
FEPs are ECOM plugins that implement the FEP interface. They typically use the UI Control Framework to intercept key and pointer events which are processed as necessary and the output sent to the current application. Applications do not need to be aware that a FEP is present.
Note that until the introduction of Platform Security FEPs were implemented as polymorphic DLLs. Significantly, under Platsec, FEPs require a capability of All - Tcb as they may be loaded by any application.
The API has five key concepts: FEP base, control input capability, FEP-aware text editor, foreground observer and focus observer.
The FEP base, CCoeFep
, is the abstract base
class from which a FEP is derived. A FEP is typically implemented to have a
window owning control, the standard Symbian OS means of receiving input events.
The UI Control Framework uses a control stack to determine the order in which
controls are offered key events. A FEP places its control on the stack with a
high priority such that it has first access to key events.
The Window Server provides support for windows that float above other windows in the application. This allows a FEP to have a visible presence.
Each running application has its own instance of the current FEP. Support is provided for synchronising attributes across all instances so that there appears to be only one.
A FEP must be able to discover the input-capabilities of the target
control(s) to determine what output is appropriate. Input capabilities are
provided by TCoeInputCapabilities
.
A text-editing control can be designed to be closely integrated with
a FEP by implementing MCoeFepAwareTextEditor
. Most of the
Symbian provided editing controls do this. The use of in-line editing in FEP
aware editors can mean that a FEP has no obvious visible presence at all.
A FEP can implement an observer interface to be notified when the
application goes into the foreground or background. The foreground observer is
MCoeForegroundObserver
.
A FEP can implement an observer to be notified when controls under
the FEP gain or lose focus. The FEP can then discover the input-capabilities of
the current target control(s). The focus observer is
MCoeFocusObserver
.