arduino-libraries / Keyboard

GNU Lesser General Public License v3.0
225 stars 158 forks source link

Add definitions for extra keys in national layouts #67

Closed edgar-bonet closed 2 years ago

edgar-bonet commented 2 years ago

Pull requests #58 and #60 added support for the Swedish and Danish keyboard layouts. Unlike the previously supported layouts, these new layouts came each with a header file that provides macro definitions for the keys that are not otherwise easily accessible. For example, Keyboard_sv_SE.h defines:

#define KEY_A_RING        (136+0x2f)
#define KEY_A_UMLAUT      (136+0x34)
#define KEY_O_UMLAUT      (136+0x33)
#define KEY_UMLAUT        (136+0x30)
#define KEY_ACUTE_ACC     (136+0x2e)

This pull request extends this to all the other supported layouts, namely de_DE, es_ES, fr_FR and it_IT. Note that en_US does not require such support, as all its keys are already readily accessible.

With this new definitions, every single key of a full-size PC keyboard can now be reached on every layout, either with Keyboard.write(ASCII_char) or by using one of the provided macros.

Example: the following sketch prints “ça va être drôle!” on a French keyboard:

#include <Keyboard.h>
#include <Keyboard_fr_FR.h>

void setup() {
    Keyboard.begin(KeyboardLayout_fr_FR);
    delay(5000);
    Keyboard.write(KEY_C_CEDILLA);
    Keyboard.print("a va ");
    Keyboard.write(KEY_CIRCUMFLEX);
    Keyboard.print("etre dr");
    Keyboard.write(KEY_CIRCUMFLEX);
    Keyboard.println("ole!");
}

void loop(){}
github-actions[bot] commented 2 years ago

Memory usage change @ f066eeb65bd28b866d3e4109cf27f056b4fcedd6

Board flash % RAM for global variables %
arduino:avr:leonardo 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:sam:arduino_due_x_dbg 0 - 0 0.0 - 0.0 N/A N/A
arduino:samd:mkrzero 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
Click for full report table Board|examples/Serial
flash|%|examples/Serial
RAM for global variables|% -|-|-|-|- arduino:avr:leonardo|0|0.0|0|0.0 arduino:sam:arduino_due_x_dbg|0|0.0|N/A|N/A arduino:samd:mkrzero|0|0.0|0|0.0
Click for full report CSV ``` Board,examples/Serial
flash,%,examples/Serial
RAM for global variables,% arduino:avr:leonardo,0,0.0,0,0.0 arduino:sam:arduino_due_x_dbg,0,0.0,N/A,N/A arduino:samd:mkrzero,0,0.0,0,0.0 ```