From cfa35dcb2d332977e80a5811b6d42e9949bd4814 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sat, 5 Aug 2023 23:30:58 +0200 Subject: Use a macro to wrap code in tags --- Makefile | 2 +- include/fmt-code | 3 + include/lib.m4 | 5 ++ src/srp/fw-ec/fn-lock-1.diff.html | 24 +++--- src/srp/fw-ec/fn-lock-2.diff.html | 72 ++++++++-------- src/srp/fw-ec/hybrid.diff.html | 176 +++++++++++++++++++------------------- src/srp/fw-ec/index.html | 10 +-- src/srp/fw-ec/kbd-sc-cb.c.html | 12 +-- src/srp/fw-ec/led.diff.html | 64 +++++++------- src/style.css | 2 +- 10 files changed, 189 insertions(+), 181 deletions(-) create mode 100755 include/fmt-code diff --git a/Makefile b/Makefile index 80bb6b3..13074ae 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ out/%: src/% @printf 'CP\t%s\n' "$@" out/%.html: src/%.html ${includes} src/style.css - @m4 -P ${foreach dir,${^D},-I${dir}} include/lib.m4 $< >$@ + @PATH="$$PATH:./include" m4 -P ${foreach dir,${^D},-I${dir}} include/lib.m4 $< >$@ @printf 'M4\t%s\n' "$@" src/srp/fw-ec/index.html: ${call gendeps,src/srp/fw-ec} diff --git a/include/fmt-code b/include/fmt-code new file mode 100755 index 0000000..9da3828 --- /dev/null +++ b/include/fmt-code @@ -0,0 +1,3 @@ +#!/bin/sh + +sed 's|.*|&|' "${2%/*}/$1" diff --git a/include/lib.m4 b/include/lib.m4 index 5d6cf72..2535ed2 100644 --- a/include/lib.m4 +++ b/include/lib.m4 @@ -2,3 +2,8 @@ m4_define( m4_footer, `m4_define(`m4___caller__', m4___file__)m4_include(footer.html)' ) + +m4_define( + m4_fmt_code, + `m4_esyscmd(fmt-code "$1" m4___file__)m4_dnl' +) diff --git a/src/srp/fw-ec/fn-lock-1.diff.html b/src/srp/fw-ec/fn-lock-1.diff.html index fb48204..9222d4b 100644 --- a/src/srp/fw-ec/fn-lock-1.diff.html +++ b/src/srp/fw-ec/fn-lock-1.diff.html @@ -1,12 +1,12 @@ -diff --git a/board/hx20/board.h b/board/hx20/board.h -index 7b4ea288a..cfc6a61a2 100644 ---- a/board/hx20/board.h -+++ b/board/hx20/board.h -@@ -218,7 +218,6 @@ - #define CONFIG_CMD_LEDTEST - #define CONFIG_LED_PWM_COUNT 3 - #define CONFIG_LED_PWM_TASK_DISABLED --#define CONFIG_CAPSLED_SUPPORT - - #ifdef CONFIG_ACCEL_KX022 - #define CONFIG_LID_ANGLE +diff --git a/board/hx20/board.h b/board/hx20/board.h +index 7b4ea288a..cfc6a61a2 100644 +--- a/board/hx20/board.h ++++ b/board/hx20/board.h +@@ -218,7 +218,6 @@ + #define CONFIG_CMD_LEDTEST + #define CONFIG_LED_PWM_COUNT 3 + #define CONFIG_LED_PWM_TASK_DISABLED +-#define CONFIG_CAPSLED_SUPPORT + + #ifdef CONFIG_ACCEL_KX022 + #define CONFIG_LID_ANGLE diff --git a/src/srp/fw-ec/fn-lock-2.diff.html b/src/srp/fw-ec/fn-lock-2.diff.html index b3880e0..f1a7a39 100644 --- a/src/srp/fw-ec/fn-lock-2.diff.html +++ b/src/srp/fw-ec/fn-lock-2.diff.html @@ -1,36 +1,36 @@ -diff --git a/board/hx20/keyboard_customization.c b/board/hx20/keyboard_customization.c -index 2b91f2e0c..9a5050a0f 100644 ---- a/board/hx20/keyboard_customization.c -+++ b/board/hx20/keyboard_customization.c -@@ -249,6 +249,23 @@ int fn_table_set(int8_t pressed, uint32_t fn_bit) - return false; - } - -+static void hx20_update_fnkey_led(void) { -+ /* Turn the capslock light into a fn-lock light */ -+ gpio_set_level(GPIO_CAP_LED_L, (Fn_key & FN_LOCKED) ? 1 : 0); -+} -+ -+/* Set the fn-lock light to the correct setting when the system resumes */ -+void hx20_fnkey_resume(void) { -+ hx20_update_fnkey_led(); -+} -+DECLARE_HOOK(HOOK_CHIPSET_RESUME, hx20_fnkey_resume, HOOK_PRIO_DEFAULT); -+ -+/* Disable the fn-lock light on suspend */ -+void hx20_fnkey_suspend(void) { -+ gpio_set_level(GPIO_CAP_LED_L, 0); -+} -+DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, hx20_fnkey_suspend, HOOK_PRIO_DEFAULT); -+ - void fnkey_shutdown(void) { - uint8_t current_kb = 0; - -@@ -420,6 +437,7 @@ int functional_hotkey(uint16_t *key_code, int8_t pressed) - Fn_key &= ~FN_LOCKED; - else - Fn_key |= FN_LOCKED; -+ hx20_update_fnkey_led(); - } - return EC_ERROR_UNIMPLEMENTED; - } +diff --git a/board/hx20/keyboard_customization.c b/board/hx20/keyboard_customization.c +index 2b91f2e0c..9a5050a0f 100644 +--- a/board/hx20/keyboard_customization.c ++++ b/board/hx20/keyboard_customization.c +@@ -249,6 +249,23 @@ int fn_table_set(int8_t pressed, uint32_t fn_bit) + return false; + } + ++static void hx20_update_fnkey_led(void) { ++ /* Turn the capslock light into a fn-lock light */ ++ gpio_set_level(GPIO_CAP_LED_L, (Fn_key & FN_LOCKED) ? 1 : 0); ++} ++ ++/* Set the fn-lock light to the correct setting when the system resumes */ ++void hx20_fnkey_resume(void) { ++ hx20_update_fnkey_led(); ++} ++DECLARE_HOOK(HOOK_CHIPSET_RESUME, hx20_fnkey_resume, HOOK_PRIO_DEFAULT); ++ ++/* Disable the fn-lock light on suspend */ ++void hx20_fnkey_suspend(void) { ++ gpio_set_level(GPIO_CAP_LED_L, 0); ++} ++DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, hx20_fnkey_suspend, HOOK_PRIO_DEFAULT); ++ + void fnkey_shutdown(void) { + uint8_t current_kb = 0; + +@@ -420,6 +437,7 @@ int functional_hotkey(uint16_t *key_code, int8_t pressed) + Fn_key &= ~FN_LOCKED; + else + Fn_key |= FN_LOCKED; ++ hx20_update_fnkey_led(); + } + return EC_ERROR_UNIMPLEMENTED; + } diff --git a/src/srp/fw-ec/hybrid.diff.html b/src/srp/fw-ec/hybrid.diff.html index a37d3b5..0ad9717 100644 --- a/src/srp/fw-ec/hybrid.diff.html +++ b/src/srp/fw-ec/hybrid.diff.html @@ -1,88 +1,88 @@ -diff --git a/board/hx20/keyboard_customization.c b/board/hx20/keyboard_customization.c -index 9a5050a0f..2756f17ce 100644 ---- a/board/hx20/keyboard_customization.c -+++ b/board/hx20/keyboard_customization.c -@@ -22,12 +22,15 @@ - #define CPRINTS(format, args...) cprints(CC_KEYBOARD, format, ## args) - #define CPRINTF(format, args...) cprintf(CC_KEYBOARD, format, ## args) - -+/* The scancode for the caps-lock key, which is now a hybrid key */ -+#define SCANCODE_CTRL_ESC 0x0101 -+ - uint16_t scancode_set2[KEYBOARD_COLS_MAX][KEYBOARD_ROWS] = { - {0x0021, 0x007B, 0x0079, 0x0072, 0x007A, 0x0071, 0x0069, 0xe04A}, - {0xe071, 0xe070, 0x007D, 0xe01f, 0x006c, 0xe06c, 0xe07d, 0x0077}, - {0x0015, 0x0070, 0x00ff, 0x000D, 0x000E, 0x0016, 0x0067, 0x001c}, - {0xe011, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, -- {0xe05a, 0x0029, 0x0024, 0x000c, 0x0058, 0x0026, 0x0004, 0xe07a}, -+ {0xe05a, 0x0029, 0x0024, 0x000c, 0x0101, 0x0026, 0x0004, 0xe07a}, - {0x0022, 0x001a, 0x0006, 0x0005, 0x001b, 0x001e, 0x001d, 0x0076}, - {0x002A, 0x0032, 0x0034, 0x002c, 0x002e, 0x0025, 0x002d, 0x002b}, - {0x003a, 0x0031, 0x0033, 0x0035, 0x0036, 0x003d, 0x003c, 0x003b}, -@@ -497,6 +500,55 @@ int functional_hotkey(uint16_t *key_code, int8_t pressed) - return EC_SUCCESS; - } - -+int try_ctrl_esc(uint16_t *key_code, int8_t pressed) { -+ static enum { -+ NONE, -+ HELD, -+ CTRL -+ } ctrl_esc_state; -+ -+ if (*key_code == SCANCODE_CTRL_ESC) { -+ /* If we pressed the caps key, enter the HELD state. Otherwise, -+ * we are either releasing from the HELD state or the CTRL -+ * state. In both cases we should reset the state to NONE, but -+ * when releasing from the HELD state we want to send an ESC and -+ * when releasing from the CTRL state we want to end the CTRL. -+ * -+ * Also important to note is that even before we know if we’re -+ * going to be acting as ESC or CTRL, we need to send a press- -+ * event of the CTRL key because you can chord CTRL with mouse- -+ * clicks too, not just other keys. -+ */ -+ if (pressed) { -+ ctrl_esc_state = HELD; -+ simulate_keyboard(SCANCODE_LEFT_CTRL, 1); -+ } else if (ctrl_esc_state == HELD) { -+ ctrl_esc_state = NONE; -+ simulate_keyboard(SCANCODE_LEFT_CTRL, 0); -+ simulate_keyboard(SCANCODE_ESC, 1); -+ simulate_keyboard(SCANCODE_ESC, 0); -+ } else if (ctrl_esc_state == CTRL) { -+ ctrl_esc_state = NONE; -+ simulate_keyboard(SCANCODE_LEFT_CTRL, 0); -+ } -+ -+ return EC_ERROR_UNIMPLEMENTED; -+ } -+ -+ /* If we get here then we are dealing with a key that isn’t the caps -+ * key. In that case we need to handle all 3 states. If the state is -+ * NONE then we can just exit from this function. If it’s HELD and we -+ * are pressing a key, then that’s a key-chord and we need to start a -+ * CTRL. Finally, if we are in the CTRL state, there is nothing to do. -+ */ -+ if (ctrl_esc_state == HELD && pressed) { -+ ctrl_esc_state = CTRL; -+ simulate_keyboard(SCANCODE_LEFT_CTRL, 1); -+ } -+ -+ return EC_SUCCESS; -+} -+ - enum ec_error_list keyboard_scancode_callback(uint16_t *make_code, - int8_t pressed) - { -@@ -521,6 +573,10 @@ enum ec_error_list keyboard_scancode_callback(uint16_t *make_code, - if (!pos_get_state()) - return EC_SUCCESS; - -+ r = try_ctrl_esc(make_code, pressed); -+ if (r != EC_SUCCESS) -+ return r; -+ - r = hotkey_F1_F12(make_code, Fn_key, pressed); - if (r != EC_SUCCESS) - return r; +diff --git a/board/hx20/keyboard_customization.c b/board/hx20/keyboard_customization.c +index 9a5050a0f..2756f17ce 100644 +--- a/board/hx20/keyboard_customization.c ++++ b/board/hx20/keyboard_customization.c +@@ -22,12 +22,15 @@ + #define CPRINTS(format, args...) cprints(CC_KEYBOARD, format, ## args) + #define CPRINTF(format, args...) cprintf(CC_KEYBOARD, format, ## args) + ++/* The scancode for the caps-lock key, which is now a hybrid key */ ++#define SCANCODE_CTRL_ESC 0x0101 ++ + uint16_t scancode_set2[KEYBOARD_COLS_MAX][KEYBOARD_ROWS] = { + {0x0021, 0x007B, 0x0079, 0x0072, 0x007A, 0x0071, 0x0069, 0xe04A}, + {0xe071, 0xe070, 0x007D, 0xe01f, 0x006c, 0xe06c, 0xe07d, 0x0077}, + {0x0015, 0x0070, 0x00ff, 0x000D, 0x000E, 0x0016, 0x0067, 0x001c}, + {0xe011, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, +- {0xe05a, 0x0029, 0x0024, 0x000c, 0x0058, 0x0026, 0x0004, 0xe07a}, ++ {0xe05a, 0x0029, 0x0024, 0x000c, 0x0101, 0x0026, 0x0004, 0xe07a}, + {0x0022, 0x001a, 0x0006, 0x0005, 0x001b, 0x001e, 0x001d, 0x0076}, + {0x002A, 0x0032, 0x0034, 0x002c, 0x002e, 0x0025, 0x002d, 0x002b}, + {0x003a, 0x0031, 0x0033, 0x0035, 0x0036, 0x003d, 0x003c, 0x003b}, +@@ -497,6 +500,55 @@ int functional_hotkey(uint16_t *key_code, int8_t pressed) + return EC_SUCCESS; + } + ++int try_ctrl_esc(uint16_t *key_code, int8_t pressed) { ++ static enum { ++ NONE, ++ HELD, ++ CTRL ++ } ctrl_esc_state; ++ ++ if (*key_code == SCANCODE_CTRL_ESC) { ++ /* If we pressed the caps key, enter the HELD state. Otherwise, ++ * we are either releasing from the HELD state or the CTRL ++ * state. In both cases we should reset the state to NONE, but ++ * when releasing from the HELD state we want to send an ESC and ++ * when releasing from the CTRL state we want to end the CTRL. ++ * ++ * Also important to note is that even before we know if we’re ++ * going to be acting as ESC or CTRL, we need to send a press- ++ * event of the CTRL key because you can chord CTRL with mouse- ++ * clicks too, not just other keys. ++ */ ++ if (pressed) { ++ ctrl_esc_state = HELD; ++ simulate_keyboard(SCANCODE_LEFT_CTRL, 1); ++ } else if (ctrl_esc_state == HELD) { ++ ctrl_esc_state = NONE; ++ simulate_keyboard(SCANCODE_LEFT_CTRL, 0); ++ simulate_keyboard(SCANCODE_ESC, 1); ++ simulate_keyboard(SCANCODE_ESC, 0); ++ } else if (ctrl_esc_state == CTRL) { ++ ctrl_esc_state = NONE; ++ simulate_keyboard(SCANCODE_LEFT_CTRL, 0); ++ } ++ ++ return EC_ERROR_UNIMPLEMENTED; ++ } ++ ++ /* If we get here then we are dealing with a key that isn’t the caps ++ * key. In that case we need to handle all 3 states. If the state is ++ * NONE then we can just exit from this function. If it’s HELD and we ++ * are pressing a key, then that’s a key-chord and we need to start a ++ * CTRL. Finally, if we are in the CTRL state, there is nothing to do. ++ */ ++ if (ctrl_esc_state == HELD && pressed) { ++ ctrl_esc_state = CTRL; ++ simulate_keyboard(SCANCODE_LEFT_CTRL, 1); ++ } ++ ++ return EC_SUCCESS; ++} ++ + enum ec_error_list keyboard_scancode_callback(uint16_t *make_code, + int8_t pressed) + { +@@ -521,6 +573,10 @@ enum ec_error_list keyboard_scancode_callback(uint16_t *make_code, + if (!pos_get_state()) + return EC_SUCCESS; + ++ r = try_ctrl_esc(make_code, pressed); ++ if (r != EC_SUCCESS) ++ return r; ++ + r = hotkey_F1_F12(make_code, Fn_key, pressed); + if (r != EC_SUCCESS) + return r; diff --git a/src/srp/fw-ec/index.html b/src/srp/fw-ec/index.html index c787191..f528ab9 100644 --- a/src/srp/fw-ec/index.html +++ b/src/srp/fw-ec/index.html @@ -76,7 +76,7 @@
~/board/hx20/led.c
-
m4_include(led.diff.html)
+
m4_fmt_code(led.diff.html)

