1. A computer implemented method of recognizing user input through interaction with a graphical user interface (GUI), the method comprising: rendering a GUI for display on a display device, wherein the GUI comprises a virtual keyboard comprising a plurality of characters arranged in a layout, wherein each character is associated with a recognition zone, wherein a user interaction detected within a recognition zone causes an associated character to be selected as an input character; receiving a first user interaction with the GUI on a first location within the virtual keyboard; selecting a first character as a first input character, wherein the first character is associated with a first recognition zone encompassing the first location; automatically predicting one or more next characters based on the first input character; and adjusting recognition zones of the one or more next characters based on the predicting.