diff --git a/src/board/system76/lemp13/board.c b/src/board/system76/lemp13/board.c new file mode 100644 index 0000000..2cb8a23 --- /dev/null +++ b/src/board/system76/lemp13/board.c @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-3.0-only + +#include +#include +#include +#include +#include + +void board_init(void) { + espi_init(); + + // Make sure charger is in off state, also enables PSYS + battery_charger_disable(); + + // Allow backlight to be turned on + gpio_set(&BKL_EN, true); + // Enable camera + gpio_set(&CCD_EN, true); +} + +void board_event(void) { + espi_event(); + + ec_read_post_codes(); +} diff --git a/src/board/system76/lemp13/board.mk b/src/board/system76/lemp13/board.mk new file mode 100644 index 0000000..8b829de --- /dev/null +++ b/src/board/system76/lemp13/board.mk @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: GPL-3.0-only + +board-y += board.c +board-y += gpio.c + +EC=ite +CONFIG_EC_ITE_IT5570E=y +CONFIG_EC_FLASH_SIZE_256K = y + +# Enable eSPI +CONFIG_BUS_ESPI=y +CONFIG_PECI_OVER_ESPI = y + +# Enable firmware security +CONFIG_SECURITY=y + +# Include keyboard +KEYBOARD=14in_81 + +# Set keyboard LED mechanism +CONFIG_HAVE_KBLED = y +KBLED=white_dac +CFLAGS+=-DKBLED_DAC=2 + +# Set touchpad PS2 bus +CFLAGS+=-DPS2_TOUCHPAD=PS2_3 + +# Set smart charger parameters +CHARGER=oz26786 +CFLAGS+=-DI2C_SMBUS=I2C_4 +CFLAGS+=\ + -DCHARGER_ADAPTER_RSENSE=5 \ + -DCHARGER_BATTERY_RSENSE=10 \ + -DCHARGER_CHARGE_CURRENT=1536 \ + -DCHARGER_CHARGE_VOLTAGE=17600 \ + -DCHARGER_INPUT_CURRENT=3420 + +# Set CPU power limits in watts +CFLAGS+=\ + -DPOWER_LIMIT_AC=65 \ + -DPOWER_LIMIT_DC=45 + +# Add system76 common code +include src/board/system76/common/common.mk diff --git a/src/board/system76/lemp13/gpio.c b/src/board/system76/lemp13/gpio.c new file mode 100644 index 0000000..3d0ba62 --- /dev/null +++ b/src/board/system76/lemp13/gpio.c @@ -0,0 +1,264 @@ +// SPDX-License-Identifier: GPL-3.0-only + +#include +#include + +// clang-format off +struct Gpio __code ACIN_N = GPIO(B, 0); +struct Gpio __code AC_PRESENT = GPIO(A, 4); +struct Gpio __code ALL_SYS_PWRGD = GPIO(C, 0); +struct Gpio __code BKL_EN = GPIO(C, 7); +struct Gpio __code BUF_PLT_RST_N = GPIO(D, 2); // renamed to ESPI_RESET# +struct Gpio __code CCD_EN = GPIO(D, 1); +struct Gpio __code CPU_C10_GATE_N = GPIO(F, 7); +struct Gpio __code DD_ON = GPIO(E, 4); +struct Gpio __code EC_EN = GPIO(B, 6); // renamed to SUSBC_EC# +struct Gpio __code EC_RSMRST_N = GPIO(E, 5); +struct Gpio __code LED_ACIN = GPIO(H, 2); +struct Gpio __code LED_PWR = GPIO(D, 4); +struct Gpio __code LID_SW_N = GPIO(B, 1); +struct Gpio __code ME_WE = GPIO(D, 7); +struct Gpio __code PCH_PWROK_EC = GPIO(F, 3); +struct Gpio __code PD_EN = GPIO(D, 0); // renamed to PD_POWER_EN +struct Gpio __code PWR_BTN_N = GPIO(D, 5); +struct Gpio __code PWR_SW_N = GPIO(B, 3); +struct Gpio __code SLP_S0_N = GPIO(B, 5); +struct Gpio __code SUSB_N_PCH = GPIO(H, 0); +struct Gpio __code SUSC_N_PCH = GPIO(H, 1); +struct Gpio __code VA_EC_EN = GPIO(J, 4); +struct Gpio __code WLAN_PWR_EN = GPIO(A, 3); +struct Gpio __code XLP_OUT = GPIO(B, 4); +// clang-format on + +void gpio_init(void) { + // Enable LPC reset on GPD2 + GCR = 0b10 << 1; + // Disable PECI + GCR2 = 0; + // Disable UARTs + GCR6 = 0; + // PWRSW WDT 2 Enable 1 + GCR8 = BIT(4); + // PWRSW WDT 2 Enable 2 + GCR9 = BIT(5); + // PWRSW counter 12 seconds + GCR10 = BIT(1); + // Enable SMBus channel 4 + GCR15 = BIT(4); + // Set GPB5 and GPD2 to 1.8V + GCR19 = BIT(7) | BIT(0); + // Set GPD3 to 1.8V, GPF2 and GPF3 to 3.3V + GCR20 = BIT(7); + // Set GPF7, GPH0, and GPH1 to 1.8V + GCR21 = BIT(5) | BIT(2) | BIT(1); + // Not documented + GCR22 = BIT(7); + // Set GPM6 power domain to VCC + GCR23 = BIT(0); + + // Set GPIO data + GPDRA = 0; + // XLP_OUT + GPDRB = BIT(4); + GPDRC = 0; + // PWR_BTN# + GPDRD = BIT(5); + // USB_PWR_EN + GPDRE = BIT(3); + // H_PECI + GPDRF = BIT(6); + // H_PROCHOT_EC + GPDRG = BIT(6); + GPDRH = 0; + GPDRI = 0; + // KBC_MUTE# + GPDRJ = BIT(1); + GPDRM = 0; + + // Set GPIO control + + // EC_PWM_LEDKB_P + GPCRA0 = GPIO_OUT; + // KBC_BEEP + GPCRA1 = GPIO_IN; + // CPU_FAN + GPCRA2 = GPIO_ALT; + // WLAN_PWR_EN + GPCRA3 = GPIO_OUT; + // AC_PRESENT_EC + GPCRA4 = GPIO_OUT; + // EC_PWM_LEDKB_R + GPCRA5 = GPIO_ALT; + // EC_PWM_LEDKB_G + GPCRA6 = GPIO_ALT; + // TBTA_VBUS_2_EN# + GPCRA7 = GPIO_IN; + + // AC_IN# + GPCRB0 = GPIO_IN | GPIO_UP; + // LID_SW# + GPCRB1 = GPIO_IN | GPIO_UP; + // PCIE_WAKE# + GPCRB2 = GPIO_IN; + // PWR_SW# + GPCRB3 = GPIO_IN; + // XLP_OUT + GPCRB4 = GPIO_OUT; + // SLP_S0# + GPCRB5 = GPIO_IN; + // SUSBC_EC# + GPCRB6 = GPIO_OUT; + // Does not exist + GPCRB7 = GPIO_IN; + + // ALL_SYS_PWRGD + GPCRC0 = GPIO_IN; + // SMB_CLK_EC + GPCRC1 = GPIO_ALT | GPIO_UP; + // SMB_DATA_EC + GPCRC2 = GPIO_ALT | GPIO_UP; + // KB-SO16 + GPCRC3 = GPIO_ALT | GPIO_UP; + // CNVI_DET# + GPCRC4 = GPIO_IN | GPIO_UP; + // KB-SO17 + GPCRC5 = GPIO_ALT | GPIO_UP; + // TMRI1-TEST + GPCRC6 = GPIO_IN; + // BKL_EN + GPCRC7 = GPIO_OUT; + + // PD_POWER_EN + GPCRD0 = GPIO_OUT; + // CCD_EN + GPCRD1 = GPIO_OUT; + // ESPI_RESET# + GPCRD2 = GPIO_ALT; + // SLP_A# + GPCRD3 = GPIO_IN; + // LED_PWR + GPCRD4 = GPIO_OUT; + // EC_PWR_BTN# + GPCRD5 = GPIO_OUT; + // CPU_FANSEN + GPCRD6 = GPIO_ALT | GPIO_DOWN; + // EC_ME_WE + GPCRD7 = GPIO_OUT; + + // SMC_BAT + GPCRE0 = GPIO_ALT | GPIO_UP; + // GPE1_TEST + GPCRE1 = GPIO_IN; + // ACE_I2C_IRQ2Z + GPCRE2 = GPIO_IN; + // USB_PWR_EN + GPCRE3 = GPIO_OUT; + // DD_ON + GPCRE4 = GPIO_OUT; + // EC_RSMRST# + GPCRE5 = GPIO_OUT; + // JACK_IN#_EC + GPCRE6 = GPIO_IN; + // SMD_BAT + GPCRE7 = GPIO_ALT | GPIO_UP; + + // 80CLK + GPCRF0 = GPIO_OUT; + // USB_CHARGE_EN + GPCRF1 = GPIO_OUT; + // 3IN1 + GPCRF2 = GPIO_OUT; + // PCH_PWROK_EC + GPCRF3 = GPIO_OUT; + // TP_CLK + GPCRF4 = GPIO_ALT | GPIO_UP; + // TP_DATA + GPCRF5 = GPIO_ALT | GPIO_UP; + // H_PECI + GPCRF6 = GPIO_ALT; + // CPU_C10_GATE# + GPCRF7 = GPIO_IN; + + // 10k pull-down + GPCRG0 = GPIO_IN; + // WLAN_EN + GPCRG1 = GPIO_IN; + // Pull up to VDD3 + GPCRG2 = GPIO_IN; + // ALSPI_CE# + GPCRG3 = GPIO_ALT; + // ALSPI_MSI + GPCRG4 = GPIO_ALT; + // ALSPI_MSO + GPCRG5 = GPIO_ALT; + // H_PROCHOT_EC + GPCRG6 = GPIO_OUT; + // ALSPI_SCLK + GPCRG7 = GPIO_ALT; + + // SUSB#_PCH + GPCRH0 = GPIO_IN; + // SUSC#_PCH + GPCRH1 = GPIO_IN; + // LED_ACIN + GPCRH2 = GPIO_OUT; + // 3G_EN + GPCRH3 = GPIO_OUT; + // 3G_PWR_EN + GPCRH4 = GPIO_OUT; + // TBTA_VBUS_1_EN# + GPCRH5 = GPIO_IN; + // Not connected + GPCRH6 = GPIO_IN; + // Not connected + GPCRH7 = GPIO_IN; + + // BAT_DET + GPCRI0 = GPIO_ALT; + // BAT_VOLT + GPCRI1 = GPIO_ALT; + // RGBKB-DET# + GPCRI2 = GPIO_IN | GPIO_UP; + // THERM_VOLT_CPU_1 + GPCRI3 = GPIO_ALT; + // TOTAL_CUR + GPCRI4 = GPIO_ALT; + // Not connected + GPCRI5 = GPIO_IN; + // THERM_VOLT_CPU_2 + GPCRI6 = GPIO_ALT; + // MODEL_ID + GPCRI7 = GPIO_IN; + + // SINK_CTRL_EC_1 + GPCRJ0 = GPIO_IN; + // KBC_MUTE# + GPCRJ1 = GPIO_OUT; + // KBLIGHT_ADJ + GPCRJ2 = GPIO_ALT; + // SINK_CTRL_EC_2 + GPCRJ3 = GPIO_IN; + // VA_EC_EN + GPCRJ4 = GPIO_OUT; + // VBATT_BOOST# + GPCRJ5 = GPIO_IN; + // EC_GPIO + GPCRJ6 = GPIO_OUT; + // LEDKB_DET# + GPCRJ7 = GPIO_IN | GPIO_UP; + + // ESPI_IO0_EC + GPCRM0 = GPIO_ALT | GPIO_UP | GPIO_DOWN; + // ESPI_IO1_EC + GPCRM1 = GPIO_ALT | GPIO_UP | GPIO_DOWN; + // ESPI_IO2_EC + GPCRM2 = GPIO_ALT | GPIO_UP | GPIO_DOWN; + // ESPI_IO3_EC + GPCRM3 = GPIO_ALT | GPIO_UP | GPIO_DOWN; + // ESPI_CLK_EC + GPCRM4 = GPIO_ALT | GPIO_UP | GPIO_DOWN; + // ESPI_CS_EC# + GPCRM5 = GPIO_ALT; + // ESPI_ALRT0# + GPCRM6 = GPIO_IN | GPIO_UP | GPIO_DOWN; +} diff --git a/src/board/system76/lemp13/include/board/gpio.h b/src/board/system76/lemp13/include/board/gpio.h new file mode 100644 index 0000000..ce8d08d --- /dev/null +++ b/src/board/system76/lemp13/include/board/gpio.h @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-3.0-only + +#ifndef _BOARD_GPIO_H +#define _BOARD_GPIO_H + +#include + +void gpio_init(void); + +// clang-format off +extern struct Gpio __code ACIN_N; +extern struct Gpio __code AC_PRESENT; +extern struct Gpio __code ALL_SYS_PWRGD; +extern struct Gpio __code BKL_EN; +#define HAVE_BT_EN 0 +extern struct Gpio __code BUF_PLT_RST_N; +extern struct Gpio __code CCD_EN; +extern struct Gpio __code CPU_C10_GATE_N; +extern struct Gpio __code DD_ON; +extern struct Gpio __code EC_EN; +extern struct Gpio __code EC_RSMRST_N; +#define HAVE_LAN_WAKEUP_N 0 +extern struct Gpio __code LED_ACIN; +#define HAVE_LED_AIRPLANE_N 0 +#define HAVE_LED_BAT_CHG 0 +#define HAVE_LED_BAT_FULL 0 +extern struct Gpio __code LED_PWR; +extern struct Gpio __code LID_SW_N; +extern struct Gpio __code ME_WE; +#define HAVE_PCH_DPWROK_EC 0 +extern struct Gpio __code PCH_PWROK_EC; +#define HAVE_PD_EN 1 +extern struct Gpio __code PD_EN; +#define HAVE_PM_PWROK 0 +extern struct Gpio __code PWR_BTN_N; +extern struct Gpio __code PWR_SW_N; +extern struct Gpio __code SLP_S0_N; +#define HAVE_SLP_SUS_N 0 +extern struct Gpio __code SUSB_N_PCH; +extern struct Gpio __code SUSC_N_PCH; +#define HAVE_SUSWARN_N 0 +#define HAVE_SUS_PWR_ACK 0 +extern struct Gpio __code VA_EC_EN; +#define HAVE_WLAN_EN 0 +extern struct Gpio __code WLAN_PWR_EN; +extern struct Gpio __code XLP_OUT; +// clang-format on + +#endif // _BOARD_GPIO_H diff --git a/src/keyboard/system76/14in_81/include/board/keymap.h b/src/keyboard/system76/14in_81/include/board/keymap.h new file mode 100644 index 0000000..2635cd0 --- /dev/null +++ b/src/keyboard/system76/14in_81/include/board/keymap.h @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: GPL-3.0-only + +#ifndef _BOARD_KEYMAP_H +#define _BOARD_KEYMAP_H + +// Keymap layers (normal, Fn) +#define KM_LAY 2 +// Keymap output pins +#define KM_OUT 16 +// Keymap input pins +#define KM_IN 8 + +// common/keymap.h requires KM_LAY, KM_OUT, and KM_IN definitions +#include + +// clang-format off +// Conversion of physical ANSI layout to keyboard matrix +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59 \ +) { \ + /* 0, 1, 2, 3, 4, 5, 6, 7 */ \ +/*0*/ { ___, ___, ___, K54, ___, ___, ___, K52 }, \ +/*1*/ { ___, ___, ___, ___, ___, K56, K50, ___ }, \ +/*2*/ { ___, ___, ___, K55, K53, ___, ___, ___ }, \ +/*3*/ { ___, K4A, K40, ___, ___, ___, ___, ___ }, \ +/*4*/ { ___, K41, K30, K33, K20, K43, ___, K21 }, \ +/*5*/ { ___, K42, ___, K31, K23, ___, ___, K11 }, \ +/*6*/ { K51, K45, K27, K35, K24, ___, K44, ___ }, \ +/*7*/ { K32, K46, K36, ___, K26, K12, K10, K00 }, \ +/*8*/ { K28, K47, K34, K25, K15, K13, K02, K03 }, \ +/*9*/ { K22, K17, K38, ___, K14, K04, K16, K01 }, \ +/*10*/{ K1A, K48, K39, K29, K19, K18, K06, K05 }, \ +/*11*/{ K4B, K37, K49, K3A, K2A, ___, K08, K07 }, \ +/*12*/{ ___, ___, K4C, K3B, K2B, K1B, K0A, K09 }, \ +/*13*/{ ___, ___, K0D, K2C, K1C, K0B, K0E, K59 }, \ +/*14*/{ ___, K2D, K57, K1D, ___, K0F, ___, K0G }, \ +/*15*/{ ___, ___, K3C, ___, K0C, ___, ___, K58 } \ +} +// clang-format on + +// Position of physical Esc key in the matrix +#define MATRIX_ESC_INPUT 7 +#define MATRIX_ESC_OUTPUT 7 + +// Position of physical Fn key in the matrix +#define MATRIX_FN_INPUT 0 +#define MATRIX_FN_OUTPUT 6 + +static inline bool keymap_is_f_key(uint8_t row, uint8_t col) { + switch (row) { + case 8: + // F2, F3 + return col == 6 || col == 7; + case 9: + // F4, F1 + return col == 5 || col == 7; + case 10: + // F6, F5 + return col == 6 || col == 7; + case 11: + // F8, F7 + return col == 6 || col == 7; + case 12: + // F10, F9 + return col == 6 || col == 7; + case 13: + // F11 + return col == 5; + case 15: + // F12 + return col == 4; + default: + return false; + } +} + +#endif // _BOARD_KEYMAP_H diff --git a/src/keyboard/system76/14in_81/keyboard.mk b/src/keyboard/system76/14in_81/keyboard.mk new file mode 100644 index 0000000..5b7eafc --- /dev/null +++ b/src/keyboard/system76/14in_81/keyboard.mk @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-3.0-only + +KEYMAP?=default +keyboard-y += keymap/$(KEYMAP).c + +INCLUDE += $(KEYBOARD_DIR)/keyboard.mk +CFLAGS+=-I$(KEYBOARD_DIR)/include diff --git a/src/keyboard/system76/14in_81/keymap/default.c b/src/keyboard/system76/14in_81/keymap/default.c new file mode 100644 index 0000000..0e685ab --- /dev/null +++ b/src/keyboard/system76/14in_81/keymap/default.c @@ -0,0 +1,26 @@ +// 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_PAUSE, 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_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, + 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_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_RIGHT, K_DOWN +), +LAYOUT( + K_ESC, K_TOUCHPAD, K_MIC_MUTE, 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_INSERT, K_PAUSE, K_DEL, + 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_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, + 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_PGUP, + K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_HOME, K_END, K_PGDN +) +}; +// clang-format on diff --git a/src/keyboard/system76/14in_81/keymap/jeremy.c b/src/keyboard/system76/14in_81/keymap/jeremy.c new file mode 100644 index 0000000..7df5ab1 --- /dev/null +++ b/src/keyboard/system76/14in_81/keymap/jeremy.c @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-3.0-only + +// Jeremy's 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_PAUSE, 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_BACKSLASH, + KT_FN, 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_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_LEFT_CTRL, KT_FN, K_LEFT_ALT, K_LEFT_SUPER, K_SPACE, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_RIGHT, K_DOWN +), +LAYOUT( + K_ESC, K_TOUCHPAD, K_MIC_MUTE, 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_INSERT, K_PAUSE, K_DEL, + 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_DEL, + 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, + K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_END, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT, K_PGUP, + K_LEFT_CTRL, KT_FN, K_LEFT_ALT, K_LEFT_SUPER, K_ESC, K_RIGHT_ALT, K_APP, K_HOME, K_END, K_PGDN +) +}; +// clang-format on diff --git a/src/keyboard/system76/18H9LHA04/keymap/jeremy.c b/src/keyboard/system76/18H9LHA04/keymap/jeremy.c new file mode 100644 index 0000000..54dde98 --- /dev/null +++ b/src/keyboard/system76/18H9LHA04/keymap/jeremy.c @@ -0,0 +1,26 @@ +// 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, + KT_FN, 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_ALT, K_LEFT_SUPER, K_SPACE, KT_FN, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD +), +LAYOUT( + K_ESC, K_TOUCHPAD, K_MIC_MUTE, 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_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN, + 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_DEL, 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_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_KBD_UP, + 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_NUM_4, K_NUM_5, K_NUM_6, + K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_END, 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_ALT, K_LEFT_SUPER, K_ESC, KT_FN, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD +) +}; +// clang-format on