In my opinion, Chromebooks appear to have standardised on programmer-unfriendly keyboards.

Source-Code Based Coding

In most computer languages, coding occurs in text files that (typically) contain a instructions to be converted into the machine language that the underlying processor can execute (known as source files).

A source file might look like this:

Snippet of Java code

Where a file might contain several hundred, or even several thousand lines of text, fast keyboard navigation is essential so that the programmer does not have to constantly move their hands between the keyboard and the mouse… and this is where Chromebooks fall short.

Keyboard Layouts

The standardised PC Keyboard:

Keyboards come in all shapes and sizes, but if you work in an office, the keyboard shown below(US Variant), is very likely the layout of keyboard you will be using.

Source, https://en.wikipedia.org/wiki/IBM_PC_keyboard

Standardisation of keyboard layout is essential to being a productive office worker, or productive programmer. Once you understand the standard layout, you can code quickly, and easily.

For people who only use word processors, it may seem that many of these keys are redundant, and they would be correct. Many of these keys are almost anachronistic to earlier days in computing — but many of the keys still remain essential to anyone that wishes to program using either an IDE or a text editor.

Required keys for programming:

I have annotated the keyboard with the keys that I view (mileage may vary) as absolutely essential to programming, and the keys that are optional.

Adapted from original image

Keys of interest are HOME, END, PAGE UP and PAGE DOWN. These are core navigation keys for programmers.

The HOME key is used for moving to the beginning of a line or document, the END key is used for moving to the end of a line or document. The PAGE UP and PAGE DOWN keys are used for quickly navigating up and down a document a page at at time.

The INSERT key is used to change the cursor mode between insertion mode and overwrite mode, this is generally speaking not used very often, hence coloured orange.

The DELETE key is used for deleting text to the right of the cursor.

Standard Chromebook Keyboard:

Ultrabook manufacturers have been meddling with the standard layout of keys for a while now, but Chromebooks are unique in that they seem to have standardised on a programmer unfriendly set of keys.

Missing Keys

Chromebooks (to the best of my knowledge — at time of writing — without exception) are missing the following keys, which are keys useful to, if not essential to programmers.

Missing Keys

Some workarounds exist for the lack of these keys (see later), but nothing beats having a dedicated key for functions, and some

Chromebooks — Substituted Keyboard Combinations

The following keyboard combinations are mostly possible on Chromebooks (1, 2), but are sub-optimal in that the first workaround wipes out an existing programmer shortcut (moving the current line up and down), and the second workaround requires significant user work to activate, and does not allow for the F12 key to exist.

  • Page Up : Move the cursor up a page of text at a time.
  • Page Down : Move the cursor down a page of text at a time.
  • Shift + Pageup : Move up a page at a time, and select all text between the last cursor position and the current page upped position (in addition to any previously selected text).
  • Shift + Pagedown : Move down a page at a time, and select all text between the last cursor position and the current page downed position (in addition to any previously selected text).
  • F1 .. F12 represents up to 60 different shortcuts that individual development environments can use for quickly performing common operations (Individually pressed, Control + F Key, Control + Shift + F key, Alt + F Key, Control + Alt + F Key)

Chromebooks — Fully Lost Shortcuts

The following keyboard commands commonly used by programmers are not available for use on a Chromebook keyboard.

  • Home : Move cursor to the start of content on the current line or move cursor to start of current line.
  • End : Move cursor to end of current line
  • Delete : Delete text to the right of the cursor position
  • Shift + Home : Select text between current cursor position and start of content on current line.
  • Shift + End : Select text between current cursor position and end of content on current line.
  • Ctrl + Home : Move cursor to start of current document
  • Ctrl + End : Move cursor to end of current document
  • Ctrl + Shift + Home : Select all text between current cursor position and start of document.
  • Ctrl + Shift + End : Select all text between current cursor position and end of document.

HOME and END are some of the most essential keys on the keyboard to a programmer.

Impact on source code navigation

The loss of Home and End buttons has a large impact on speed when editing source code on a Chromebook.

Navigating quickly to the start or end of a line is an operation that occurs very often when editing a larger file.

Selecting large chunks of text between the beginning and end of the document must now occur with the mouse / touchpad.

(Full disclosure, I have only attempted this a few times clumsily in a local PC retailer, but it was enough for me to swear I would never program, not even cloud IDE program, on a Chromebook keyboard.)

On Standard Keyboard (End Key Available)

Approx 5 seconds …

On Chromebook (No End Key)

Approx 8 seconds …

The loss of a few seconds may seem trivial, but in documents where you may be editing the values of many thousands of lines, or where lines may be very long indeed.

Or where it is common to select blocks of text all the way to the top or bottom of a document, the loss of HOME and END represents a deep regression.

Call for Feedback

  • Are you a programmer?
  • Am I being too harsh?
  • Do you ever use HOME and END, or are they redundant to you?
  • Do you ever use ALT + UP/DOWN to move lines up and down in an editor? What is your opinion on this functionality being replaced by PAGE UP / PAGE DOWN on Chromebooks?
  • Web developers, do you often use function keys in the Chrome debugger, or do you use mouse / touchpad?
  • Is coding usable on a Chromebook using the touchpad to make up for the loss of HOME and END?
  • Is Google removing these keys compatible with its wider aims of introducing more kids into coding?
  • Does anyone, or more specifically any Google engineers use Chromebooks as coding laptops on a cloud based IDE?
  • Do you remap keys (for debugging for example) ?
  • If Android Studio (or any other programming environment) is to be brought to Chromebooks, doesn’t it now make sense to smarten-up the dumbed-down keyboard layout?

@ainslec