There is disclosed an enhanced text entry system which uses word-level analysis to automatically correct inaccuracies in user keystroke entries on reduced keyboards such as those implemented on a touch-sensitive panel or display screen, or on mechanical keyboard systems. A method and system are defined which determine one or more alternate textual interpretations of each sequence of inputs detected within a designated auto-correcting keyboard region. The actual contact locations for the keystrokes may occur outside the boundaries of the specific keyboard key regions associated with the actual characters of the word interpretations proposed or offered for selection, where the distance from each contact location to each corresponding intended character may in general increase with the expected frequency of the intended word in the language or in a particular context. Likewise, in a mechanical keyboard system, the keys actuated may differ from the keys actually associated with the letters of the word interpretations. Each such sequence corresponds to a complete word, and the user can easily select the intended word from among the generated interpretations. Additionally, when the system cannot identify a sufficient number of likely word interpretation candidates of the same length as the input sequence, candidates are identified whose initial letters correspond to a likely interpretation of the input sequence. The approach utilizes the information contained in the entire sequence of keystrokes corresponding to a word in order to determine the user's likely intention for each character of the sequence. The system also accommodates punctuation characters such as hyphens or apostrophes that are commonly embedded in words such as hyphenated compounds and contractions in English, and characters with special diacritics such as are commonly found in various European languages, e.g., diacritic accent. Special functions may be applied depending on where the user touches the intended string in a displayed word selection list. Once the user selects the desired string, it is automatically “accepted” for output and the next input detected starts a new input sequence corresponding to the entry of a next word.