Skip to content

Commit 86e7be7

Browse files
committed
Add baremetal pi support for ES locale while keeping US as default
1 parent ced6216 commit 86e7be7

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

build/baremetalpi/toolchain.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,7 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
5151

5252
set(BAREMETALPI TRUE)
5353

54+
if(NOT DEFINED KEYBOARD_LAYOUT)
55+
set(KEYBOARD_LAYOUT "US" CACHE STRING "Keyboard layout (US, ES, IT, etc.)")
56+
endif()
57+
add_compile_definitions(KEYBOARD_LAYOUT_${KEYBOARD_LAYOUT})

src/studio/studio.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,16 @@ char getKeyboardText(Studio* studio)
413413
tic_mem* tic = studio->tic;
414414
tic80_input* input = &tic->ram->input;
415415

416+
#ifdef KEYBOARD_LAYOUT_ES
417+
// US KEYS: " abcdefghijklmnopqrstuvwxyz0123456789-=[]\\;'`,./< ";
418+
static const char Symbols[] = " abcdefghijklmnopqrstuvwxyz0123456789'!`+cn'o,.-< ";
419+
static const char Shift[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ=!\" $%&/()??^*CN\"a;:_> ";
420+
static const char Alt[] = " |@# []} {\\ ";
421+
#else
416422
static const char Symbols[] = " abcdefghijklmnopqrstuvwxyz0123456789-=[]\\;'`,./ ";
417423
static const char Shift[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ)!@#$%^&*(_+{}|:\"~<>? ";
424+
static const char Alt[] = " ";
425+
#endif
418426

419427
enum{Count = sizeof Symbols};
420428

@@ -426,12 +434,13 @@ char getKeyboardText(Studio* studio)
426434
{
427435
bool caps = tic_api_key(tic, tic_key_capslock);
428436
bool shift = tic_api_key(tic, tic_key_shift);
437+
bool alt = tic_api_key(tic, tic_key_alt);
429438

430-
return caps
431-
? key >= tic_key_a && key <= tic_key_z
432-
? shift ? Symbols[key] : Shift[key]
433-
: shift ? Shift[key] : Symbols[key]
434-
: shift ? Shift[key] : Symbols[key];
439+
if (caps && key >= tic_key_a && key <= tic_key_z) shift = !shift;
440+
441+
return shift ? Shift[key]
442+
: alt ? Alt[key]
443+
: Symbols[key];
435444
}
436445
}
437446

@@ -1827,6 +1836,7 @@ static void processShortcuts(Studio* studio)
18271836
#if defined(BUILD_EDITORS)
18281837
else if(studio->mode != TIC_RUN_MODE && studio->config->data.keyboardLayout != tic_layout_azerty)
18291838
{
1839+
#ifndef KEYBOARD_LAYOUT_ES
18301840
if(keyWasPressedOnce(studio, tic_key_grave)) setStudioMode(studio, TIC_CONSOLE_MODE);
18311841
else if(keyWasPressedOnce(studio, tic_key_1))
18321842
{
@@ -1840,6 +1850,7 @@ static void processShortcuts(Studio* studio)
18401850
else if(keyWasPressedOnce(studio, tic_key_3)) setStudioMode(studio, TIC_MAP_MODE);
18411851
else if(keyWasPressedOnce(studio, tic_key_4)) setStudioMode(studio, TIC_SFX_MODE);
18421852
else if(keyWasPressedOnce(studio, tic_key_5)) setStudioMode(studio, TIC_MUSIC_MODE);
1853+
#endif
18431854
}
18441855
#endif
18451856
}

src/system/baremetalpi/keycodes.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,18 @@ tic_key_escape, // KeyEscape, 0x29
4949
tic_key_backspace, // KeyBackspace, 0x2A
5050
tic_key_tab, // KeyTabulator, 0x2B
5151
tic_key_space, // KeySpace, 0x2C
52-
tic_key_apostrophe, // '\'', 0x2D
53-
tic_key_unknown, // C('?'), 0x2E -- ^
54-
tic_key_leftbracket, // C('?'), 0x2F -- [
55-
tic_key_rightbracket, // '+', 0x30 -- ]
56-
tic_key_unknown, // C('?'), 0x31
57-
tic_key_unknown, // C('?'), 0x32
58-
tic_key_unknown, // C('?'), 0x33 -- @
59-
tic_key_unknown, // C('?'), 0x34 -- #
60-
tic_key_backslash, // '\\', 0x35
52+
tic_key_minus, // '-', 0x2D
53+
tic_key_equals, // '=', 0x2E
54+
tic_key_leftbracket, // '[', 0x2F
55+
tic_key_rightbracket, // ']', 0x30
56+
tic_key_backslash, // '\\', 0x31
57+
tic_key_backslash, // '\\', 0x32
58+
tic_key_semicolon, // ';', 0x33
59+
tic_key_apostrophe, // '\'', 0x34
60+
tic_key_grave, // '`', 0x35
6161
tic_key_comma, // ',', 0x36
6262
tic_key_period, // '.', 0x37
63-
tic_key_minus, // '-', 0x38
63+
tic_key_slash, // '/', 0x38
6464
tic_key_capslock, // KeyCapsLock, 0x39
6565
tic_key_f1, // KeyF1, 0x3A
6666
tic_key_f2, // KeyF2, 0x3B
@@ -104,7 +104,7 @@ tic_key_numpad8, // KeyUp, 0x60
104104
tic_key_numpad9, // KeyPageUp, 0x61
105105
tic_key_numpad0, // KeyInsert, 0x62
106106
tic_key_numpadperiod, // KeyDelete, 0x63
107-
tic_key_unknown, // '<', 0x64
107+
tic_key_iso_extra, // '<', 0x64
108108
tic_key_unknown, // KeyApplication, 0x65
109109
tic_key_unknown, // KeyNone, 0x66
110110
tic_key_unknown, // KeyNone, 0x67

src/tic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,7 @@ typedef enum
707707
tic_key_comma,
708708
tic_key_period,
709709
tic_key_slash,
710+
tic_key_iso_extra,
710711

711712
tic_key_space,
712713
tic_key_tab,

0 commit comments

Comments
 (0)