Skip to content

Keyboardio Model 01 Introduction

Jesse Vincent edited this page Oct 13, 2017 · 30 revisions

Welcome to your Keyboardio Model 01!

Audience

This document is intended for folks who are new to Arduino programming or perhaps to programming in general, and want a quick tutorial on how to get started customizing the Model 01. We will give you some background on keyboards in general, the Kaleidoscope firmware that powers your keyboard, and the Keyboardio Model 01 in specific, then we will take you through setting up the Arduino customization tools on your computer, and finally walk you through making simple changes to your keyboard's firmware.

After you have worked through this document you will be able to modify the definitions of the keys on your Model 01, enabling you to do tasks such as switching layouts, swapping thumb-key placement, and customizing your LED pattern modules.

We hope this start-up guide will be a helpful first step in making your ideal keyboard truly heirloom-grade. We hope you will share your improvements with the community here:

https://community.keyboard.io/

The Model 01 was built for uncompromising typists like you—those who love to experiment, create, perfect, and share inspiration. In our community forum you will find folks both experienced and new to programming. Your questions and triumphs will be welcomed and celebrated. This is a great first-stop for any questions you have about customizing your keyboard.

If you're already familiar with Arduino and/or prefer to work on the command line of your computer we encourage you to look at the Model 01 git repository. If the following commands are familiar territory for you then the rest of this document will be more of a reference for you:

mkdir -p hardware/keyboardio

 ## then clone the hardware definitions to make them available to the arduino environment:

git clone --recursive https://github.com/keyboardio/Arduino-Boards.git hardware/keyboardio/avr

For our more tech-savvy users the sections for reference will be the high-level Kaleidoscope Firmware Overview (the next section), and the Appendix with keymap definitions (the final section).

Kaleidoscope Firmware Overview

Keyboards work by receiving your keypresses and translating them into "keycodes". Those keycodes are passed to your computer's operating system, which can interpret them and turn into characters and control codes. Those characters and codes are passed on to the active application on your computer. Some examples:

  • Press the "A" key while editing a document, and "a" will be inserted where your cursor is currently positioned.

  • Hold down "shift" and press the "A" key while editing a document, and "A" will be inserted where your cursor is currently positioned.

  • Press the "up arrow" key, and the cursor will move up a line in the document.

In order to change what happens when you press a key on your keyboard, you will need to edit the firmware configuration file to change the keycode it sends to your computer's operating system when you press a given key. To say that a bit more succinctly, you will edit a keymap. By having this logic on your keyboard itself you can bring your customizations with you from one machine to another.

NOTE: There's an Appendix at the end of this document which lists all the available keycodes, and what they do.

Editing Keymaps

The Model 01 ships with three keymaps installed: QWERTY, FUNCTION, and NUMPAD. The laminated sheet that came with your keyboard shows the QWERTY layer in black, the FUNCTION layer in blue, and the NUMPAD layer in red. The back side of the sheet has a blank layout you can write on with a grease pencil or a whiteboard marker to represent a changed layout.

The default layer is numbered zero, and the zero-layer that ships on the Model 01 is called "QWERTY".

NOTE: If you want to use a different layout, such as Dvorak and Colemak, you will find those keymaps and instructions to swap out the default layer in an Appendix.

Next, Layer 1 is FUNCTION, and Layer 2 is NUMPAD. The FUNCTION layer is activated when one of the FN palm keys is held down. NUMPAD gets toggled on and off with the NUM key in the upper right of the right half of the Model 01.

Imagine the default layer as the base of a stack, and the higher layers as overlays. Keys on the upper layers can be transparent, in which case the default layer "shines through." For example: if NUMPAD is toggled on, all the keys on the left half of the keymap (and some keys on the right side) are transparent. If you press a key on the left half, the keycode corresponding to that key on the QWERTY map will be generated, unless you are also holding down function, in which case you'll send the relevant keycode from the FUNCTION keymap.

Commonly Re-mapped Keys

The ANY key and BUTTERFLY key were intentionally left without important "jobs" in the layout, leaving convenient "empty" positions on the physical keyboard to play with. (By default, the ANY key will generate a random alphanumeric keypress and the BUTTERFLY key will generate a Right-Alt keypress.)

The LED key is another key you may wish to re-map to a less central place on the keyboard, and move something you use more into that spot. For instance, your new LED key could get added to an empty spot in the FUNCTION map.

Similarly, the PROG key is avaliable. By default it is used to send a special signal to the Model 01 when you hold it down; allowing the firmware to be over-written. Since it's in the familiar place for ESC, some users may wish to "remap" the PROG key to ESC.

The eight thumb keycaps were deliberately all made the same shape so they can be easily swapped. This means you can rearrange the locations of these keys in the firmware and physically!

Limitations to Configuring Layouts

There are some limitations to what your keyboard can be configured to do that are related to how keyboards and operating systems work.

Firstly, the operating system has control of what happens when you hold down "SHIFT". It makes sense that pressing "A" generates the character "a", and "SHIFT + A" generates the character "A".

What makes less sense is that "SHIFT + 4" will always generate the character "$", no matter where you have the "4" key mapped on the keyboard. It is possible to make "SHIFT + 4" create a character other than "$" in the firmware by enabling a plugin called ShapeShifter:

https://github.com/keyboardio/Kaleidoscope-ShapeShifter

It's probably better to consider that an advanced option, and try a more straightforward approach first.

If you want to change the shifted character on a key, the change will need to be made in the operating system. Look below for the link to the Keyboardio forum; there are discussions on the forums about how to do that, and friendly folks there who can answer questions.

Another thing to be aware of is the PROG key. It sends a special signal to the Model 01 when you hold it down that allows the firmware to be over-written.

Clone this wiki locally