@@ -115,14 +115,14 @@

~/board/hx20/board.h
-
m4_include(fn-lock-1.diff.html)
+
m4_fmt_code(fn-lock-1.diff.html)
~/board/hx20/keyboard-customization.c
-
m4_include(fn-lock-2.diff.html)
+
m4_fmt_code(fn-lock-2.diff.html)

@@ -206,7 +206,7 @@

~/board/hx20/keyboard_customization.c
-
m4_include(hybrid.diff.html)
+
m4_fmt_code(hybrid.diff.html)

@@ -221,7 +221,7 @@ keyboard_scancode_callback() in ~/board/hx20/keyboard_customization.c -

m4_include(kbd-sc-cb.c.html)
+
m4_fmt_code(kbd-sc-cb.c.html)

diff --git a/src/srp/fw-ec/kbd-sc-cb.c.html b/src/srp/fw-ec/kbd-sc-cb.c.html index ee98ccf..34b7f8d 100644 --- a/src/srp/fw-ec/kbd-sc-cb.c.html +++ b/src/srp/fw-ec/kbd-sc-cb.c.html @@ -1,6 +1,6 @@ -/* “make_code” is the scancode. “pressed” is a boolean that is true if this is a - keydown event, and false if it’s a keyup. */ - -r = my_handler_function(make_code, pressed); -if (r != EC_SUCCESS) - return r; +/* “make_code” is the scancode. “pressed” is a boolean that is true if this is a + keydown event, and false if it’s a keyup. */ + +r = my_handler_function(make_code, pressed); +if (r != EC_SUCCESS) + return r; diff --git a/src/srp/fw-ec/led.diff.html b/src/srp/fw-ec/led.diff.html index 43f4e4f..9959b0d 100644 --- a/src/srp/fw-ec/led.diff.html +++ b/src/srp/fw-ec/led.diff.html @@ -1,32 +1,32 @@ -diff --git a/board/hx20/led.c b/board/hx20/led.c -index a4dc4564e..dacf73fda 100644 ---- a/board/hx20/led.c -+++ b/board/hx20/led.c -@@ -283,22 +283,22 @@ static void led_set_power(void) - /* don't light up when at lid close */ - if (!lid_is_open()) { - set_pwr_led_color(PWM_LED2, -1); -- enable_pwr_breath(PWM_LED2, EC_LED_COLOR_WHITE, breath_led_length, 0); -+ enable_pwr_breath(PWM_LED2, EC_LED_COLOR_GREEN, breath_led_length, 0); - return; - } - - if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) -- enable_pwr_breath(PWM_LED2, EC_LED_COLOR_WHITE, breath_led_length, 1); -+ enable_pwr_breath(PWM_LED2, EC_LED_COLOR_GREEN, breath_led_length, 1); - else -- enable_pwr_breath(PWM_LED2, EC_LED_COLOR_WHITE, breath_led_length, 0); -+ enable_pwr_breath(PWM_LED2, EC_LED_COLOR_GREEN, breath_led_length, 0); - - if (chipset_in_state(CHIPSET_STATE_ON) | power_button_enable) { - if (charge_prevent_power_on(0)) - set_pwr_led_color(PWM_LED2, (power_tick % - LED_TICKS_PER_CYCLE < LED_ON_TICKS) ? -- EC_LED_COLOR_WHITE : -1); -+ EC_LED_COLOR_GREEN : -1); - else -- set_pwr_led_color(PWM_LED2, EC_LED_COLOR_WHITE); -+ set_pwr_led_color(PWM_LED2, EC_LED_COLOR_GREEN); - } else - set_pwr_led_color(PWM_LED2, -1); - } +diff --git a/board/hx20/led.c b/board/hx20/led.c +index a4dc4564e..dacf73fda 100644 +--- a/board/hx20/led.c ++++ b/board/hx20/led.c +@@ -283,22 +283,22 @@ static void led_set_power(void) + /* don't light up when at lid close */ + if (!lid_is_open()) { + set_pwr_led_color(PWM_LED2, -1); +- enable_pwr_breath(PWM_LED2, EC_LED_COLOR_WHITE, breath_led_length, 0); ++ enable_pwr_breath(PWM_LED2, EC_LED_COLOR_GREEN, breath_led_length, 0); + return; + } + + if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) +- enable_pwr_breath(PWM_LED2, EC_LED_COLOR_WHITE, breath_led_length, 1); ++ enable_pwr_breath(PWM_LED2, EC_LED_COLOR_GREEN, breath_led_length, 1); + else +- enable_pwr_breath(PWM_LED2, EC_LED_COLOR_WHITE, breath_led_length, 0); ++ enable_pwr_breath(PWM_LED2, EC_LED_COLOR_GREEN, breath_led_length, 0); + + if (chipset_in_state(CHIPSET_STATE_ON) | power_button_enable) { + if (charge_prevent_power_on(0)) + set_pwr_led_color(PWM_LED2, (power_tick % + LED_TICKS_PER_CYCLE < LED_ON_TICKS) ? +- EC_LED_COLOR_WHITE : -1); ++ EC_LED_COLOR_GREEN : -1); + else +- set_pwr_led_color(PWM_LED2, EC_LED_COLOR_WHITE); ++ set_pwr_led_color(PWM_LED2, EC_LED_COLOR_GREEN); + } else + set_pwr_led_color(PWM_LED2, -1); + } diff --git a/src/style.css b/src/style.css index fd2468b..30e895d 100644 --- a/src/style.css +++ b/src/style.css @@ -90,6 +90,7 @@ x-ref { font-size: .8rem; } +figure { margin-inline: 0; } figure > pre { margin-left: 4ch; overflow-x: scroll; } figure > pre > code { counter-increment: line; } figure > pre > code::before { @@ -186,7 +187,6 @@ header > div li { list-style: none; } body { tab-size: 4; } main { margin-block-end: 2rem; } h1, h2, p { overflow-wrap: break-word; hyphens: auto; } - figure { margin-inline: 0; } header > div { display: block; } ul, menu { padding-inline-start: 0; } :where(ul, menu) > li:not(:last-of-type) { margin-block-end: .3rem; } -- cgit v1.2.3