Windows修改键盘映射(含解锁后自动执行脚本)

背景:

Windows 改键,需要把 左Ctrl键 和 大写锁定Capslock键 映射值互换

网上教程很多,最简单的就是下载软件,也有教程是修改注册表的。
但是注册表修改起来 怕哪天突然想修改回去的话还得扒文档。 所以我们还是用软件来满足我们的需求:

微软官方出了一款很好用的软件:PowerToys,功能比较丰富。

如:窗口置顶、环境变量编辑、Hosts文件编辑......

image.png

本文用到的功能是:键盘管理器

通过设置重新定义键盘上的键。

例如,可以在键盘上将字母 A 交换为字母 B。 当你按下 A 键时,会插入 B

因为日常办公都是通过局域网连接到虚拟桌面,所以基本的开发工作都是在虚拟桌面完成的。

每次离开工位去接水需要锁屏,回来打开电脑屏幕继续工作的时候,发现键盘映射在虚拟桌面失效了,但在本地电脑是正常的。暂时不知道是什么原因,但是当我重启PowerToys后,键盘映射在虚拟桌面又正常了。(PS:重启解决99%的问题)

至今我也不知道锁屏解锁后,键盘映射会失效。。。

所以换个思路解决问题,那就是:每次解锁后,自动关闭PowerToys,然后重新打开PowerToys。

思路有了,把人能听懂的句子换成Windows能够理解的程序:

@echo off
taskkill /f /im "SoftwareName.exe"
start "" "C:\Program Files\PowerToys\PowerToys.exe"

需要执行的程序有了,那触发条件是在:解锁屏幕时
一顿百度,发现可以通过Windows自带的Windows任务计划可以实现。

  • 触发器:当解锁工作站时
  • 操作:执行bat脚本
image.png

通过以上的配置,就可以满足我的需求了,但是实际测试下来,每次解锁屏幕后都会弹出一个cmd黑窗口。。。
我希望这个可以在后台静默执行,so:
把bat 换成vbs即可

Set objShell = CreateObject("WScript.Shell")

' 尝试结束PowerToys进程
objShell.Run "taskkill /f /im PowerToys.exe", 0, True

WScript.Sleep(3600)


' 启动PowerToys
objShell.Run """C:\Program Files\PowerToys\PowerToys.exe""", 1, False

细心的网友可能发现了哈,我多加了一行。我希望退出程序后,有3600ms的延时。(故意的)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容