# Patent

## Title
Methods and apparatuses for display and traversing of links in page character array

## Abstract

A method for processing a page character array finds links and creates link groups containing adjacent link characters. Adjacency of link characters is preferably defined as characters which are separated by any combination of no characters, blank space characters, line feed characters, or separator characters, such as vertical or horizontal separator bars or other separator characters. Once link groups have been defined, the method lays out each link group for display in an optimized form. Links are displayed as buttons. An optimized form of display includes centering all the buttons in a vertical list. Another optimized form of display includes laying out the link group as a rectangular matrix of buttons. According to another aspect, each of the links in a link group are logically mapped to a distinct user input, such as a key or voice command. The logical mapping aspect and optimized display aspect are optionally combined for certain types of hardware. For example, if keys are physically adjacent to any part of the display, the links are displayed near the keys, or in horizontal and/or vertical alignment with the keys, so that the key to which a link is mapped is apparent from its position on the display screen. As another example, the name of key or command to which a link is mapped is displayed within or beside the button containing the name of the link.

## Background
CLAIM OF PRIORITY
This application is a continuation of U.S. patent application Ser. No. 10/443,683, filed May 22, 2003, now abandoned, which is a continuation of U.S. patent application Ser. No. 09/374,223, filed Aug. 13, 1999, abandoned.


