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          
---------------------------------------------------------------------


Reply via email to