If you have enabled keyboard shortcuts in Gmail, you may have noticed that pressing the J key selects the previous (older) message in your inbox while the K key moves you one message up to a newer conversation.

The same j & k keyboard shortcuts can be used for navigating items in Google Reader, for moving between tweets on Twitter.com, and it even works with Tumblr.com.

So why do developers commonly assign the k and j keys for moving up and down respectively and not any other key combination?

unix keyboard

When Bill Joy created the vi text editor for Unix, he used a ADM-3A terminal and its keyboard didn’t have any dedicated arrow keys (see illustration above). Instead the keys h, j, k and l were inscribed with arrow symbols and these keys, in combination with the CTRL key, were used for moving the cursor on the screen.

The keyboard layouts have changed (they got dedicated arrow keys) but the same j & k keys are still popularly used for moving the cursor up and down inside the vi text editor. And since most developers have their roots in the Unix world, they implemented the same shortcut inside their web apps.

Wikipedia has more details on the history of vi and the HJKL keys.