如何在VS Code中实现NumLock关闭时仅小键盘2触发调试步过命令?
问题:Linux环境下VS Code绑定NumLock关闭状态的小键盘按键用于调试命令
需求
- 将外部小键盘在NumLock关闭时的按键映射为VS Code调试操作:
- 小键盘“2”(对应X11的
KP_Down事件)→ 执行步过命令(workbench.action.debug.stepOver) - 小键盘“6”→ 执行步入命令
- 小键盘“8”→ 执行步出命令
- 小键盘“2”(对应X11的
已尝试的操作及遇到的问题
- 使用
xev -event keyboard捕获NumLock关闭时按下小键盘“2”的事件,输出显示对应的keysym为KP_Down:
KeyPress event, serial 29, synthetic NO, window 0x6200001, root 0x231, subw 0x0, time 505147823, (330,514), root:(437,1166), state 0x0, keycode 88 (keysym 0xff99, KP_Down), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False
- 在VS Code的
keybindings.json中添加如下配置,无法生效:
[{ "key": "KP_Down", "command": "workbench.action.debug.stepOver", "when": "debugState == 'stopped'" }]
VS Code中KP_Down被标红,提示“在当前键盘布局下无法生成此组合键”。
3. 尝试《Keyboard layout-independent bindings》文档中的"key": "[KP_Down]"写法,配置依然无效,此时[KP_Down]被标蓝,提示“当前键盘布局下未知”。
4. 通过VS Code开发者控制台(Ctrl+Shift+P搜索Developer: Toggle Developer Tools打开)执行以下代码查看按键信息:
window.addEventListener('keydown', (e) => console.log(e.code, e.key));
得到结果:
- NumLock关闭时:输出
NumPad2 ArrowDown - NumLock开启时:输出
NumPad2 2
两种状态下e.code均为NumPad2,单独绑定NumPad2会同时触发NumLock开启的情况,绑定ArrowDown会触发主键盘的向下箭头,绑定2会触发主键盘的数字2,都无法满足仅触发NumLock关闭时小键盘按键的需求。
求助
如何实现仅绑定NumLock关闭状态下的小键盘2(对应xev中的KP_Down事件)来触发VS Code的调试命令?
内容的提问来源于stack exchange,提问作者ralph
相关产品推荐
相关产品推荐

