diff --git a/src/board/novacustom/v540tnx/board.mk b/src/board/novacustom/v540tnx/board.mk index 422746c59..1ae683e2e 100644 --- a/src/board/novacustom/v540tnx/board.mk +++ b/src/board/novacustom/v540tnx/board.mk @@ -14,7 +14,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD = 14in_83 -KEYMAP=combo_iso_ansi_micmute +KEYMAP=combo_iso_ansi +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED=white_dac diff --git a/src/board/novacustom/v540tu/board.mk b/src/board/novacustom/v540tu/board.mk index fcc1e9af0..72cb0789c 100644 --- a/src/board/novacustom/v540tu/board.mk +++ b/src/board/novacustom/v540tu/board.mk @@ -14,7 +14,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD = 14in_83 -KEYMAP=combo_iso_ansi_micmute +KEYMAP=combo_iso_ansi +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED=white_dac diff --git a/src/board/novacustom/v560tnx/board.mk b/src/board/novacustom/v560tnx/board.mk index 280ef81a5..a7d32d1c5 100644 --- a/src/board/novacustom/v560tnx/board.mk +++ b/src/board/novacustom/v560tnx/board.mk @@ -14,7 +14,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD = 15in_102 -KEYMAP=micmute +KEYMAP=default +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED = rgb_pwm diff --git a/src/board/novacustom/v560tu/board.mk b/src/board/novacustom/v560tu/board.mk index 972619b27..0677b3974 100644 --- a/src/board/novacustom/v560tu/board.mk +++ b/src/board/novacustom/v560tu/board.mk @@ -14,7 +14,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD = 15in_102 -KEYMAP=micmute +KEYMAP=default +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED = rgb_pwm diff --git a/src/board/system76/darp7/board.mk b/src/board/system76/darp7/board.mk index 62cc1ec74..0d8c8ec9c 100644 --- a/src/board/system76/darp7/board.mk +++ b/src/board/system76/darp7/board.mk @@ -14,6 +14,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD=15in_102 +KEYMAP=default +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED=rgb_pwm diff --git a/src/board/system76/darp8/board.mk b/src/board/system76/darp8/board.mk index a6fa96849..1cb99a72d 100644 --- a/src/board/system76/darp8/board.mk +++ b/src/board/system76/darp8/board.mk @@ -17,6 +17,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD=15in_102 +KEYMAP=default +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED=rgb_pwm diff --git a/src/board/system76/galp5/board.mk b/src/board/system76/galp5/board.mk index 5b7f10319..2495b9a11 100644 --- a/src/board/system76/galp5/board.mk +++ b/src/board/system76/galp5/board.mk @@ -14,7 +14,9 @@ CFLAGS+=-DUSE_S0IX=1 # Include keyboard KEYBOARD=14in_83 -KEYMAP=combo_iso_ansi_micmute +KEYMAP=combo_iso_ansi +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED=white_dac diff --git a/src/board/system76/galp6/board.mk b/src/board/system76/galp6/board.mk index 5bc524525..e6fe3dfa7 100644 --- a/src/board/system76/galp6/board.mk +++ b/src/board/system76/galp6/board.mk @@ -19,7 +19,9 @@ CFLAGS+=-DPMC_S0IX_HACK=1 # Include keyboard KEYBOARD=14in_83 -KEYMAP=combo_iso_ansi_micmute +KEYMAP=combo_iso_ansi +CFLAGS += \ + -DHAVE_MIC_MUTE=1 # Set keyboard LED mechanism KBLED=white_dac diff --git a/src/common/include/common/keymap.h b/src/common/include/common/keymap.h index 05fb8aa67..cb82fede8 100644 --- a/src/common/include/common/keymap.h +++ b/src/common/include/common/keymap.h @@ -113,6 +113,25 @@ uint16_t keymap_translate(uint16_t key); // Mic mute #define K_MIC_MUTE (KF_E0 | 0x76) +// Optional keys +// +// Use `IF_CONFIG(FLAG, on_code, off_code)` in a keymap to allow +// variable keycode depending on whether a flag is set in the boards .mk file. +// Board opts in with CFLAGS+=-DHAVE_=1 in its board.mk +#define IF_CONFIG(flag, on, off) IF_CONFIG_(flag, on, off) +#define IF_CONFIG_(flag, on, off) IF_CONFIG_SEL_##flag(on, off) +#define IF_CONFIG_SEL_0(on, off) (off) +#define IF_CONFIG_SEL_1(on, off) (on) + +// Must define defaults for the optional key flags for the macros to work +#ifndef HAVE_MIC_MUTE +#define HAVE_MIC_MUTE 0 +#endif + +#ifndef HAVE_KB_PRIVACY +#define HAVE_KB_PRIVACY 0 +#endif + // Function keys #define K_F1 (0x05) diff --git a/src/keyboard/system76/14in_83/keymap/combo_iso_ansi.c b/src/keyboard/system76/14in_83/keymap/combo_iso_ansi.c index 6d46b1934..3cf815841 100644 --- a/src/keyboard/system76/14in_83/keymap/combo_iso_ansi.c +++ b/src/keyboard/system76/14in_83/keymap/combo_iso_ansi.c @@ -17,9 +17,9 @@ LAYOUT_ISO( ), LAYOUT_ISO( K_ESC, K_TOUCHPAD, K_DISPLAY_TOGGLE, K_MUTE, K_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, K_BRIGHTNESS_DOWN, K_BRIGHTNESS_UP, K_CAMERA_TOGGLE, K_AIRPLANE_MODE, K_SUSPEND, K_PRINT_SCREEN, K_PAUSE, K_NUM_LOCK, K_SCROLL_LOCK, - K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, K_MIC_MUTE, K_5, K_6, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_ASTERISK, K_MINUS, K_EQUALS, K_BKSP, + K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, IF_CONFIG(HAVE_MIC_MUTE, K_MIC_MUTE, K_4), K_5, K_6, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_ASTERISK, K_MINUS, K_EQUALS, K_BKSP, K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_NUM_4, K_NUM_5, K_NUM_6, K_NUM_SLASH, K_BRACE_OPEN, K_BRACE_CLOSE, K_ENTER, - K_FNLOCK, K_A, K_KB_PRIVACY, K_D, K_F, K_G, K_H, K_NUM_1, K_NUM_2, K_NUM_3, K_NUM_MINUS, K_QUOTE, K_BACKSLASH, + K_FNLOCK, K_A, IF_CONFIG(HAVE_KB_PRIVACY, K_KB_PRIVACY, K_S), K_D, K_F, K_G, K_H, K_NUM_1, K_NUM_2, K_NUM_3, K_NUM_MINUS, K_QUOTE, K_BACKSLASH, K_LEFT_SHIFT, K_INT_1, K_Z, K_X, K_C, K_V, K_B, K_N, K_NUM_0, K_COMMA, K_NUM_PERIOD, K_NUM_PLUS, K_RIGHT_SHIFT, K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_HOME, K_UP, K_END, K_LEFT, K_DOWN, K_RIGHT diff --git a/src/keyboard/system76/14in_83/keymap/combo_iso_ansi_micmute.c b/src/keyboard/system76/14in_83/keymap/combo_iso_ansi_micmute.c deleted file mode 100644 index 6d46b1934..000000000 --- a/src/keyboard/system76/14in_83/keymap/combo_iso_ansi_micmute.c +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -// Default layout - -#include - -// clang-format off -uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = { -LAYOUT_ISO( - K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_PAUSE, K_INSERT, K_DEL, - K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, - K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_ENTER, - K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_BACKSLASH, - K_LEFT_SHIFT, K_INT_1, K_Z, K_X, K_C, K_V, K_B, K_N, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT, - K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_RIGHT_CTRL, K_PGUP, K_UP, K_PGDN, - K_LEFT, K_DOWN, K_RIGHT -), -LAYOUT_ISO( - K_ESC, K_TOUCHPAD, K_DISPLAY_TOGGLE, K_MUTE, K_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, K_BRIGHTNESS_DOWN, K_BRIGHTNESS_UP, K_CAMERA_TOGGLE, K_AIRPLANE_MODE, K_SUSPEND, K_PRINT_SCREEN, K_PAUSE, K_NUM_LOCK, K_SCROLL_LOCK, - K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, K_MIC_MUTE, K_5, K_6, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_ASTERISK, K_MINUS, K_EQUALS, K_BKSP, - K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_NUM_4, K_NUM_5, K_NUM_6, K_NUM_SLASH, K_BRACE_OPEN, K_BRACE_CLOSE, K_ENTER, - K_FNLOCK, K_A, K_KB_PRIVACY, K_D, K_F, K_G, K_H, K_NUM_1, K_NUM_2, K_NUM_3, K_NUM_MINUS, K_QUOTE, K_BACKSLASH, - K_LEFT_SHIFT, K_INT_1, K_Z, K_X, K_C, K_V, K_B, K_N, K_NUM_0, K_COMMA, K_NUM_PERIOD, K_NUM_PLUS, K_RIGHT_SHIFT, - K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_HOME, K_UP, K_END, - K_LEFT, K_DOWN, K_RIGHT -), -}; -// clang-format on diff --git a/src/keyboard/system76/15in_102/keymap/default.c b/src/keyboard/system76/15in_102/keymap/default.c index fc5d0160b..d6c54942e 100644 --- a/src/keyboard/system76/15in_102/keymap/default.c +++ b/src/keyboard/system76/15in_102/keymap/default.c @@ -16,9 +16,9 @@ LAYOUT( ), LAYOUT( K_ESC, K_TOUCHPAD, K_DISPLAY_TOGGLE, K_MUTE, K_F4, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, K_BRIGHTNESS_DOWN, K_BRIGHTNESS_UP, K_CAMERA_TOGGLE, K_AIRPLANE_MODE, K_SUSPEND, K_PRINT_SCREEN, K_SCROLL_LOCK, K_DEL, K_HOME, K_END, K_PAUSE, K_PAUSE, - K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, K_MIC_MUTE, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_KBD_COLOR, K_KBD_TOGGLE, K_KBD_DOWN, + K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, IF_CONFIG(HAVE_MIC_MUTE, K_MIC_MUTE, K_4), K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_KBD_COLOR, K_KBD_TOGGLE, K_KBD_DOWN, K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_KBD_UP, - K_FNLOCK, K_A, K_KB_PRIVACY, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6, + K_FNLOCK, K_A, IF_CONFIG(HAVE_KB_PRIVACY, K_KB_PRIVACY, K_S), K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6, K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_N, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT, K_UP, K_NUM_1, K_NUM_2, K_NUM_3, K_NUM_ENTER, K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD ) diff --git a/src/keyboard/system76/15in_102/keymap/micmute.c b/src/keyboard/system76/15in_102/keymap/micmute.c deleted file mode 100644 index c11afb431..000000000 --- a/src/keyboard/system76/15in_102/keymap/micmute.c +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -// Default layout - -#include - -// clang-format off -uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = { -LAYOUT( - K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN, - K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS, - K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_PLUS, - K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6, - K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_N, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT, K_UP, K_NUM_1, K_NUM_2, K_NUM_3, K_NUM_ENTER, - K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD -), -LAYOUT( - K_ESC, K_TOUCHPAD, K_DISPLAY_TOGGLE, K_MUTE, K_F4, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, K_BRIGHTNESS_DOWN, K_BRIGHTNESS_UP, K_CAMERA_TOGGLE, K_AIRPLANE_MODE, K_SUSPEND, K_PRINT_SCREEN, K_SCROLL_LOCK, K_DEL, K_HOME, K_END, K_PAUSE, K_PAUSE, - K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, K_MIC_MUTE, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_KBD_COLOR, K_KBD_TOGGLE, K_KBD_DOWN, - K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_KBD_UP, - K_FNLOCK, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6, - K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_N, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT, K_UP, K_NUM_1, K_NUM_2, K_NUM_3, K_NUM_ENTER, - K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD -) -}; -// clang-format on