Skip to content

Add definitions for extra keys in national layouts #67

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 5, 2022

Conversation

edgar-bonet
Copy link
Collaborator

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(){}

The new files Keyboard_{de_DE,es_ES,fr_FR,it_IT}.h add macro definitions
for keys that could not be otherwise easily accessed with the library,
such as "e with grave accent" in the French and Italian layouts.

Only keys that produce either a non-ASCII character or a dead accent
when used unmodified are listed. For instance, the "pound sign" is not
listed in the Italian layout because, without the Shift modifier, that
key prints a "3". The macros are named after the character produced by
the unmodified key. For example, they key for the inverted exclamation
and question marks in the Spanish layout is named
`KEY_INVERTED_EXCLAMATION'.

This mimics what has already been done for the Danish and Swedish
layouts.
@github-actions
Copy link

github-actions bot commented Apr 2, 2022

Memory usage change @ f066eeb

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<br>flash,%,examples/Serial<br>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

@per1234 per1234 added type: enhancement Proposed improvement topic: code Related to content of the project itself labels Apr 2, 2022
@facchinm facchinm merged commit e0482f7 into arduino-libraries:master Apr 5, 2022
@edgar-bonet edgar-bonet deleted the key-defs branch April 5, 2022 12:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: code Related to content of the project itself type: enhancement Proposed improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants