[英]How to simulate entering a special character in Windows
我的最终目标是设置某种快捷方式(可能是键盘快捷方式),以输入特定的特殊字符:è。 我必须输入各种像这样的特殊字符,并且想设置一些东西,我可以在其中进行简单的键盘组合,而不是每次都查阅 Alt 代码列表。
我的第一个想法是创建一个脚本,将它的执行绑定到键盘快捷键。 我尝试使用 SendKeys 编写 PowerShell 脚本,但我无法找到一种方法让SendKeys发送 Alt 代码或我的美式键盘上尚未发送的任何内容。 我也可以批量使用 SendKeys,但遇到了同样的问题。 在 CmdLine 上运行它很接近,但只是打印数字(可能是因为它不区分数字键和小键盘键):
powershell -c "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('%(0232)')
我在想会有一个直接的方法来做到这一点,但也许不是。 有没有我没有找到的其他语言的方法? SendKeys 的替代品? 对大多数事物开放。
有一种次优方法可以让它工作(见下文),但一般来说:
PowerShell CLI 调用需要时间,因为启动成本很高,因此基于它的解决方案可能会导致最终用户体验不满意。
AutoHotkey等实用程序在击键仿真方面提供了更好的性能和功能。
如果可以覆盖剪贴板以存储所需的字符,则可以使用以下命令:
powershell -noprofile -c "Set-Clipboard é; $wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('^v')"
PowerShell,作为一种基于 .NET 的语言,可以表示任何 Unicode 字符,并使用Set-Clipboard
将其复制到剪贴板。
使用.SendKeys()
发送'^v'
,即 Ctrl-V 然后粘贴剪贴板中的字符。
注意:虽然您可以努力保存和恢复剪贴板 state,但这样做仅适用于简单的情况 - 请参阅此答案以获取背景信息。
至于你尝试了什么:
留下需要在批处理文件中将文字%
转义为%%
的潜在问题(而不是直接来自cmd.exe
命令提示符):
发送字符串'%(0232)'
(即,在键入0232
时按住 Alt )不起作用,因为数字(构成您的特殊字符的十进制 Unicode 代码点è
(带有坟墓的拉丁小写字母 E, U+00E8
) U+00E8
); 0xe8
== 232
) 必须在数字键盘上输入,据我所知.SendKeys()
不支持。 [1]
[1] 虽然您可以通过.SendKeys()
发送某些虚拟键码,但它们似乎仅限于 8 位范围内的那些( >= 128
- 请参阅此答案以获取示例),而数字键盘的数字键码在 7 位范围内 - 请参阅虚拟键代码列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.