vs extension 监听键盘输入

本文探讨如何在Visual Studio扩展中监听用户键盘输入。通过分析,发现直接监听键盘事件的接口有限,尝试了通过DocumentEvents、KeyProcessor、Io1eCommand等方法,发现每个方案都有其局限性。最终采用混合方案,结合keyProcessor处理普通键盘事件,Io1eCommand监听特定键(如空格、回车)以及CommandEvents监听常见编辑命令。
摘要由CSDN通过智能技术生成

背景

有一个这样的业务需求:我们希望监听用户在编写代码时的键盘事件

基本分析

part1

如果把vs看做一个桌面应用程序,那么我们就是希望介入到这个窗体应用的键盘事件处理过程
当然我直观上认为vs不会直接把键盘事件处理接口暴露给我

这一个观点在我验证jaredpar大佬的经验分享1的时候得到了一定验证,我还没有找到窗体键盘处理事件的扩展点

part2

接下来,我尝试寻找其他方式来直接或者间接的方式得到键盘事件,这时候我得到了第一种方案,我通过监听代码文件对应的文档对象的内容变化事件来确认键盘事件,因为我们的编码过程,每一次键盘敲击的主要目的都是修改代码文本。

这部分的内容可以通过 EnDTE.DTE2.events.DocumentEvents 暴露出来的接口来实现

但是上面的方案存在着一定问题,我们的一次键盘事件可能对应着一段输入(参考tab键,copy paste,使用中文输入法输入中文),或者多次键盘事件对应着一次输入(使用中文输入法输入中文和组合键),所以上面的方案存在着缺陷

part3

而后我找到了jaredpar大佬的经验分享1&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值