As BlackBerry patent applications go, this is a big one. And you are getting it here, first.
So big that only a few hints about what's enabled here are contained in the Patent Abstract for an application published just this morning and entitled, "HAND-HELD ELECTRONIC DEVICE." And the all-caps were put there by BlackBerry-maker Research In Motion.
You are looking at the Abstract at the top of this post. For those who want Abstract text straight up, cut-and-pastable and all that, the Abstract describes:
A hand-held electronic device with a keyboard, thumbwheel, display and associated software is optimized for use of the device with the thumbs. The associated software has a plurality of features to optimize efficient use of the limited keyboard space and encourage the use of the device by thumb-based data entry through the thumbwheel and/or through a combination of minimal number of keystrokes.
Software features include international character scrolling, and auto-capitalization. The keys on the device keyboard are optimally shaped and configured for thumb-based input. In addition, the thumbwheel is inclined between the front and a side edge of the device so as to be reachable by either the thumb or index finger of the user's hand at the side edge of the device.
Oh, but that's just the start. In the absence of Patent application art that vividly illusrates the BlackBerry functionalities indicated therein, come along for some rather detailed Patent application text about what I think you might be most interested in.
You've made the jump. Now get ready for some deets on what it does. (In an effort to be clear, I am removing numbered references to images I haven't imported from the Patent application, breaking up overly long paragraphs, and then bold-facing the terms I think are most important).
Turning to another software-related feature that aids in the device being optimally used for thumb typing is a capitalization feature implemented via software. If a user depresses a key, the operating system detects a key down event. If the key is released after a period of time, the operating system detects a key up event. If after a key down event, a certain period of time elapses before a key up event is detected, the operating system determines that a key repeat event has occurred representing a situation where a user has continued to depress a key without releasing it.
A key repeat event is then treated by application software residing in either flash as an event that requests the capitalization of the key previously depressed. This feature disables the key repeat feature and substitutes instead a capitalization feature based on the length of a key press. The timing of the key scanning to determine whether a key has been released can be set to permit a slower keyboard response or a faster keyboard response, depending upon user experience of preferences.
Although the capitalization function preferably works only to change the state of a letter to a capital, it alternatively could operate to change a capital letter to a lower case letter. The actual display image is changed by the operating system mapping appropriate bitmapped characters as instructed by the user inter-race engine. As alternatively implemented, the continued depressing without release of a letter key could result in a key oscillating between upper case and lower case, depending on the length of time the key is depressed.
Automatic Formatting Features
Now follows a description of another software-related aspect of the present invention that is implemented to specifically minimize the number of keystrokes required as input by the user in using the device. In some cases, two software engines handle this software-related aspect, namely the user interface engine and an autotext engine.
The user interface engine by using the above mentioned functional modules facilitates presenting common interface elements such as menus, lists and textboxes. The autotext engine is another software application that extends the user interface engine and makes use of a database to perform text insertions and other related activities.
The autotext engine is preferably implemented as a user interface engine element (such as a choice box or list or standard edit element). This arrangement of being a user interface engine element allows specialized applications to incorporate a buffer that performs autotext substitution as they would a standard input field.
However, because of the substantive amount of code associated with the autotext engine and the engine's need to be configured with a list of replacement strings, the engine is preferably implemented as a separate module. One specific advantage that flows from the specific embodiments of the engines as described herein is that there is a substantial reduction of input formatting b)/the user, since automatic formatting can be triggered by a small number of keystrokes, or by predefined key sequences entered one key at a time.
Another embodiment of the user interface engine is the "autopunctuation" feature of the device. If the user enters one of a number of predefined character sequences, the user interface engine will automatically insert a period (full stop) in the user input field. in this manner the user does not nee! to use the alt key to enter a period. An example of one such character sequence would be <character><space><space>, after such character sequence the user interface engine will instruct the operating system to replace the first <space> with a full stop and to capitalize the next character entered by tie user.
For clarity, in this description: <space> represents a blank space user input; <character> represents any character user input; and, <period> represents user input of the character ".". Because of bandwidth considerations when the device transmits data to the wireless network, it is preferable that only one space, instead of two, is present between the period and the first character of the next sentence. Alternatively implemented, instead of replacing the first <space> in the aforesaid character sequence, a period is inserted after the <character> and the next character entered by the user is capitalized thereby producing two spaces between the period and the next character.
In another embodiment of this autopunctuation feature, if the user enters one of a number of predefined character sequences that is used as a capitalization signal, such as <period><space>, the user interface engine will-process the event and capitalize the next character entered by the user.  Alternatively implemented, the predefined character sequence could be <period><space><space>. To further enhance this feature, autopunctuation can be undone easily, as described below.
Another embodiment of the user interface engine is the "intelligent character substitution" feature of the device. In fields designed for certain types of input, the user interface engine will automatically substitute appropriate characters if inappropriate characters are entered. For example, in a field designed to hold an email address, a method of composing an email address is provided by the character substitution feature of the present invention for email address tacking on the general form. <characters>@<characters>.<characters>.
In the instance, it is assumed blank spaces are unacceptable characters for an email address field. The method begins with the user interface engine receiving from user input a character set representing a certain portion of the email address.
If a first delimiter trigger signal, preferably a first blank space, is received froze the user input, the engine confirms that no at-sign character ("@") has been entered in the already received character set. If no, the engine substitutes the first delimiter trigger signal with a first email delimiter, preferably the at-sign character. If yes, the engine substitutes the first delimiter with a second email delimiter, preferably a period character. For any subsequent blank space input received, the engine substitutes preferably another period character.
Another example of the character substitution feature occurs when entering data in a field designed to hold numeric data. If the user presses an alphabetic key whose corresponding alt character is a numeral, the user interface engine will recognize this and instruct the operating system to automatically insert the numeral into the field, even if the user had not pressed the alt key.
The first embodiment of the autotext engine provides an application service for error correction and phrase substitution. By entering pairs of strings into an autotext database, the user can associate "original strings" with "replacement strings". The autotext engine also defines an autotext input meld that applications may use to access the functionality of the autotext engine.
The autotext input field may be of variable length typically up to the length of an email message. As the user is entering data into an autotext input field, each time a space is entered, the autotext engine will search backwards from the current cursor position to extract the last word from the autotext input field.
The autotext engine will then efficiently search through the autotext database for an original string that exactly matches the last word. If such a string is found, the last word in the autotext input field will automatically be replaced with the corresponding replacement string from the database.
This phrase substitution feature could be used to correct common typing errors (for example, "the" could be automatically converted to "the") or to facilitate the entry of common phrases (for example, "fyi" could be automatically converted to "for your information").
This feature could also automatically insert a regularly used international character or symbol in a message thereby reducing the instances when the international character-scrolling feature needs to be used. In this latter scenario, the original string could be "jr" and the associated replacement string could be "Jurgen". The international character would be entered as described before for the international character scrolling feature.
The phrase substitution feature could advantageously be used or electronic signatures to be appended to the end of an email message composed by the user on the device. Advantageously, a variety of different electronic signatures can be stored in the autotext database. In this manner, the user may chose the appropriate signature from his set of signatures for the particular context of the email message about to be transmitted.
For instance, in one case the user in an informal message may sign off "Take Care & Cheers" with the original string "tc" while in a legally sensitive message the same user may sign off "Solicitor-Client Privileged Communication" with the original string "scp".
In this manner, there is no need for any electronic signature field insertion at the gateway of the wireless network and the user may amend and modify his electronic signatures without network interaction.
In the preferred embodiment, the replacement string is case sensitive in that any preset capitalization in the replacement string appears when displayed and cannot be forced into a lower case by the case status of the original string. However, if the first character of the original string is tipper case, then preferably the first character of the replacement is forced into an upper case as well.
In another embodiment, the autotext engine preferably includes a macro functionality that allows a user to specify special character codes in the replacement string that will be treated specially when the replacement string is entered into the autotext engine. These codes are preferably divided into two distinct sets: control character codes and dynamic data codes.
In the control character code situation, some character sequences in the replacement string will be converted to control characters when the original string is replaced by the substitution feature. Examples of these sequences would be "% b" and "% B" which convert to a backspace character and a delete character respectively. Therefore, for an open bracket "("to be displayed, the original string could be defined as "br" and the replacement string as "(% 3". Likewise, for a close bracket ")", the original string could be "rb" and the replacement string"% b)".
In the dynamic data code situation, certain character sequences in the replacement string will be converted to dynamic data when the original string is replaced. Examples of these sequences would be "% t" and "% d" wherein the codes are converted into the current time and current date respectively.
Like the intelligent character substitution feature, autotext replacement can be undone easily, as described below.
As mentioned above, all automatic formatting features of the user interface and autotext engines such as autocapitalization, autopunctuation and phrase substitution may be overridden by what is referred to the "easy undo" feature herein.
The automatic formatting features have undo capabilities that are triggered by backspacing over a significant character. As such, if the user backspaces over one of these significant characters, the formatted data is replaced with the raw data as it existed prior to automatic formatting.
For instance, the user may type "fyi" into an autotext input field such one implemented in 0 the message compose screen. If then the user types <space> and "fyi" is in the autotext database, the autotext engine will replace "fyi" with "for your information" in the input field as earlier described in phrase substitution.
If the user does not desire this substitution, the user can preferably backspace over the last character of the displayed string "for your information". Consequently, the autotext engine will restore the contents of the input field to "fyi" as they were prior to the phrase substitution formatting operation. In this instance, the significant character was the last character "n" in the phrase "for your information".
If the user types a sequence of characters that results in an automatic formatting operation, and backspaces to activate the easy undo feature, the appropriate engine will retain the fact that an undo operation took place at that significant character position. Consequently, if the user retypes the same sequence of characters, then the automatic formatting will not be applied for a second time.
This allows the user to suppress an automatic formatting feature when desired.
For example the user may suppress the autopunctuation feature from inserting a fill stop automatically. As described above, if the user types <space><space> in an input field, a full stop will be inserted by the user interface engine for the first <space>. If the user does not desire a full stop in that location, the user would then backspace over the full stop character and retype <space><space>. The user interface engine will not replace the full stop as it did the first time.
That's alot, but there's more. Here, once again, is the link to the full text of this patent application.