CROSS REFERENCE TO RELATED PATENT
The following U.S. patent is assigned to the assignee of the present application, and its disclosure is incorporated herein by reference:
U.S. Pat. No. 6,547,830, issued Apr. 15, 2003, by Paul Mercer and entitled, “METHOD AND ARTICLE OF MANUFACTURE FOR MAXIMIZING THE AMOUNT OF TEXT DISPLAYED.”
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention pertains to the field of browsers for displaying page character arrays, such as HTML web pages, which have link characters representing links to other page character arrays. Specifically, the present invention pertains to the field of small display devices, such as cellular telephones.
2. Discussion of the Related Art
Many devices, such as handheld devices, have relatively small displays for providing information to users. Typically, handheld devices are designed to be mobile, lightweight, and small, which necessitates a relatively small display. A cellular telephone is an example of a handheld device having a small display. The cellular telephone's small display provides only enough space for a few lines of text which may include a name and a telephone number. Large amounts of text are not easily provided on a small display.
Moreover, users of handheld devices may require more information than can be easily provided on a small display. A typical user may want to have information that requires extensive text such as weather forecasts, driving directions, or stock updates. This type of information generally requires numerous lines of text that may not fit on a small display. For example, a user may desire to access an internet page having a variety of fonts identifying links or other usable information. Large amounts of information may be obtained from remote locations, such as servers on the internet, which are accessible by a handheld device, but the amount of information provided to a user is limited by the small display of the handheld device.
The content of internet web pages is specified by page character arrays containing, for example, HTML (Hyper Text Markup Language) code or another descriptor language's code, such as HDML, WML, SGML, or XML. Any device, such as a browser, attempting to display web pages must be able to interpret the codes in the page character arrays that describe the web pages. A link character is a type of character in page character array describing a web page that represents a pointer to another web page specified by another page character array.
Conventional browsers display link characters in page character arrays as blue underlined text. Groups of links are conventionally constructed of link characters separated by separator bars and/or blank spaces. Conventional browsers make no attempt to optimize the display of groups of links based upon the display size or hardware configuration of the machine running the browser. In other words, aside from underlining the links and coloring them blue, a conventional browser makes no other decisions about how to display a link. Links may be interspersed with text, graphics, and other links; the placement of the link on the display depends upon the surrounding context.
Frequently, web pages include “link bars” which are a series of several links placed adjacently or in close proximity to one another. The links in the link bars are sometimes separated by vertical bars, placed on separate lines, or include blank spaces between them. Conventionally, there is no explicit indication in the page character array that a series of links are associated to one another. As a consequence of this fact, a series of links may be intended to fit on a single line by the author of the web page. However, when the page is accessed by a small screen device, all the links can not fit on a single line due to the limited width of the display. This results in a confusing and visually displeasing result on the small screen device.
Furthermore, conventional browsers make no attempt to provide a mechanism, other than cursor pointing and clicking, by which the user can select a link in a web page so that another web page can be retrieved. Small screen devices, such as cellular phones, typically do not have mouses or cursor pointing and clicking capability.
As is apparent from the above discussion, a need exists for an acceptable and visually pleasing way to display of groups of links for small screen displays. A need also exists for the provision of a link selection mechanism for machines which do not have cursor pointing and clicking capabilities.
SUMMARY OF THE INVENTION
Conventional browsers display link characters in page character arrays as blue underlined text. Groups of links are conventionally constructed of link characters separated by separator bars and/or blank spaces. Conventional browsers make no attempt to optimize the display of groups of links based upon the display size or hardware configuration of the machine running the browser. Conventional browsers make no attempt to provide a mechanism, other than cursor pointing and clicking, by which the user can select a link. An object of the present invention is to optimize the display of groups of links for small screen displays. Another object of the present invention is to provide an efficient link selection mechanism for machines which do not have cursor pointing and clicking capabilities.
According to an aspect of the present invention, a method for processing a page character array finds links and creates link groups containing adjacent link characters. Adjacency of link characters is preferably defined as characters which are separated by any combination of no characters, blank space characters, line feed characters, or separator characters, such as vertical or horizontal separator bars or other separator characters. By filtering out line feeds, links which would conventionally be displayed as vertical link lists are detected and grouped as link groups for optimized display according to the present invention.
Once link groups have been defined, the method lays out each link group for display in an optimized form. In the preferred embodiment of the present invention, links are displayed as buttons. An optimized form of display according to the present invention includes centering all the buttons in a vertical list. Another optimized form of display according to the present invention includes laying out the link group as a rectangular matrix of buttons.
According to another aspect of the present invention, each of the links in a link group is logically mapped to a distinct user input. For example, if a link group consists of nine links, then each of the links is mapped to one of the nine keys 1 through 9. If the link group is currently being displayed, then by pressing any of the keys 1 through 9, the machine traverses the corresponding link. As another example, in a machine with a microphone, each of the links is mapped to a specific voice command. This voice command mapping is alternatively coupled with the keystroke mapping. Thus, the user either presses the 3 key or says the word “three” to instruct the machine to traverse the third link in a link group. The logical mapping of links to a distinct user input provides a mechanism for selecting the link which was not specified by the page character array, but rather which is intelligently instantiated according to the present invention.
The logical mapping aspect and optimized display aspect of the present invention are optionally combined for certain types of hardware. For example, in a cellular telephone having keys 1 through 9 physically configured in a standard three-by-three telephone keypad matrix, the links are laid out on the display screen in a three-by-three rectangular matrix such that the upper left link corresponds to the key 1 and the lower right link corresponds to the key 9. As another example, if keys are physically adjacent to any part of the display, the links are displayed near the keys, or in horizontal and/or vertical alignment with the keys, so that the key to which a link is mapped is apparent from its position on the display screen. As yet another example, the name of key or command to which a link is mapped is displayed within or beside the button containing the name of the link; thus, additional information not specified in the page character array is interjected into the display according to the present invention to facilitate link selection.
These and other features, aspects, and advantages of the present invention are fully described in the Detailed Description of the Invention, which discusses the Figures in narrative form.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1A illustrates a cellular telephone having software according to an embodiment of the present invention.
FIG. 1B illustrates a block diagram of a device according to an embodiment of the present invention.
FIG. 2 illustrates a software and hardware block layer diagram according to an embodiment of the present invention.
FIG. 3 illustrates a page character array used as input to the methods according to the present invention.
FIG. 4 illustrates a conventional browser's display screen appearance after displaying the page character array shown in FIG. 3.
FIG. 5 illustrates a method of processing a page character array according to the present invention.
FIG. 6 illustrates a display screen appearance after displaying the page character array shown in FIG. 3 using a method according to the present invention shown in FIGS. 5 and 13.
FIG. 7 illustrates an input device to link correspondence table generated by a method according to the present invention shown in FIGS. 5 and 15 for the page character array shown in FIG. 3 and the display screen appearance shown in FIG. 6.
FIG. 8 illustrates a method of implementing the step shown in FIG. 5 of finding links and creating link groups according to the present invention.
FIG. 9 illustrates a continuation of the page character array shown in FIG. 3 used as input to the methods according to the present invention.
FIG. 10A illustrates a link group extracted from the page character array shown in FIG. 3 by a method according to the present invention shown in FIG. 8.
FIG. 10B illustrates another link group extracted from the page character array shown in FIGS. 3 and 9 by a method according to the present invention shown in FIG. 8.
FIG. 11 illustrates an intermediate page character array generated from the page character array shown in FIGS. 3 and 9 by a method according to the present invention shown in FIG. 8.
FIG. 12 illustrates a conventional browser's display screen appearance after displaying the page character array shown in FIG. 9.
FIG. 13 illustrates a method of implementing the step shown in FIG. 5 of laying out link groups for a display screen in an optimized form according to the present invention.
FIG. 14 illustrates a display screen appearance after displaying the page character array shown in FIG. 9 using a method according to the present invention shown in FIGS. 5 and 13.
FIG. 15 illustrates a method of implementing the step shown in FIG. 5 of logically mapping link groups to the distinct user input according to the present invention.
FIG. 16 illustrates a display screen appearance in relation to input device keys after displaying the page character array shown in FIG. 3 using a method according to the present invention shown in FIGS. 5 and 13.
FIG. 17 illustrates an input device to link correspondence table generated by a method according to the present invention shown in FIGS. 5 and 15 for the page character array shown in FIG. 3 and the display screen appearance shown in FIG. 16.
FIG. 18 illustrates a display screen appearance after displaying the page character array shown in FIG. 3 using a method according to the present invention shown in FIGS. 5 and 15.



