1. 目标
本文旨在简单解决每次 powershell 打开时输入法处于中文状态的问题。鉴于输入法API不同,比较方便的切换方法是在启动powershell时自动按下切换中英文的按键,默认为Shift
2. 原理及代码
- 借助 profile 配置文件,在powershell启动时自动运行某些命令1;
# 借助记事本快速在用户文件夹下的文档中建立profile
NotePad.exe $((Split-Path $profile -Parent) + '\profile.ps1')
- 通过 [System.Windows.Forms] net组件的 Sendkey 功能,发送指定按键2;
Add-Type -AssemblyName System.Windows.Forms # 载入 dll 库
[System.Windows.Forms.SendKeys]::SendWait('+') # + 代表 {Shift} 键
# [System.Windows.Forms.SendKeys]::SendWait('+(EC)') # 组合键
- 最后将Sendkey的代码复制到 profile 中。
3. 附录
3.1 参考
3.2 SendWait()
- 若要指定在按下其他几个键时按住
SHIFT
,CTRL
和ALT
的任意组合,请将这些键的代码括在括号中。例如,要指定在按下E和C时按住SHIFT,请使用+(EC)
**要指定在按下E时按住SHIFT,然后按C而不按SHIFT,请使用+ EC
。 - 要指定重复键,请使用表格{键号}。 您必须在键和数字之间加一个空格。例如,
{LEFT 42}
表示按下左箭头键42次;{h 10}
表示按H 10次。
按键 | 代码 |
---|---|
BACKSPACE | {BACKSPACE}, {BS}, or {BKSP} |
BREAK | {BREAK} |
CAPS LOCK | {CAPSLOCK} |
DEL or DELETE | {DELETE} or {DEL} |
DOWN ARROW | {DOWN} |
END | {END} |
ENTER | {ENTER} or ~ |
ESC | {ESC} |
HELP | {HELP} |
HOME | {HOME} |
INS or INSERT | {INSERT} or {INS} |
LEFT ARROW | {LEFT} |
NUM LOCK | {NUMLOCK} |
PAGE DOWN | {PGDN} |
PAGE UP | {PGUP} |
PRINT SCREEN | {PRTSC} (reserved for future use) |
RIGHT ARROW | {RIGHT} |
SCROLL LOCK | {SCROLLLOCK} |
TAB | {TAB} |
UP ARROW | {UP} |
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
F4 | {F4} |
F5 | {F5} |
F6 | {F6} |
F7 | {F7} |
F8 | {F8} |
F9 | {F9} |
F10 | {F10} |
F11 | {F11} |
F12 | {F12} |
F13 | {F13} |
F14 | {F14} |
F15 | {F15} |
F16 | {F16} |
Keypad add | {ADD} |
Keypad subtract | {SUBTRACT} |
Keypad multiply | {MULTIPLY} |
Keypad divide | {DIVIDE} |
SHIFT | + |
CTRL | ^ |
ALT | % |