[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC] Text Input Management System
[RFC] Text Input Management System
Wed, 31 Mar 2004 18:58:44 +0900
Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1
I'm now developing a text input management system described in Apple's
The system primarily handles keyboard events, interpreting them and
into text or command (some of NSResponder's methods) for editable text
as NSTextView and NSTextField. In addition, the system is highly
key bindings are easily modified by editing/creating one or two text
an appropriate format, and, by writing your own input server, you get full
control over the text input management.
The system mainly consists of three classes: NSInputManager,
NSTextView (or any views which conform to the NSTextInput protocol).
In GNUstep, we already have these classes; however,
(1) NSInputManager doesn't accept a file format of key-bindings as seen in
(2) Although our current NSInputManager and NSInputServer classes conform to
the protocol(s) specified for constituting the system, the actual
of the required methods are stubs. Accordingly, they won't work as
in Apple's document.
(3) Because of (2), our NSTextView isn't made so smart yet as that of Cocoa.
Consequently, we can't fully enjoy the rich functionality as promised in
To address these problems, my general idea is to divide the problems
following four phases to conquer them:
(1) Give real implementations to NSInputManager and NSInputServer, and
a replacement of the current input system.
(2) Modify NSApplication and NSResponder in such a way that they accommodate
the coming input management system. (An input server is designed to be
launched from the main menu of an application. Thus NSApplication is
(3) Write a fully featured input server fulfilling the requests (or messages
specified by the NSInputServiceProvider protocol) from one or more text
conforming to the NSTextInput protocol. Such a server would be a prototype
of the so-called "platform input server", or language-specific server, and
encourage developers to write input servers for their own languages.
(4) Write an input server for my own language. Technically, this implies
that getting GNUstep to talk with a conversion server directly, thereby
eliminating the dependency on the front end program for the X input method.
As Phase 1 is about to be finished, I decide to make it public officially
to ask evaluation on it. Currently, it's just a replacement of the current
input management system. So there's not anything new but only future's
If you have some interest in it, could you try it and send me either
or suggestions or both? I'd highly appreciate your valuable cooperation.
Of course, those who can help the development techniclly are always welcome.
As the modification I've done is relatively extensive, I can't offer it in a
form of diff. So, to get the source, download it from -gui's branch
named kazunobu_input_management. The branch is derived from 0.9.1.
of -gui should be installed with the same procedure as that of the genuine
For trying the text input management system, you don't need to do anything
special. Just run an application having an editable text view. After
launching an application, an experimental input server, PlainInputServer,
should automatically begin to run, like other GNUstep deamons.
The server program should be installed
(If this is not the case, the server won't be launched automatically. Launch
it manually from the console. Or install the server bundle under
$GNUSTEP_USER_ROOT/Library/InputManagers.) To change key bindings, edit
a file $GNUSTEP_USER_ROOT/Library/KeyBindings/DefaultKeyBinding.dict.
overwrites the former. As shown in the names, these files hold
For the format, take a look at StandardKeyBinding.dict. Nested dictionaries
are allowed to use. "One key binding for dispatching multiple methods" is
- Kazunobu Kuriyama
 A server which converts a sequence of characters you can type in
with a keyboard into characters which are not found on the keyboard.
- [RFC] Text Input Management System,
Kazunobu Kuriyama <=