On 01/21/09 09:33 PM, Ienup Sung wrote:
> Template Version: @(#)sac_nextcase %I% %G% SMI
> This information is Copyright 2009 Sun Microsystems
> 1. Introduction
> 1.1. Project/Component Working Name:
> Virtual Keyboard Input Method
> 1.2. Name of Document Author/Supplier:
> Author: Naoyuki Ishimura
> 1.3 Date of This Document:
> 21 January, 2009
> 4. Technical Description
>
> OVERVIEW
>
> As an extension to the current IIIMF keyboard layout emulation feature [1],
> this project proposes to add GUI-based virtual keyboard on our desktop.
>
> Virtual keyboard is a graphical representation of computer keyboard on
> GUI desktop that can be summoned on as needed based on the current input
> mode and can be used to input characters by clicking on the graphically
> represented keys on the virtual keyboard.
>
> The virtual keyboard that will be delivered by this project will not only
> supply an additional way of inputting characters (by clicking on the keys on
> the virtual keyboard), but also allow individual users to create a new
> keyboard layout as a new emulation based input mode or customize the current
> and existing keyboard layout as needed so that they can re-map keys, assign
> a different character (or a set of characters) on a key, or do both on
> the current keyboard layout and keys.
>
> Once customized layout is saved with your specified name, it can be used
> persistently. User can create as many as custom layout they wish; and they
> will be usable for both at the virtual keyboard and, if chosen so, also
> with the physical keyboard.
>
> This feature has been asked by US government and EMEA customers specifically
> for Unicode/UTF-8 locales to aid multiscript input and also to allow user
> customization of the keyboard layouts. As we do not add any new features to
> CDE, in the same manner and context, we do not plan to back-port this to
> legacy codeset locales at this point unless we have a requirement with
> some specific revenue number attached. We also consider that the existing
> input modes and methods quite good enough and sufficient for such legacy
> codeset locales.
>
> Once approved by PSARC, we will also go through xDesign/HCI review so that
> the resulting GUI will meet Sun standard and be intuitive as much as possible.
>
>
> TECHNICAL DETAILS
>
> (1) User Interface:
>
> The virtual keyboard [9] which can be invoked from terminals or GUI desktop
> |
> menu has keyboard window and control panel as its main user interface
> |
> components:
> |
>
> - Keyboard window:
>
> This will be the main interface that users will use to see and interact
> with to input characters and also to customize with.
>
> Users can have and use multiple keyboard windows on their desktop.
> In terms of how to group and organize such multiple keyboard windows,
> there will be three different styles that one can choose from: stand-alone,
> internal frame, and tab styles. (For more details, please see the
> sub-section
> on the control panel at below.)
>
> Each keyboard window will show a keyboard layout with usual character and
> modifier keys based on the XKB symbol and geometry data of the current
> input mode. Users can select a specific XKB symbol, an XKB geometry, or
> both, such as "US/English" symbol, "Generic 101" geometry, and so on.
> [10, 11, 12]
>
> A character key will act like a push button and a modifier key will act
> like a toggle button as specified in the XKB data. Each key will show the
> currently effective character(s) based on the combined state of the key
> with the modifier keys. As an example, if Caps Lock key is in effect,
> the key for 'a' will show 'A'. (Please see "Appendix A: Visual effect with
> modifier keys" at pages 4 and 5 of [10].)
>
> The character(s) shown on the keys will also be customizable.
>
> When the keyboard window's context menu is brought up by clicking on
> |
> the right mouse button at the window, one can also choose to show or hide
> |
> the control panel, select symbol data, edit keys, and do some other
> |
> convenience operations directly. [11]
> |
>
> - Control panel:
>
> The control panel can be used to control keyboard window style and mode
> among other things as shown in [12].
>
> The style defines how keyboard windows are organized. As noted at the above
> sub-section, the following three different styles will be supported:
>
> -- Stand-alone frame style: Each keyboard will be displayed as a separate
> top-level window.
>
> -- Internal frame style: One or more keyboards will be displayed within
> a top-level container window as internal frame windows.
>
> -- Tab frame style: Each keyboard will be displayed in a tab pane of
> a top-level container window.
>
> Please see "Appendix B: Multiple view with different styles" at pages 5 and
> 6 at [10] for a couple of concept designs.
>
> The mode defines whether keyboard windows are in input mode or in
> design mode (i.e., edit or customization mode). When the current mode is in
> input mode, if one clicks on a key, associated character(s) will go to
> an application that had the input focus the last. While it is in design
> mode, users can edit the keyboard layout and keys for a customization.
>
> When "New Keyboard" button is pressed along with selections on symbol and
> geometry, a new keyboard layout (and thus a new input mode) can be created
> and saved.
>
> There will be also a check box for "Synchronize with physical keyboard"
> which can be used to instruct the current keyboard layout emulation input
> mode to follow the customized keyboard layout and keys on the virtual
> keyboard window.
>
> As noted earlier, some of the operations on the control panel can also be
> done via the context menu of the keyboard window.
>
> (2) Keyboard customization and keyboard data handling:
>
> When it is in design mode, the keyboard window will be used as the keyboard
> layout editor. For each key, users can specify a character or a set of
> characters by using an associated text field or by doing copy or swap
> |
> operations via drag-and-drop. (Using the same drag-and-drop, the copy
> |
> operation is done between two keyboards and the swap is done within
> |
> a single keyboard.)
> |
>
> When a user creates his own keyboard layout (symbol) data, it will be saved in
> the user's own directory ($HOME/.iiim/vkb/) as an XML file. It will have user
> specified layout name and will be sent to the input method server. (Similar
> effect will also take place if one customizes an existing keyboard layout.)
>
> At that time, input method switcher [2] will be notified to update its
> language list to include the newly created keyboard layout so that the user
> can select it from the input method switcher menu afterward.
>
> To make the customization persistent, it is one of the responsibilities of
> the IIIM start-up client program (/usr/lib/iiim/iiimx-settings-init) which
> will send the custom keyboard layout data, if any, to the input method server
> at the start of a new GUI desktop session.
>
> (3) Input mechanism on character(s):
>
> The character(s) from a virtual keyboard is passed as input method committed
> text to other applications. What that means is that the virtual keyboard
> generated text data can be any Unicode character or text and will not be
> restricted to XKeyEvent data of X11.
>
> [Virtual keyboard]
> |
> |
> character(s)
> |
> | +--character(s)--> [GUI client with last input focus]
> V /
> [Input Method Server]
>
> (4) Pre-defined keyboard symbol and geometry data:
>
> Virtual keyboard has pre-defined geometry and symbol data set that came from
> XKB geometry and symbol data [1]. As of today, they are stored separately in
> IIIM private directory and thus, during run-time, it does not need X11 XKB.
> The symbol data are shared with IIIMF keyboard layout emulation functionality.
>
> As previously discussed during the review of [1], once we have a set of
> interfaces established between IM and Xlib/X servers (especially Xorg and
> Xnewt) on the XKB operations, we will transparently replace this redundant
> component by using the future interfaces between the IM and the X servers
> so that there will be a single set of XKB data in the system for the above
> mentioned system components.
>
> (5) Candidates for future enhancement:
>
> The first implementation from this project will not include the following.
> They are possible candidates for future enhancement and we will come back
> again with new PSARC case(s) as needed:
>
> - System-wide availability of custom layout:
> Currently, the customized layout data is only for and per user.
> System-wide customization will be considered when there is a formal
> requirement.
>
> - Function keys and other features of physical keyboards:
> The virtual keyboard input method at this point aims only at character
> input. Emulating all functionalities of physical keyboard is not currently
> considered. Thus function key support and such will be considered when
> it is formally required.
>
>
> INTERFACE STABILITY
>
> There is no significantly notable interfaces imported. The project exports
> the following interfaces.
>
> Interfaces Stability Note
> ---------- --------- ----
> /usr/bin/iiim-keyboard Committed Virtual keyboard itself
> [9]
>
> /usr/lib/iiim/VKB.jar Project Private Virtual keyboard jar file
>
> /usr/lib/iiim/libiiimvkb_jni.so Project Private Virtual keyboard lib file
>
> /etc/iiim/geometry.vkz Project Private Virtual keyboard private
> data file
>
> /usr/share/gnome/help/iiim-keyboard/* GUI help file
> Project Private
>
> $HOME/.iiim/vkb/* Project Private Customized data
>
>
> RELEASE BINDING
>
> The project team asks for Micro/Patch release binding.
>
>
> REFERENCES
>
> [1] PSARC 2007/028 EMEA input methods with keyboard layout emulation
> [2] PSARC 2005/525 IIIMF upgrade to revision 12
> [3] Internet/Intranet Input Method Architecture:
> http://www.openi18n.org/subgroups/im/iiimf/whitepaper/whitepaper.html
> The same HTML file will be available at the case directory:
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/iiimf-whitepaper.html
> [4] Internet-Intranet Input Method Protocol (IIIMP) specification:
> http://www.openi18n.org/subgroups/im/iiimf/protocol/spec.html
> The same HTML file will be available at the case directory:
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/iiimp-spec.html
> [5] ASARC 1999/276 /usr/lib/im directory for platform independent Input Method
> Systems
> [6] ASARC 1998/515 Multi Script Input Support in UTF-8 locales
> [7] ASARC 1998/422 IIIMP - Internet/Intranet Input Method Protocol
> [8] ASARC 1997/359 Multilingual Input Method Server for X/Java/Corba
> [9] iiim-keyboard(1) man page:
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/iiim-keyboard.1
> [10] High-level Virtual Keyboard UI/Module design (v0.2):
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/VKB_design_02.pdf
> [11] Draft keyboard window screen snapshots:
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/Keyboard.png
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/Input-mode-context-menu.png
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/Edit-mode-context-menu.png
> [12] Draft control panel window screen dump:
>
> http://www.opensolaris.org/os/community/arc/caselog/2009/041/materials/ControlPanel.png
>
> 6. Resources and Schedule
> 6.4. Steering Committee requested information
> 6.4.1. Consolidation C-team Name:
> G11N
> 6.5. ARC review type: FastTrack
> 6.6. ARC Exposure: open
>
>
A couple of minor nits in VKB_design02.pdf
On page 3, first sentence after the "Virtual Keyboard" header:
"the the"
On page 4, right before the diagram:
"copy/past" -> "copy/paste"?
Otherwise, +1
--
---------------------------------------------------------------------
Rick Matthews email: Rick.Matthews at sun.com
Sun Microsystems, Inc. phone:+1(651) 554-1518
1270 Eagan Industrial Road phone(internal): 54418
Suite 160 fax: +1(651) 554-1540
Eagan, MN 55121-1231 USA main: +1(651) 554-1500
---------------------------------------------------------------------