VSCodeVim / VSCodeVim/Vim

[Bug] Key presses got discarded if the key is pressed to quickly (I think)

Open
#9,515 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
15.2k
Forks
1.5k
Avg merge
3d 18h
Merged PRs (30d)
6

Description

Type: Bug

Describe the bug
I have a qmk keyboard which defined a combo key. So to the best of my knowledge, it works by some kind of buffer is used when a combo key is pressed, and then if the next keycode isn't inside the combo key look up, both keycode would be sent simultaneously. But when this happens, the extra key can be discarded in vscode vim. For example, let's say the combo key is ac, and if I spam ax multiple times really quickly, what would ended up into the buffer would be aaaaaaaa, instead of axaxaxaxaxaxaxax.

To Reproduce
Steps to reproduce the behavior:

  1. have a qmk keyboard with combo key defined.
  2. spam one key with combo key defined, then press another that doesn't form combo with it.
  3. some character would not be properly registered

Expected behavior
To have the key properly registered

Screenshots
no.

Extension version: 1.29.0
VS Code version: Code - Insiders 1.98.0-insider (e20adc378e7bda18152984725c31d22cb4eaac17, 2025-02-17T05:04:55.143Z)
OS version: Darwin arm64 23.6.0
Modes:

System Info
Item Value
CPUs Apple M2 Pro (10 x 2400)
GPU Status 2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off
Load (avg) 3, 2, 2
Memory (System) 16.00GB (0.14GB free)
Process Argv --crash-reporter-id a536a798-1418-4ca3-ac36-49c36072a4b9
Screen Reader no
VM 0%
A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
pythonvspyt551cf:31249598
vscod805:30301674
py29gd2263:31024238
c4g48928:30535728
vscrp:30624060
2i9eh265:30646982
962ge761:30841072
dsvsc014:30777825
dsvsc015:30821418
h48ei257:31000450
pythontbext0:30879054
cppperfnew:30980852
pythonait:30973460
dwnewjupytercf:31046870
nativerepl1:31134653
pythonrstrctxt:31093868
nativeloc1:31118317
e80f6927:31120813
iacca1:31150324
notype1:31143044
dwcopilot:31158714
c3hdf307:31184662
6074i472:31201624
dwoutputs:31242946
customenabled:31248079
9064b325:31222308
copilot_t_ci:31222730
f27dg485:31233432
g012b348:31231168
jda6j935:31233686
copilothoveron:31247701
pythoneinst12:31251391
bgtreat:31252123
fh1c7952:31247580

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the reported QMK combo-key input in VS Code Vim using rapid alternating key presses, then trace the extension's key-buffer or input handling. Confirm the issue by showing that characters are discarded, and consider the work complete when the same sequence preserves every keypress.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript, vscode
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.