A method comprising: displaying a user interface on a display of a client device, the user interface comprising a virtual keyboard including a plurality of characters arranged in a plurality of rows and a plurality of columns; fixing a focus of a cursor displayed in the user interface to a first row of the plurality of rows in the virtual keyboard, wherein at least one of the plurality of characters is within the focus of the cursor and wherein requests to move the cursor are received from a directional pad; responsive to receiving a first request to move the cursor in a first direction in the virtual keyboard, wrapping the at least one of the plurality of characters around the first row to a last row of the virtual keyboard to present another of the plurality of characters within the focus of the cursor; responsive to receiving a second request to move the cursor in the virtual keyboard along the first row to which the focus of the cursor is fixed, moving the cursor in the virtual keyboard along the first row to which the focus of the cursor is fixed; selecting a character from the virtual keyboard, wherein a character is selected in response to receiving a selection request when the character is within the focus of the cursor; and responsive to receiving a third request to move the cursor in the virtual keyboard in a third direction, wherein the third direction is opposite to the first direction, moving the focus of the cursor to a list of word suggestions, wherein the word suggestions are based on the selected character; and receiving a user selection of one of the list of word suggestions. displaying a user interface on a display of a client device, the user interface comprising a virtual keyboard including a plurality of characters arranged in a plurality of rows and a plurality of columns; fixing a focus of a cursor displayed in the user interface to a first row of the plurality of rows in the virtual keyboard, wherein at least one of the plurality of characters is within the focus of the cursor and wherein requests to move the cursor are received from a directional pad; responsive to receiving a first request to move the cursor in a first direction in the virtual keyboard, wrapping the at least one of the plurality of characters around the first row to a last row of the virtual keyboard to present another of the plurality of characters within the focus of the cursor; responsive to receiving a second request to move the cursor in the virtual keyboard along the first row to which the focus of the cursor is fixed, moving the cursor in the virtual keyboard along the first row to which the focus of the cursor is fixed; selecting a character from the virtual keyboard, wherein a character is selected in response to receiving a selection request when the character is within the focus of the cursor; and responsive to receiving a third request to move the cursor in the virtual keyboard in a third direction, wherein the third direction is opposite to the first direction, moving the focus of the cursor to a list of word suggestions, wherein the word suggestions are based on the selected character; and receiving a user selection of one of the list of word suggestions.