Provides a framework for components that enable the input of characters not supported directly by the keyboard (if present). This includes hand-writing and voice input.
FEPs are polymorphic DLLs that implement the FEP interface. They typically use the control framework defined in the UI Control Framework to intercept key and pointer events. These are processed as necessary, and the output is sent to the application. Applications receiving this do not need to be aware that a FEP is present.
The API has five key concepts: FEP base, control input-capabilities, FEP-aware text editors, foreground observer, and focus observer.
The FEP base is the abstract base class from which a FEP is derived. It is typically implemented to have a window, and a control, the primary EPOC abstraction for screen areas that receive input events. The UI Control Framework has the concept of a control stack to determine the order in which controls are offered key events. A FEP puts its control with a high priority at the top of the control stack, so that it has first access to key events. The Window Server provides support for windows that float above other windows in the application.
Each running application has its own instance of the current FEP. Support is provided though for synchronising attributes across all of these instances.
The FEP base class is CCoeFep
.
A FEP can read the input-capabilities of the target control(s) to
determine what output is appropriate. This is provided by
TCoeInputCapabilities
.
A text-editing control can be designed to be closely integrated
with a FEP by implementing MCoeFepAwareTextEditor
.
CEikEdwin, for example, implements this interface.
A FEP can implement an observer 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
.