# Keyboard Layout

Source: https://docs.bytebolt.at/bytebolt-one/keyboard-layout/

> Use Arduino's built-in keyboard layouts (DE, FR, US, IT, ES, PT, SE, DK, HU) or a custom Swiss de_CH layout with BYTEBOLT One via Keyboard.begin().

You can check Arduino's built-in keyboard layouts [here](https://github.com/arduino-libraries/Keyboard/tree/master/src). By default, sketches use `KeyboardLayout_en_US`. To change it to e.g. German, pass the layout to the `Keyboard.begin(layout)` function:

**sketch_de.ino**

```c
#include <Keyboard.h>

void setup() {
  delay(5000);
  Keyboard.begin(KeyboardLayout_de_DE);
  ...
  Keyboard.end();
}

void loop() {
}

```

**Layouts currently included**
* `KeyboardLayout_da_DK`: Denmark
* `KeyboardLayout_de_DE`: Germany
* `KeyboardLayout_en_US`: USA
* `KeyboardLayout_es_ES`: Spain
* `KeyboardLayout_fr_FR`: France
* `KeyboardLayout_hu_HU`: Hungary
* `KeyboardLayout_it_IT`: Italy
* `KeyboardLayout_pt_PT`: Portugal
* `KeyboardLayout_sv_SE`: Sweden

## Special Keyboard Layout
Because the product has no vendor-locked firmware with a built-in interpreter, you can use any C code and keyboard layout you want. For example, you can use a library like [`KeyboardUTF8`](https://github.com/JohnWasser/Arduino_KeyboardUTF8) by JohnWasser (Arduino IDE: `Sketch` → `Include Library` → `Add .ZIP Library...`) or write your own layout based on e.g. [kbdlayout.info](https://kbdlayout.info).

**For example:**
* [Swiss KeyboardLayout_de_CH](/KeyboardLayout_de_CH.txt)

**KeyboardLayout_de_CH.ino**

```c
#include <Keyboard.h>

void setup() {
  delay(5000);
  Keyboard.begin(KeyboardLayout_de_CH);
  // ... your code ...
  Keyboard.end();
}

void loop() {
}
```