The Figures are more fully described in narrative form in the Detailed Description of the Invention. In the Figures, like method steps are labeled with like reference numerals.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1A illustrates a device having a small display according to an embodiment of the present invention. In an embodiment, the device may be a handheld device. In particular, FIG. 1A illustrates a cellular telephone 1 having a small display 15. Cellular telephone 1 also includes input device 16 and, in particular, a numeric keypad. Display 15 provides a window 2 having text 3 according to an embodiment of the present invention. An expanded view of window 2 and text 3 is illustrated in FIG. 3 and described below. Cellular telephone 1 has wireless access to the world-wide-web (“www”) or internet 18 and/or may optionally be connected to other data networks such as the Wireless Access Protocol (“WAP”).
While a cellular telephone embodiment of the present invention is illustrated in FIG. 1A, one of ordinary skill in the art would appreciate that many other embodiments of the present invention fall within the scope of the appended claims. For example, embodiments of the present invention may include pagers, palm top computers, personal digital assistants (“PDA”), digital video device (“DVD”) players, digital cameras, printers, or an equivalent thereof. Generally, an embodiment of the present invention may include any information appliance. An information appliance is any mobile device that is designed to provide users with access to information stored on the device, or to information stored elsewhere when connected to data resources via a wired or wireless connection.
According to embodiments of the present invention, cellular telephone 1, supports wireless protocol communications, including the Global System for Mobile communications (“GSM”), Time Division Multiple Access (“TDMA”), Personal Digital Cellular (“PDC”), Code Division Multiple Access (“CDMA”), W-CDMA, or CDMA-2000.
FIG. 1B illustrates a hardware/software block diagram according to an embodiment of the present invention. A device 17 according to an embodiment of the present invention includes an electronics bus 14 for electrically coupling various device components. Ellipses are shown to identify other software and hardware components that may be present in an embodiment of the present invention. For example, device 17 may be a cellular telephone which has communication software and wireless communication hardware.
Processor 10 is coupled to bus 14. In an embodiment, processor 10 may be an embedded microprocessor such as a Sharp® Microelectronics ARM7 processor, a low power 32 bit reduced instruction set computer (“RISC”) processor. In another embodiment, processor 10 may be a Motorola® 68K Dragonball microprocessor. In alternate embodiments, processor 10 may be a Power PC, MIPS, or X86 processor.
Memory 11 is also coupled to bus 14 and stores link group software 12 according to an embodiment of the present invention. In an alternate embodiment, link group software 12 may be stored on persistent storage device such as a magnetic hard disk, a floppy magnetic disk, CD-ROM or other write data storage technology, singly or in combination. Memory 11 can include read-only-memory (“ROM”), ready-access-memory (“RAM”), virtual memory or other memory technology, singly or in combination. In an embodiment, memory 11 is an approximately 50K ROM.
Speaker/microphone 17 is also coupled to bus 14 and is used as an audio input/output device in an embodiment of the present invention. Input device 16 is coupled to bus 14. In an embodiment, input device 16 may be a numeric keypad or a touch sensitive screen. Small display 15 is also coupled to bus 14. In an embodiment, small display 15 may be a bit map display having a pixel size of 80×60. In alternate embodiments, the small display 15 may have a pixel size up to and including 128×64, 160×240, or 320×240.
FIG. 2 illustrates a software and hardware block layer diagram 30 according to an embodiment of the present invention. System software 32 and system hardware 31 are used in connection with application program interface 33 to support a graphical user interface 34 according to an embodiment of the present invention.
System software 32 may include a real time operating system software for controlling internal operation of device 17. System software 32 may also include a web browser for accessing internet 18 over a wired or wireless connection.
In an embodiment, graphical user interface 34 is used to provide information and/or text to display 15 on cellular telephone 1 illustrated in FIG. 1A. Link group software 12 is used in connection with graphical user interface software 34 to provide link group information to a small display 15. In an embodiment, link group software 12 is able to map a hypertext markup language (“HTML”) page from internet 18 to small display 15 by using link group software 12 which is described below.
FIG. 3 illustrates a page character array 300 used as input to the method according to the present invention. The characters 301 through 309 are link characters representing links to page character arrays named A through I, respectively. Characters 310 through 316 represent vertical splitter bars. Characters 317 through 321 represent line feed characters, which are logically equivalent to carriage return characters. Characters 322 through 331 represent text characters. Character 332 represents a blank space.
For the purposes of explanation of the present invention, the term “character” refers to a token of the document encoding standard, for example ASCII, UNICODE, HTML, and XML. In other words, a “character” is any string or code that has some defined significance. A link character represents an actionable token, such as retrieving another page character array, or executing an arbitrary computer function such as playing a sound, or initiating a computer transaction. A blank space or line feed character refers to any token which creates white space or a sequence of codes that result in blank space.
FIG. 4 illustrates a conventional browser's display screen appearance after displaying the page character array 300 shown in FIG. 3. Specifically, a conventional browser displays links A through I as blue underlined text 401 through 409 which correspond to link characters 301 through 309, respectively, shown in FIG. 3. Vertical splitter bars 410 through 416 illustrated in FIG. 4 are displayed by a conventional browser as a result of interpretation of vertical splitter characters 310 through 316 shown in FIG. 3. The links F, G, H, and I, appear on a lower line than the links A, B, C, D, and E because line feed character 317 advances the display to the subsequent line. Blank space 417 illustrated in FIG. 4 is a result of the conventional browser's interpretation of line feed characters 318 and 319. The text 418 illustrated in FIG. 4 is a result of the conventional browser's interpretation of text characters 322 through 332. Blank space 419 is a result of the conventional browser's interpretation of line feed characters 320 and 321 shown in FIG. 3. As is clearly illustrated by FIG. 3, the page character array 300 contains no explicit specification that links A through I are related to each other or are to be displayed in any particular specialized manner because they are related links.
FIG. 5 illustrates a method 500 of processing a page character array according to the present invention. The method starts with step 501. At step 502, the method finds links and creates link groups (or in other words hyperlink groupings). As will be discussed later, link groups consist of adjacent link characters within the page character array. At step 503, the method lays out the link groups created in step 502 for display in an optimized form. At step 504, link groups created in step 502 are logically mapped to a distinct user input, such as the touching of a specific key, or the receipt of a specific voice command. The method 500 is finished at step 505. It is to be noted that steps 503 and 504 are alternatively optional according to the present invention. In other words, after the link groups are created in step 502, either an optimized display can be generated according to the present invention in step 503 or a logical mapping of the link groups to a distinct user input can be performed by step 504. Thus, in alternative embodiments, either step 503 or step 504 is omitted according to the present invention. In the preferred embodiment, however, both steps 503 and 504 are performed according to the present invention.
FIG. 6 illustrates a display screen appearance 600 after displaying the page character array shown in FIG. 3 using a method according to the present invention shown in FIGS. 5 and 13. Buttons 601 through 609 are a result of the interpretation of link characters 301 through 309 by the method according to the present invention. The display screen appearance 600 illustrated in FIG. 6 represents one possible optimized screen display corresponding to a nine link group detected in step 502 and displayed in step 503 as the display screen appearance 600. There are many other possible screen layouts which may be created in alternative to display screen appearance 600, as will be described below, according to the present invention.
FIG. 7 illustrates an input device to link correspondence table 700 generated by a method according to the present invention shown in FIGS. 5 and 15 for the page character array 300 shown in FIG. 3 and the display screen appearance 600 shown in FIG. 6. As will be described below, step 504 logically maps each of the keys 1 through 9 to a corresponding one of the links A through I, as illustrated in Table 700. Thus, when the user strikes one of the keys 1 through 9 while the link group containing links A through I is in the display screen, the link corresponding to the key pressed will be traversed by the method according to the present invention.
FIG. 8 illustrates a method of implementing the step shown in FIG. 5 of finding links and creating link groups according to the present invention. Thus, the method 502 illustrated in FIG. 8 is an exploded view of the method step 502 shown in FIG. 5 and represents the presently preferred embodiment for executing the step 502 shown in FIG. 5. However, it is to be understood that various additions and modifications to the method 502 shown in FIG. 8 can be alternatively implemented without departing from the spirit and scope of the present invention. The method starts at step 801 and at step 802 the page character array is accessed. The next character is retrieved from the page character array at step 803. Test 804 determines if the character retrieved in step 803 is a link. In several page character array description languages, such as HTML, there are several alternative characters which represent links. Test 804 detects all such link characters. If the character retrieved in step 803 is a link, then the method 502 opens a new empty link group at step 805. At step 806, the character previously determined by step 804 to be a link is added to the new link group created in step 805. The next character in the page character array is then retrieved at step 807. Test 808 determines if the character retrieved by step 807 is a link. If the character is a link then the method reverts to step 806 and that link is added to the current link group which was previously created in step 805. If the character retrieved in step 807 is not a link, then test 809 determines if the character is a blank space or line feed character. If the character retrieved in step 807 is a blank space or line feed, then the method 502 essentially filters it out of the page character array by advancing back to step 807 to retrieve the next subsequent character. If the character is not a blank space or line feed, then step 810 determines if the character is a link separator character. Link separator characters are alternatively any one of vertical splitter characters, horizontal splitter characters, or other arbitrary characters, such as a plus or minus sign, which are used to separate link characters. If the character is determined to be a link separator by step 810, it is also essentially filtered out by the method 502 because the method then reverts back to step 807 to retrieve the next subsequent character. However, if the character is not a link separator, then the link group opened in step 805 is closed at step 811. The method then reverts to step 803 to retrieve the next character in the page character array. If at any point steps 803 or 807 do not detect any more characters in the page character array, then the method is done at step 812 as the page character array has been fully parsed.
FIG. 9 illustrates a continuation of the page character array 300 shown in FIG. 3 used as input to the methods according to the present invention. Characters 901 through 904 represent links, characters 905 through 908 represent blank spaces, and character 909 represents a line feed or carriage return.
FIG. 10A illustrates a link group extracted from the page character array 300 shown in FIG. 3 by a method 502 according to the present invention shown in FIG. 8. Specifically, all of the link characters 301 through 309 illustrated in FIG. 3 have been grouped into a first link group 1000 containing only the characters representing the links. The vertical splitter characters 310 through 316 as well as the line feed character 317 shown in FIG. 3 have been filtered out by the method 502.
FIG. 10B illustrates another link group 1050 extracted from the page character array 900 shown in FIGS. 3 and 9 by a method 502 according to the present invention shown in FIG. 8. Specifically, link characters 901 through 904 have been grouped into a second link group 1050 by the method 502. Blank space characters 905-908 have been filtered out, along with line feed character 909.
FIG. 11 illustrates an intermediate page character array 1100 generated from the page character array shown in FIGS. 3 and 9 by a method 502 according to the present invention and shown in FIG. 8. Specifically, the method 502 has detected the first link group 1000 and second link group 1050 and replaced them with characters 1101 and 1102 representing pointers to the link groups 1000 and 1050, respectively. The remaining characters and the intermediate page character array 1100 represent characters from the page character array 300 which were not grouped into a link group.
FIG. 12 illustrates a conventional browser's display screen appearance 1200 after displaying the page character array 900 shown in FIG. 9. Link characters 901 through 904 are interpreted by a conventional browser and displayed as blue underlined text 1201 through 1204, respectively. Blank space characters 905 and 906 are interpreted by a conventional browser and create the space 1205 illustrated in FIG. 12. Similarly, blank space characters 907 and 908 correspond to space 1206 illustrated in FIG. 12. Line feed character 909 is interpreted by a conventional browser to place the subsequent characters on a lower line, which creates the two-line appearance 1200 illustrated in FIG. 12.
FIG. 13 illustrates a method of implementing the step 503 shown in FIG. 5 of laying out link groups for a display screen in an optimized form according to the present invention. The method starts at 1301. At step 1302, link characters are laid out as buttons, such as illustrated in FIG. 6. A button is preferably enclosed by a circular or oval shaped boundary. At step 1303, the method 503 lays out the buttons in predetermined screen locations based upon the hardware upon which the method is executing. The method is completed at step 1304. Thus, FIG. 13 illustrates the method of implementing step 503 shown in FIG. 5, and is therefore an exploded view of the steps required to implement step 503 shown in FIG. 5.
FIG. 14 illustrates a display screen appearance 1400 after displaying the page character array 900 shown in FIG. 9 using a method 502 according to the present invention shown in FIGS. 5 and 13. In the screen display appearance 1400, buttons 1401 through 1402 correspond to characters 901 through 904 shown in FIG. 9. In the display screen appearance 1400, buttons 1400 through 1404 are horizontally centered in a vertical list. This horizontal centering represents an embodiment of an optimized form of display of a link group according to the present invention.
FIG. 15 illustrates a method 504 of implementing the step shown in FIG. 5 of logically mapping link groups to distinct user input according to the present invention. The method starts at step 1501. Test 1502 determines if a link group is currently in the display screen. If the link group is not currently in the display screen, then the method ends at step 1505. In other words, no action is taken by step 504 in the event that a link group is not currently being displayed in the display screen. Step 1303 illustrated in FIG. 13 lays out the buttons in a predetermined screen location based upon a hardware in a logical frame buffer. Only a portion of the logical frame buffer is actually displayed at any given time. If the link group is in the portion of the screen layout which is in the display screen, then step 1503 creates a correspondence between the links and the displayed link group and key strokes or voice commands. This is illustrated, for example, by the Table 700 shown in FIG. 7. At step 1504, the machine interprets key strokes or voice commands as a command to traverse the corresponding link. If a link group is not currently in the display screen, then key strokes or voice commands are not interpreted as link invocations.
FIG. 16 illustrates a display screen appearance 1600 in relation to input device keys 1601 through 1605 after displaying the page character array 300 shown in FIG. 3 using a method 500 according to the present invention shown in FIGS. 5 and 13. The links A through F shown in FIG. 16 are selected by the user by pressing one of the L or R keys 1601 or 1602 and one of the T, M, or B keys 1603 through 1605. For example, link A is traversed by pressing the L key 1601 and the T key 1603. The F link is traversed by pressing the R key 1602 and the B key 1605. In the example shown in FIG. 16, links are laid out in optimized form by step 503 so as to be vertically and horizontally aligned with the input keys to which they are logically mapped by step 504. Another example of the combination of steps 503 and 504 is found in FIG. 6, where links A through I are laid out so as to physically correspond to numbers 1 through 9 on a standard telephonic keypad.
FIG. 17 illustrates an input device to link correspondence table 1700 generated by a method 504 according to the present invention shown in FIGS. 5 and 15 for the page character array 300 shown in FIG. 3 and the display screen appearance shown in FIG. 16. Specifically, each of the links is mapped to a unique combination of the keys 1601 through 1605.
FIG. 18 illustrates a display screen appearance 1800 after displaying the page character array 300 shown in FIG. 3 using a method according to the present invention shown in FIGS. 5 and 15. In FIG. 18, the keys to which links A, B, and C are logically mapped by step 504 are actually displayed alongside the link names. In this respect, the present invention optionally displays in step 503 an indication of the physical key to which the link is mapped in step 504. Thus, link C is selected by pressing the 3 key as shown in the screen display appearance 1800. Alternatively to the above-described laying out of the indication of the corresponding mapped keystroke along with each link name for each link in the link group illustrated in FIG. 18, the indication of the corresponding mapped keystroke is laid out as a small captioned box next to or above the layout of the link (not unlike a footnote) to indicate the mapping relationship.
As shown in FIGS. 16 and 18, only a portion of the entire first link group is displayed on the display screen. Specifically, in FIG. 16, links G, H, and I could not fit on the display screen 1600, and in FIG. 18, links D through I could not fit on the display screen 1800. As the user scrolls down so that the remaining links become visible and the first few links in the link group are not visible, the method 504 optionally creates a different mapping of the input keys to the links in the link group, or optionally maintains the same correspondence between input keys and links. In the example shown in FIG. 16, it is anticipated that as links G, H, and I become visible, the mapping of the T, M, and B keys 1603 through 1605 is altered so that horizontal alignment is maintained. If the user scrolls down so that links G and H are visible but links A and B are not visible, then links A and B are no longer selectable by the user. However, in the example shown in FIG. 18, as the user scrolls down such that links D, E, and F are visible instead of links A, B, and C, then the method 504 according to the present invention preferably maintains the mapping of keys 4, 5, and 6 to links D, E, and F, and therefore links A, B, and C are still selectable by the user by depressing the appropriate keys even though they are no longer visible on the display screen.
The foregoing description of the preferred embodiments of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Obviously, many modifications and variations will be apparent to practitioners skilled in the art. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, thereby enabling others skilled in the art to understand the invention for various embodiments and with the various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.

