Skip to content

perf(keyboard): profile-key hold no longer blocks the keyboard task - #1085

Open
jpds wants to merge 1 commit into
rmk-rs:mainfrom
jpds:fix/user-hold-deadline
Open

perf(keyboard): profile-key hold no longer blocks the keyboard task#1085
jpds wants to merge 1 commit into
rmk-rs:mainfrom
jpds:fix/user-hold-deadline

Conversation

@jpds

@jpds jpds commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Also port the User key to use a deadline timeout, instead of blocking the keyboard task.

Follows on from #1083.

@github-actions

Copy link
Copy Markdown

Size Report

Example main PR Diff .text .data .bss
use_config/nrf52832_ble 399.5 KiB 399.3 KiB -0.05% ⬇️ -228 0 0
use_config/nrf52840_ble 441.8 KiB 441.4 KiB -0.08% ⬇️ -372 0 0
use_config/nrf52840_ble_split (central) 511.3 KiB 511.5 KiB +0.04% ⬆️ +224 0 -8
use_config/nrf52840_ble_split (peripheral) 320.8 KiB 320.8 KiB +0.00% 0 0 0
use_config/pi_pico_w_ble 674.7 KiB 674.6 KiB -0.01% ⬇️ -108 0 0
use_config/rp2040 146.2 KiB 146.2 KiB +0.02% ⬆️ +44 0 0
use_config/rp2040_split (central) 159.6 KiB 159.7 KiB +0.02% ⬆️ +48 0 0
use_config/rp2040_split (peripheral) 27.8 KiB 27.8 KiB +0.00% 0 0 0
use_config/stm32f1 62.5 KiB 62.5 KiB +0.00% ⬇️ -4 0 0
use_config/stm32h7 100.6 KiB 100.6 KiB +0.01% ⬆️ +12 0 0
use_rust/nrf52832_ble 387.5 KiB 387.5 KiB -0.01% ⬇️ -56 0 0
use_rust/nrf52840_ble 437.0 KiB 436.8 KiB -0.03% ⬇️ -164 0 0
use_rust/nrf52840_ble_split (central) 510.6 KiB 510.1 KiB -0.09% ⬇️ -500 0 -8
use_rust/nrf52840_ble_split (peripheral) 316.7 KiB 316.7 KiB +0.00% ⬇️ -4 0 0
use_rust/pi_pico_w_ble 674.3 KiB 674.1 KiB -0.03% ⬇️ -216 0 0
use_rust/rp2040 145.7 KiB 145.7 KiB +0.00% ⬆️ +4 0 0
use_rust/rp2040_split (central) 158.4 KiB 158.4 KiB +0.01% ⬆️ +28 0 0
use_rust/rp2040_split (peripheral) 28.1 KiB 28.1 KiB +0.00% 0 0 0
use_rust/stm32f1 61.7 KiB 61.7 KiB -0.05% ⬇️ -32 0 0
use_rust/stm32h7 119.4 KiB 119.4 KiB +0.02% ⬆️ +28 0 0
use_config/nrf52832_ble — 399.5 KiB → 399.3 KiB (-0.05% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 366296	   8620	  33984	 408900	  63d44	rmk-nrf52832

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 366524	   8620	  33984	 409128	  63e28	rmk-nrf52832

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.2% +1.46Ki  [ = ]       0    .debug_loc
  +0.1%     +96  [ = ]       0    .symtab
  +0.0%     +69  [ = ]       0    .strtab
  +0.0%     +16  [ = ]       0    .debug_frame
  -0.0%      -8  [ = ]       0    .debug_aranges
 -39.2%     -29  [ = ]       0    [Unmapped]
  -0.1%    -228  -0.1%    -228    .text
  -0.2%    -376  [ = ]       0    .debug_ranges
  -0.2%    -609  [ = ]       0    .debug_line
  -0.1% -2.12Ki  [ = ]       0    .debug_info
  -0.1% -3.21Ki  [ = ]       0    .debug_str
  -0.1% -4.91Ki  -0.1%    -228    TOTAL
use_config/nrf52840_ble — 441.8 KiB → 441.4 KiB (-0.08% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 399364	   8628	  44016	 452008	  6e5a8	rmk-nrf52840

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 399736	   8628	  44016	 452380	  6e71c	rmk-nrf52840

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1%    +786  [ = ]       0    .debug_loc
  +0.0%     +32  [ = ]       0    .debug_ranges
  +0.0%     +32  [ = ]       0    .symtab
  +0.0%     +22  [ = ]       0    .debug_line
  +0.0%     +16  [ = ]       0    .debug_frame
  -0.0%      -8  [ = ]       0    .debug_aranges
 -16.4%     -11  [ = ]       0    [Unmapped]
  -0.1%    -372  -0.1%    -372    .text
  -0.2%    -750  [ = ]       0    .strtab
  -0.1% -2.13Ki  [ = ]       0    .debug_info
  -0.2% -9.73Ki  [ = ]       0    .debug_str
  -0.1% -12.1Ki  -0.1%    -372    TOTAL
use_config/nrf52840_ble_split (central) — 511.3 KiB → 511.5 KiB (+0.04% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 465008	   8684	  50088	 523780	  7fe04	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 464784	   8684	  50096	 523564	  7fd2c	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1%    +467  [ = ]       0    .debug_loc
  +0.1%    +224  +0.1%    +224    .text
  -0.0%      -4  [ = ]       0    .debug_frame
  -7.0%      -4  [ = ]       0    [Unmapped]
  [ = ]       0  -0.0%      -8    .bss
  -0.0%      -8  [ = ]       0    .debug_aranges
  -0.0%     -36  [ = ]       0    .debug_line
  -0.0%     -72  [ = ]       0    .debug_ranges
  -0.1%     -80  [ = ]       0    .symtab
  -0.1%    -349  [ = ]       0    .strtab
  -0.1% -2.19Ki  [ = ]       0    .debug_info
  -0.1% -5.27Ki  [ = ]       0    .debug_str
  -0.1% -7.32Ki  +0.0%    +216    TOTAL
use_config/nrf52840_ble_split (peripheral) — 320.8 KiB → 320.8 KiB (+0.00%)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 294644	   8508	  25328	 328480	  50320	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 294644	   8508	  25328	 328480	  50320	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +4.8%      +3  [ = ]       0    [Unmapped]
  -0.0%      -2  [ = ]       0    .strtab
  -0.0%     -16  [ = ]       0    .debug_aranges
  -0.0%     -65  [ = ]       0    .debug_info
  -0.0%    -280  [ = ]       0    .debug_str
  -0.0%    -360  [ = ]       0    TOTAL
use_config/pi_pico_w_ble — 674.7 KiB → 674.6 KiB (-0.01% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 636728	      0	  54048	 690776	  a8a58	rmk-pi-pico-w

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 636836	      0	  54048	 690884	  a8ac4	rmk-pi-pico-w

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +1.17Ki  [ = ]       0    .debug_loc
   +27%     +12  [ = ]       0    [Unmapped]
  -0.9%      -8  [ = ]       0    .defmt
  -0.0%     -16  [ = ]       0    .debug_aranges
  -0.1%     -64  [ = ]       0    .symtab
  -0.0%     -83  [ = ]       0    .debug_line
  -0.0%    -108  -0.0%    -108    .text
  -0.1%    -304  [ = ]       0    .debug_ranges
  -0.1%    -311  [ = ]       0    .strtab
  -0.1% -2.61Ki  [ = ]       0    .debug_info
  -0.1% -6.48Ki  [ = ]       0    .debug_str
  -0.1% -8.78Ki  -0.0%    -108    TOTAL
use_config/rp2040 — 146.2 KiB → 146.2 KiB (+0.02% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 135812	      0	  13932	 149744	  248f0	rmk-rp2040

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 135768	      0	  13932	 149700	  248c4	rmk-rp2040

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.3%    +897  [ = ]       0    .debug_loc
  +0.0%     +40  [ = ]       0    .debug_ranges
  +0.0%     +28  +0.0%     +28    .text
  +0.1%     +16  +0.1%     +16    .rodata
 -19.6%     -11  [ = ]       0    [Unmapped]
  -0.2%     -40  [ = ]       0    .debug_aranges
  -0.3%     -48  [ = ]       0    .debug_frame
  -0.2%     -64  [ = ]       0    .symtab
  -1.4%    -112  [ = ]       0    .debug_abbrev
  -0.1%    -172  [ = ]       0    .strtab
  -0.3%    -527  [ = ]       0    .debug_line
  -0.1% -1.18Ki  [ = ]       0    .debug_info
  -0.2% -2.98Ki  [ = ]       0    .debug_str
  -0.1% -4.15Ki  +0.0%     +44    TOTAL
use_config/rp2040_split (central) — 159.6 KiB → 159.7 KiB (+0.02% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 148620	      0	  14876	 163496	  27ea8	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 148572	      0	  14876	 163448	  27e78	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.4% +1.49Ki  [ = ]       0    .debug_loc
  +0.0%     +40  [ = ]       0    .debug_ranges
  +0.0%     +32  +0.0%     +32    .text
  +0.1%     +16  +0.1%     +16    .rodata
 -30.2%     -16  [ = ]       0    [Unmapped]
  -0.2%     -40  [ = ]       0    .debug_aranges
  -0.3%     -48  [ = ]       0    .debug_frame
  -0.2%     -64  [ = ]       0    .symtab
  -1.4%    -112  [ = ]       0    .debug_abbrev
  -0.1%    -197  [ = ]       0    .strtab
  -0.1%    -203  [ = ]       0    .debug_line
  -0.1% -1.09Ki  [ = ]       0    .debug_info
  -0.1% -2.95Ki  [ = ]       0    .debug_str
  -0.1% -3.12Ki  +0.0%     +48    TOTAL
use_config/rp2040_split (peripheral) — 27.8 KiB → 27.8 KiB (+0.00%)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  25592	     60	   2804	  28456	   6f28	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  25592	     60	   2804	  28456	   6f28	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  -4.7%      -3  [ = ]       0    [Unmapped]
  -0.1%      -8  [ = ]       0    .debug_aranges
  -0.0%     -41  [ = ]       0    .debug_info
  -0.0%    -136  [ = ]       0    .debug_str
  -0.0%    -188  [ = ]       0    TOTAL
use_config/stm32f1 — 62.5 KiB → 62.5 KiB (+0.00% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  57564	     28	   6392	  63984	   f9f0	rmk-stm32f1

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  57568	     28	   6392	  63988	   f9f4	rmk-stm32f1

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1%    +150  [ = ]       0    .debug_loc
  +0.0%      +8  [ = ]       0    .debug_ranges
  +3.5%      +2  [ = ]       0    [Unmapped]
  -0.0%      -4  -0.0%      -4    .text
  -0.5%     -32  [ = ]       0    .debug_aranges
  -0.4%     -48  [ = ]       0    .debug_frame
  -0.1%     -55  [ = ]       0    .strtab
  -0.4%     -80  [ = ]       0    .symtab
  -1.9%    -112  [ = ]       0    .debug_abbrev
  -0.2%    -203  [ = ]       0    .debug_line
  -0.2% -1.16Ki  [ = ]       0    .debug_info
  -0.3% -2.66Ki  [ = ]       0    .debug_str
  -0.2% -4.18Ki  -0.0%      -4    TOTAL
use_config/stm32h7 — 100.6 KiB → 100.6 KiB (+0.01% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  94632	    264	   8144	 103040	  19280	rmk-stm32h7

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  94620	    264	   8144	 103028	  19274	rmk-stm32h7

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.2%    +416  [ = ]       0    .debug_loc
   +51%     +22  [ = ]       0    [Unmapped]
  +0.1%     +16  +0.1%     +16    .rodata
  -0.0%      -4  -0.0%      -4    .text
  -0.1%     -32  [ = ]       0    .debug_aranges
  -0.0%     -32  [ = ]       0    .debug_ranges
  -0.3%     -48  [ = ]       0    .debug_frame
  -0.2%     -48  [ = ]       0    .symtab
  -0.1%     -63  [ = ]       0    .strtab
  -1.7%    -112  [ = ]       0    .debug_abbrev
  -0.3%    -338  [ = ]       0    .debug_line
  -0.1% -1.14Ki  [ = ]       0    .debug_info
  -0.1% -2.94Ki  [ = ]       0    .debug_str
  -0.1% -4.29Ki  +0.0%     +12    TOTAL
use_rust/nrf52832_ble — 387.5 KiB → 387.5 KiB (-0.01% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 354216	   8620	  33928	 396764	  60ddc	rmk-nrf52832

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 354272	   8620	  33928	 396820	  60e14	rmk-nrf52832

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
 -10.3%      -7  [ = ]       0    [Unmapped]
  -0.0%     -56  -0.0%     -56    .text
  -0.0%    -105  [ = ]       0    .debug_loc
  -0.1%    -128  [ = ]       0    .debug_ranges
  -0.0%    -140  [ = ]       0    .debug_line
  -0.2%    -454  [ = ]       0    .strtab
  -0.1% -2.08Ki  [ = ]       0    .debug_info
  -0.3% -8.96Ki  [ = ]       0    .debug_str
  -0.2% -11.9Ki  -0.0%     -56    TOTAL
use_rust/nrf52840_ble — 437.0 KiB → 436.8 KiB (-0.03% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 397432	   8628	  41248	 447308	  6d34c	rmk-nrf52840

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 397596	   8628	  41248	 447472	  6d3f0	rmk-nrf52840

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +271  [ = ]       0    .debug_loc
  +0.1%    +235  [ = ]       0    .strtab
  +1.5%      +1  [ = ]       0    [Unmapped]
  -0.0%     -16  [ = ]       0    .debug_aranges
  -0.0%     -32  [ = ]       0    .symtab
  -0.0%     -56  [ = ]       0    .debug_ranges
  -0.0%    -164  -0.0%    -164    .text
  -0.1%    -267  [ = ]       0    .debug_line
  -0.0% -1.29Ki  [ = ]       0    .debug_str
  -0.1% -2.27Ki  [ = ]       0    .debug_info
  -0.0% -3.59Ki  -0.0%    -164    TOTAL
use_rust/nrf52840_ble_split (central) — 510.6 KiB → 510.1 KiB (-0.09% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 462196	   8684	  51504	 522384	  7f890	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 462696	   8684	  51512	 522892	  7fa8c	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.2%    +632  [ = ]       0    .debug_ranges
  +0.1%    +112  [ = ]       0    .symtab
  +0.2%    +108  [ = ]       0    .debug_frame
  +0.1%     +48  [ = ]       0    .debug_aranges
  [ = ]       0  -0.0%      -8    .bss
 -21.0%     -13  [ = ]       0    [Unmapped]
  -0.2%     -21  [ = ]       0    .debug_abbrev
  -0.0%    -140  [ = ]       0    .debug_loc
  -0.1%    -393  [ = ]       0    .debug_line
  -0.1%    -500  -0.1%    -500    .text
  -0.2%    -923  [ = ]       0    .strtab
  -0.1% -3.18Ki  [ = ]       0    .debug_info
  -0.1% -6.78Ki  [ = ]       0    .debug_str
  -0.1% -11.0Ki  -0.1%    -508    TOTAL
use_rust/nrf52840_ble_split (peripheral) — 316.7 KiB → 316.7 KiB (+0.00% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 290788	   8508	  24960	 324256	  4f2a0	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 290792	   8508	  24960	 324260	  4f2a4	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +167  [ = ]       0    .debug_info
  +0.0%     +98  [ = ]       0    .debug_line
  +0.0%     +10  [ = ]       0    .debug_loc
  +0.0%      +4  [ = ]       0    .strtab
  -2.1%      -1  [ = ]       0    [Unmapped]
  -0.0%      -4  -0.0%      -4    .text
  -0.0%     -16  [ = ]       0    .debug_aranges
  -0.0%    -122  [ = ]       0    .debug_str
  +0.0%    +136  -0.0%      -4    TOTAL
use_rust/pi_pico_w_ble — 674.3 KiB → 674.1 KiB (-0.03% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 636556	      0	  53728	 690284	  a886c	rmk-pi-pico-w

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 636772	      0	  53728	 690500	  a8944	rmk-pi-pico-w

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
   +48%     +22  [ = ]       0    [Unmapped]
  -0.9%      -8  [ = ]       0    .defmt
  -0.0%     -16  [ = ]       0    .debug_aranges
  -0.1%     -96  [ = ]       0    .symtab
  -0.1%    -208  [ = ]       0    .debug_ranges
  -0.1%    -216  -0.1%    -216    .text
  -0.1%    -320  [ = ]       0    .strtab
  -0.1%    -343  [ = ]       0    .debug_line
  -0.1% -1.21Ki  [ = ]       0    .debug_loc
  -0.1% -2.41Ki  [ = ]       0    .debug_info
  -0.2% -6.50Ki  [ = ]       0    .debug_str
  -0.1% -11.3Ki  -0.0%    -216    TOTAL
use_rust/rp2040 — 145.7 KiB → 145.7 KiB (+0.00% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 135400	      0	  13764	 149164	  246ac	rmk-rp2040

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 135396	      0	  13764	 149160	  246a8	rmk-rp2040

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1%     +16  +0.1%     +16    .rodata
  +0.0%      +1  [ = ]       0    .debug_loc
  -4.8%      -2  [ = ]       0    [Unmapped]
  -0.0%     -12  -0.0%     -12    .text
  -0.2%     -40  [ = ]       0    .debug_aranges
  -0.3%     -48  [ = ]       0    .debug_frame
  -0.1%     -56  [ = ]       0    .debug_ranges
  -1.4%    -112  [ = ]       0    .debug_abbrev
  -0.2%    -210  [ = ]       0    .strtab
  -0.7%    -224  [ = ]       0    .symtab
  -0.2%    -400  [ = ]       0    .debug_line
  -0.1% -1.12Ki  [ = ]       0    .debug_info
  -0.2% -3.05Ki  [ = ]       0    .debug_str
  -0.1% -5.23Ki  +0.0%      +4    TOTAL
use_rust/rp2040_split (central) — 158.4 KiB → 158.4 KiB (+0.01% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 147596	      0	  14620	 162216	  279a8	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 147568	      0	  14620	 162188	  2798c	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%     +40  [ = ]       0    .debug_loc
  +0.1%     +16  +0.1%     +16    .rodata
  +0.0%     +12  +0.0%     +12    .text
 -47.8%     -32  [ = ]       0    [Unmapped]
  -0.2%     -40  [ = ]       0    .debug_aranges
  -0.3%     -48  [ = ]       0    .debug_frame
  -0.1%     -80  [ = ]       0    .debug_ranges
  -0.3%     -96  [ = ]       0    .symtab
  -1.4%    -112  [ = ]       0    .debug_abbrev
  -0.1%    -199  [ = ]       0    .strtab
  -0.1%    -214  [ = ]       0    .debug_line
  -0.1% -1.14Ki  [ = ]       0    .debug_info
  -0.1% -2.91Ki  [ = ]       0    .debug_str
  -0.1% -4.79Ki  +0.0%     +28    TOTAL
use_rust/rp2040_split (peripheral) — 28.1 KiB → 28.1 KiB (+0.00%)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  25692	     60	   3068	  28820	   7094	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  25692	     60	   3068	  28820	   7094	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +1.7%      +1  [ = ]       0    [Unmapped]
  -0.1%      -8  [ = ]       0    .debug_aranges
  -0.0%     -41  [ = ]       0    .debug_info
  -0.0%    -136  [ = ]       0    .debug_str
  -0.0%    -184  [ = ]       0    TOTAL
use_rust/stm32f1 — 61.7 KiB → 61.7 KiB (-0.05% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  56832	     28	   6312	  63172	   f6c4	rmk-stm32f1

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  56864	     28	   6312	  63204	   f6e4	rmk-stm32f1

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.3%    +408  [ = ]       0    .debug_loc
  +0.1%     +56  [ = ]       0    .debug_ranges
  +0.1%     +16  [ = ]       0    .symtab
  -1.9%      -1  [ = ]       0    [Unmapped]
  -0.1%     -23  [ = ]       0    .strtab
  -0.5%     -24  [ = ]       0    .debug_aranges
  -0.3%     -32  [ = ]       0    .debug_frame
  -0.1%     -32  -0.1%     -32    .text
  -1.9%    -112  [ = ]       0    .debug_abbrev
  -0.2%    -196  [ = ]       0    .debug_line
  -0.2% -1.16Ki  [ = ]       0    .debug_info
  -0.3% -2.77Ki  [ = ]       0    .debug_str
  -0.2% -3.87Ki  -0.1%     -32    TOTAL
use_rust/stm32h7 — 119.4 KiB → 119.4 KiB (+0.02% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 107880	    320	  14044	 122244	  1dd84	rmk-stm32h7

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 107852	    320	  14044	 122216	  1dd68	rmk-stm32h7

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1%    +363  [ = ]       0    .debug_loc
  +0.0%     +28  +0.0%     +28    .text
  +0.0%     +24  [ = ]       0    .debug_ranges
   +11%      +4  [ = ]       0    [Unmapped]
  -0.1%     -32  [ = ]       0    .debug_aranges
  -0.2%     -32  [ = ]       0    .debug_frame
  -0.0%     -40  [ = ]       0    .strtab
  -0.1%     -48  [ = ]       0    .symtab
  -1.6%    -112  [ = ]       0    .debug_abbrev
  -0.1%    -218  [ = ]       0    .debug_line
  -0.1% -1.15Ki  [ = ]       0    .debug_info
  -0.1% -2.91Ki  [ = ]       0    .debug_str
  -0.1% -4.12Ki  +0.0%     +28    TOTAL

Holding a User key used to wait inline for up to 5s inside the single
keyboard task's event loop. While it waited, mouse-acceleration repeats
froze, combo/morse timeouts and macro draining stalled, and only the
first intervening event was stashed.

The hold now rides run()'s deadline race instead, so the task keeps
servicing events while the key is down.
@jpds
jpds force-pushed the fix/user-hold-deadline branch from dc0fd39 to 5155763 Compare August 24, 2026 08:46
@HaoboGu

HaoboGu commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

I'm thinking about a unified approach for hold & repeat actions, what do you think?

@jpds

jpds commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

That actually sounds great, as it would simplify the work as I across the four branches I did for this eager deadline stuff.

@jpds

jpds commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

My final branch for the work is at: main...jpds:rmk:perf/combo-reset-deadline - if you want to use that as the base for a rework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants