diff --git a/ion/Makefile b/ion/Makefile index a11229099..363201c5f 100644 --- a/ion/Makefile +++ b/ion/Makefile @@ -6,6 +6,11 @@ endif SFLAGS += -Iion/include -DKD_CONFIG_H=1 +ifndef ION_KEYBOARD_LAYOUT + $(error platform.mak should define ION_KEYBOARD_LAYOUT) +endif +SFLAGS += -Iion/include/ion/keyboard/$(ION_KEYBOARD_LAYOUT) + include ion/src/$(PLATFORM)/Makefile include ion/src/shared/tools/Makefile diff --git a/ion/include/ion/keyboard.h b/ion/include/ion/keyboard.h index 8e1d1cf74..3db6045c9 100644 --- a/ion/include/ion/keyboard.h +++ b/ion/include/ion/keyboard.h @@ -6,29 +6,11 @@ extern "C" { #include } +#include + namespace Ion { namespace Keyboard { -enum class Key : uint8_t { - A1=0, A2=1, A3=2, A4=3, A5=4, A6=5, - B1=6, B2=7, B3=8, /*B4=9, B5=10, B6=11, */ - C1=12, C2=13, C3=14, C4=15, C5=16, C6=17, - D1=18, D2=19, D3=20, D4=21, D5=22, D6=23, - E1=24, E2=25, E3=26, E4=27, E5=28, E6=29, - F1=30, F2=31, F3=32, F4=33, F5=34, // F6=35, - G1=36, G2=37, G3=38, G4=39, G5=40, // G6=41, - H1=42, H2=43, H3=44, H4=45, H5=46, // H6=47, - I1=48, I2=49, I3=50, I4=51, I5=52, // I6=53, - None = 54 -}; - -#define MODEL_N0101 1 -#ifdef MODEL_N0101 -constexpr Key PowerKey = Key::B3; -#else -constexpr Key PowerKey = Key::B2; -#endif - constexpr Key ValidKeys[] = { Key::A1, Key::A2, Key::A3, Key::A4, Key::A5, Key::A6, Key::B1, PowerKey, Key::C1, Key::C2, Key::C3, Key::C4, Key::C5, Key::C6, Key::D1, Key::D2, diff --git a/ion/include/ion/keyboard/layout_B2/keyboard_layout.h b/ion/include/ion/keyboard/layout_B2/keyboard_layout.h new file mode 100644 index 000000000..42dc1e66d --- /dev/null +++ b/ion/include/ion/keyboard/layout_B2/keyboard_layout.h @@ -0,0 +1,25 @@ +#ifndef ION_KEYBOARD_LAYOUT_B2_H +#define ION_KEYBOARD_LAYOUT_B2_H + +namespace Ion { +namespace Keyboard { + +enum class Key : uint8_t { + A1=0, A2=1, A3=2, A4=3, A5=4, A6=5, + B1=6, B2=7, /*B3=8, B4=9, B5=10, B6=11, */ + C1=12, C2=13, C3=14, C4=15, C5=16, C6=17, + D1=18, D2=19, D3=20, D4=21, D5=22, D6=23, + E1=24, E2=25, E3=26, E4=27, E5=28, E6=29, + F1=30, F2=31, F3=32, F4=33, F5=34, // F6=35, + G1=36, G2=37, G3=38, G4=39, G5=40, // G6=41, + H1=42, H2=43, H3=44, H4=45, H5=46, // H6=47, + I1=48, I2=49, I3=50, I4=51, I5=52, // I6=53, + None = 54 +}; + +constexpr Key PowerKey = Key::B2; + +} +} + +#endif diff --git a/ion/include/ion/keyboard/layout_B3/keyboard_layout.h b/ion/include/ion/keyboard/layout_B3/keyboard_layout.h new file mode 100644 index 000000000..f519e35cd --- /dev/null +++ b/ion/include/ion/keyboard/layout_B3/keyboard_layout.h @@ -0,0 +1,25 @@ +#ifndef ION_KEYBOARD_LAYOUT_B3_H +#define ION_KEYBOARD_LAYOUT_B3_H + +namespace Ion { +namespace Keyboard { + +enum class Key : uint8_t { + A1=0, A2=1, A3=2, A4=3, A5=4, A6=5, + B1=6, /*B2=7,*/ B3=8, /*B4=9, B5=10, B6=11, */ + C1=12, C2=13, C3=14, C4=15, C5=16, C6=17, + D1=18, D2=19, D3=20, D4=21, D5=22, D6=23, + E1=24, E2=25, E3=26, E4=27, E5=28, E6=29, + F1=30, F2=31, F3=32, F4=33, F5=34, // F6=35, + G1=36, G2=37, G3=38, G4=39, G5=40, // G6=41, + H1=42, H2=43, H3=44, H4=45, H5=46, // H6=47, + I1=48, I2=49, I3=50, I4=51, I5=52, // I6=53, + None = 54 +}; + +constexpr Key PowerKey = Key::B3; + +} +} + +#endif diff --git a/scripts/platform.blackbox.mak b/scripts/platform.blackbox.mak index b12759f2b..d678f9501 100644 --- a/scripts/platform.blackbox.mak +++ b/scripts/platform.blackbox.mak @@ -1,5 +1,6 @@ TOOLCHAIN ?= host-gcc USE_LIBA ?= 0 +ION_KEYBOARD_LAYOUT = layout_B2 EXE = bin EPSILON_ONBOARDING_APP = 0 diff --git a/scripts/platform.device.n0100.mak b/scripts/platform.device.n0100.mak index 9c36368ed..8f41cc583 100644 --- a/scripts/platform.device.n0100.mak +++ b/scripts/platform.device.n0100.mak @@ -1 +1,2 @@ TOOLCHAIN ?= arm-gcc-m4f +ION_KEYBOARD_LAYOUT = layout_B2 diff --git a/scripts/platform.device.n0101.mak b/scripts/platform.device.n0101.mak index b9b31d0f1..8767597e6 100644 --- a/scripts/platform.device.n0101.mak +++ b/scripts/platform.device.n0101.mak @@ -1 +1,2 @@ TOOLCHAIN ?= arm-gcc-m7f +ION_KEYBOARD_LAYOUT = layout_B3 diff --git a/scripts/platform.emscripten.mak b/scripts/platform.emscripten.mak index dcbb6bff5..a19578a05 100644 --- a/scripts/platform.emscripten.mak +++ b/scripts/platform.emscripten.mak @@ -1,5 +1,6 @@ TOOLCHAIN = emscripten USE_LIBA = 0 +ION_KEYBOARD_LAYOUT = layout_B2 EXE = js EPSILON_ONBOARDING_APP = 0 EPSILON_GETOPT = 1 diff --git a/scripts/platform.sdl.mak b/scripts/platform.sdl.mak index 43e80e04e..0624babe6 100644 --- a/scripts/platform.sdl.mak +++ b/scripts/platform.sdl.mak @@ -1,4 +1,5 @@ USE_LIBA = 0 +ION_KEYBOARD_LAYOUT = layout_B2 EPSILON_ONBOARDING_APP = 0 EPSILON_GETOPT = 1 diff --git a/scripts/platform.simulator.mak b/scripts/platform.simulator.mak index fc42f9a21..4bc3f4186 100644 --- a/scripts/platform.simulator.mak +++ b/scripts/platform.simulator.mak @@ -3,6 +3,7 @@ ifeq ($(OS),Windows_NT) TOOLCHAIN = mingw endif USE_LIBA = 0 +ION_KEYBOARD_LAYOUT = layout_B2 EXE = elf EPSILON_ONBOARDING_APP = 0 SFLAGS += -fPIE