## Claims

1. A mobile device having a display screen, comprising:
a processor; and
a processor readable storage medium having processor readable program code embodied in said processor readable storage medium, said processor readable program code for programming the device to:
find links within a page character array and filter out of the page character array characters which are not links;
create one or more link groups each having a plurality of links;
lay out each link group for display in optimum form on the display screen of the mobile device at predetermined display screen locations based upon hardware of the mobile device, wherein the predetermined screen locations correspond to discrete user locations;
display on the display screen of the mobile device a first portion of the link group layout, wherein the first portion does not include all links of the link group;
logically map each of the displayed links of the first portion of the link group to a distinct user input, in which correspondence between links in the link group and keystrokes or voice commands is created;
alter the display of the link groups to display a second portion of the link group layout; and
logically map each of the displayed links of the second portion of the link group to a distinct user input;
wherein the mapping of each of the displayed links of the second portion of the link group does not alter the mapping of the first portion of the link group such that the mapping of links of the first and the second portions of the link group are maintained concurrently.

2. A mobile device as in claim 1, wherein adjacent link characters comprise link characters separated in the page character array by any combination of: no other characters, blank space characters, line feed characters, and link separator characters.

3. A mobile device as in claim 1, wherein the program code lays out links as buttons.

4. A mobile device as in claim 1, wherein the program code centers links in a vertical list.

5. A mobile device as in claim 1, wherein the program code lays out links in a rectangular matrix.

6. A mobile device as in claim 1, wherein the program code
lays out an indication of a corresponding mapped keystroke along with each link name for each link in the link group.

7. A method comprising:
finding links within a page character array and filter out of the page character array characters which are not links;
creating one or more link groups each having a plurality of links;
laying out each link group for display in optimum form on the display screen of the mobile device at predetermined display screen locations based upon hardware of the mobile device, wherein the predetermined screen locations correspond to discrete user locations;
displaying on the display screen of the mobile device a first portion of the link group layout, wherein the first portion does not include all links of the link group;
logically mapping, using one or more processors, each of the displayed links of the first portion of the link group to a distinct user input, in which correspondence between links in the link group and keystrokes or voice commands is created;
altering the display of the link groups to display a second portion of the link group layout; and
logically mapping each of the displayed links of the second portion of the link group to a distinct user input,
wherein the mapping of each of the displayed links of the second portion of the link group does not alter the mapping of the first portion of the link group such that the mapping of links of the first and the second portions of the link group are maintained concurrently.

8. The method of claim 7, wherein adjacent link characters comprise link characters separated in the page character array by any combination of: no other characters, blank space characters, line feed characters, and link separator characters.

9. The method of claim 7, wherein laying out each link group for display includes laying out links as buttons.

10. The method of claim 7, wherein laying out each link group for display includes laying out links as centered in a vertical list.

11. The method of claim 7, wherein laying out each link group for display includes laying out links in a rectangular matrix.

12. The method of claim 7, further comprising:
laying out an indication of a corresponding mapped keystroke along with each link name for each link in the link group.

13. A processor readable storage medium having processor readable program code embodied in the processor readable storage medium, the processor readable program code for programming the device to:
find links within a page character array and filter out of the page character array characters which are not links;
create one or more link groups each having a plurality of links;
lay out each link group for display in optimum form on the display screen of the mobile device at predetermined display screen locations based upon hardware of the mobile device, wherein the predetermined screen locations correspond to discrete user locations;
display on the display screen of the mobile device a first portion of the link group layout, wherein the first portion does not include all links of the link group;
logically map each of the displayed links of the first portion of the link group to a distinct user input, in which correspondence between links in the link group and keystrokes or voice commands is created;
alter the display of the link groups to display a second portion of the link group layout; and
logically map each of the displayed links of the second portion of the link group to a distinct user input;
wherein the mapping of each of the displayed links of the second portion of the link group does not alter the mapping of the first portion of the link group such that the mapping of links of the first and the second portions of the link group are maintained concurrently.