diff --git a/src/board/system76/darp5/kbscan.c b/src/board/system76/darp5/kbscan.c index 013368b..275acab 100644 --- a/src/board/system76/darp5/kbscan.c +++ b/src/board/system76/darp5/kbscan.c @@ -46,6 +46,17 @@ bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { break; case (KT_COMBO): switch (key & 0xFF) { + case COMBO_DISPLAY_MODE: + if (kbscan_enabled) { + if (pressed) { + kbc_scancode(&KBC, K_LEFT_SUPER, pressed); + kbc_scancode(&KBC, K_P, pressed); + } else { + kbc_scancode(&KBC, K_P, pressed); + kbc_scancode(&KBC, K_LEFT_SUPER, pressed); + } + } + break; case COMBO_PRINT_SCREEN: if (kbscan_enabled) { if (pressed) { diff --git a/src/board/system76/darp5/keymap/default.c b/src/board/system76/darp5/keymap/default.c index e9bde89..7bac373 100644 --- a/src/board/system76/darp5/keymap/default.c +++ b/src/board/system76/darp5/keymap/default.c @@ -12,7 +12,7 @@ LAYOUT( 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, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, K_F4, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN, + K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, K_F4, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN, K_PLAY_PAUSE, 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, diff --git a/src/board/system76/galp3-c/kbscan.c b/src/board/system76/galp3-c/kbscan.c index 77f2582..05a7446 100644 --- a/src/board/system76/galp3-c/kbscan.c +++ b/src/board/system76/galp3-c/kbscan.c @@ -47,6 +47,17 @@ bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { break; case (KT_COMBO): switch (key & 0xFF) { + case COMBO_DISPLAY_MODE: + if (kbscan_enabled) { + if (pressed) { + kbc_scancode(&KBC, K_LEFT_SUPER, pressed); + kbc_scancode(&KBC, K_P, pressed); + } else { + kbc_scancode(&KBC, K_P, pressed); + kbc_scancode(&KBC, K_LEFT_SUPER, pressed); + } + } + break; case COMBO_PRINT_SCREEN: if (kbscan_enabled) { if (pressed) { diff --git a/src/board/system76/galp3-c/keymap/default.c b/src/board/system76/galp3-c/keymap/default.c index 431d96e..f670879 100644 --- a/src/board/system76/galp3-c/keymap/default.c +++ b/src/board/system76/galp3-c/keymap/default.c @@ -12,7 +12,7 @@ LAYOUT( 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 ), LAYOUT( - K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, 0 /*pause*/, K_INSERT, K_DEL, + K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, 0 /*pause*/, K_INSERT, K_DEL, K_PLAY_PAUSE, 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_HOME, 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_PGUP, 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_PGDN, diff --git a/src/board/system76/galp3-c/keymap/jeremy.c b/src/board/system76/galp3-c/keymap/jeremy.c index 4457689..c8a2208 100644 --- a/src/board/system76/galp3-c/keymap/jeremy.c +++ b/src/board/system76/galp3-c/keymap/jeremy.c @@ -12,7 +12,7 @@ LAYOUT( K_LEFT_CTRL, KT_FN, K_LEFT_ALT, K_LEFT_SUPER, K_SPACE, KT_FN, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT ), LAYOUT( - K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, 0 /*pause*/, K_INSERT, K_DEL, + K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, 0 /*pause*/, K_INSERT, K_DEL, K_PLAY_PAUSE, 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_HOME, K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP, KT_FN, K_A, K_S, K_D, K_F, K_G, K_LEFT, K_DOWN, K_UP, K_RIGHT, K_BKSP, K_DEL, K_ENTER, K_PGDN, diff --git a/src/board/system76/lemp9/kbscan.c b/src/board/system76/lemp9/kbscan.c index 77f2582..05a7446 100644 --- a/src/board/system76/lemp9/kbscan.c +++ b/src/board/system76/lemp9/kbscan.c @@ -47,6 +47,17 @@ bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { break; case (KT_COMBO): switch (key & 0xFF) { + case COMBO_DISPLAY_MODE: + if (kbscan_enabled) { + if (pressed) { + kbc_scancode(&KBC, K_LEFT_SUPER, pressed); + kbc_scancode(&KBC, K_P, pressed); + } else { + kbc_scancode(&KBC, K_P, pressed); + kbc_scancode(&KBC, K_LEFT_SUPER, pressed); + } + } + break; case COMBO_PRINT_SCREEN: if (kbscan_enabled) { if (pressed) { diff --git a/src/board/system76/lemp9/keymap/default.c b/src/board/system76/lemp9/keymap/default.c index 930ce7e..d86210a 100644 --- a/src/board/system76/lemp9/keymap/default.c +++ b/src/board/system76/lemp9/keymap/default.c @@ -13,7 +13,7 @@ LAYOUT( K_LEFT, K_DOWN, K_RIGHT ), LAYOUT( - K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL, + K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL, K_PLAY_PAUSE, 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_BACKSLASH, 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, diff --git a/src/board/system76/lemp9/keymap/jeremy.c b/src/board/system76/lemp9/keymap/jeremy.c index 5be465a..28737dc 100644 --- a/src/board/system76/lemp9/keymap/jeremy.c +++ b/src/board/system76/lemp9/keymap/jeremy.c @@ -13,7 +13,7 @@ LAYOUT( K_LEFT, K_DOWN, K_RIGHT ), LAYOUT( - K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL, + K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL, K_PLAY_PAUSE, 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_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, KT_FN, K_A, K_S, K_D, K_F, K_G, K_LEFT, K_DOWN, K_UP, K_RIGHT, K_BKSP, K_DEL, K_ENTER, diff --git a/src/common/include/common/keymap.h b/src/common/include/common/keymap.h index 592f95a..553da99 100644 --- a/src/common/include/common/keymap.h +++ b/src/common/include/common/keymap.h @@ -18,14 +18,15 @@ uint16_t keymap_translate(uint16_t key); // Combinations #define KT_COMBO (0x2000) -#define COMBO_PRINT_SCREEN 0 +#define COMBO_DISPLAY_MODE 0 +#define K_DISPLAY_MODE (KT_COMBO | COMBO_DISPLAY_MODE) +#define COMBO_PRINT_SCREEN 1 #define K_PRINT_SCREEN (KT_COMBO | COMBO_PRINT_SCREEN) // SCI #define KT_SCI (0x4000) #define SCI_DISPLAY_TOGGLE (0x0B) -#define SCI_DISPLAY_MODE (0x10) #define SCI_BRIGHTNESS_DOWN (0x11) #define SCI_BRIGHTNESS_UP (0x12) #define SCI_CAMERA_TOGGLE (0x13)