diff --git a/src/board/system76/common/kbscan.c b/src/board/system76/common/kbscan.c index a417aa3..085a7bd 100644 --- a/src/board/system76/common/kbscan.c +++ b/src/board/system76/common/kbscan.c @@ -239,6 +239,18 @@ bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { } } break; + case COMBO_PAUSE: + if (kbscan_enabled) { + if (pressed) { + kbc_scancode(0xE1, true); + kbc_scancode(0x14, true); + kbc_scancode(0x77, true); + kbc_scancode(0xE1, true); + kbc_scancode(0x14, false); + kbc_scancode(0x77, false); + } + } + break; } break; case (KT_SCI): @@ -287,6 +299,7 @@ static inline bool key_should_repeat(uint16_t key) { case K_KBD_BKL: case K_KBD_COLOR: case K_KBD_TOGGLE: + case K_PAUSE: return false; } diff --git a/src/common/include/common/keymap.h b/src/common/include/common/keymap.h index 6c88058..7d77b9b 100644 --- a/src/common/include/common/keymap.h +++ b/src/common/include/common/keymap.h @@ -54,6 +54,8 @@ uint16_t keymap_translate(uint16_t key); #define K_DISPLAY_MODE (KT_COMBO | COMBO_DISPLAY_MODE) #define COMBO_PRINT_SCREEN 1 #define K_PRINT_SCREEN (KT_COMBO | COMBO_PRINT_SCREEN) +#define COMBO_PAUSE 2 +#define K_PAUSE (KT_COMBO | COMBO_PAUSE) // SCI #define KT_SCI (0x4000) @@ -167,7 +169,7 @@ uint16_t keymap_translate(uint16_t key); // Escape key #define K_ESC (0x76) -//TODO: Pause/break, sys request +//TODO: sys request // Scroll lock #define K_SCROLL_LOCK (0x7E) diff --git a/src/keyboard/system76/14in_86/keymap/default.c b/src/keyboard/system76/14in_86/keymap/default.c index 951a46c..7adbba3 100644 --- a/src/keyboard/system76/14in_86/keymap/default.c +++ b/src/keyboard/system76/14in_86/keymap/default.c @@ -7,7 +7,7 @@ // 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, 0 /* pause */, K_INSERT, K_DEL, + 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_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, @@ -15,7 +15,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, 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, 0 /*pause*/, K_NUM_LOCK, K_SCROLL_LOCK, + 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_4, K_5, K_6, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_ASTERISK, K_MINUS, K_EQUALS, K_BKSP, K_HOME, 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_BACKSLASH, K_PGUP, K_CAPS, K_A, 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_NUM_ENTER, K_PGDN, diff --git a/src/keyboard/system76/15in_102/keymap/default.c b/src/keyboard/system76/15in_102/keymap/default.c index 51092dd..12c3b93 100644 --- a/src/keyboard/system76/15in_102/keymap/default.c +++ b/src/keyboard/system76/15in_102/keymap/default.c @@ -15,7 +15,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, 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_PGUP, K_PGDN, + 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_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_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/keyboard/system76/15in_102_nkey/keymap/default.c b/src/keyboard/system76/15in_102_nkey/keymap/default.c index 51092dd..12c3b93 100644 --- a/src/keyboard/system76/15in_102_nkey/keymap/default.c +++ b/src/keyboard/system76/15in_102_nkey/keymap/default.c @@ -15,7 +15,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, 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_PGUP, K_PGDN, + 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_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_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,