用 Python 切换输入法
转载请注明出处:https://blog.csdn.net/jpch89/article/details/84281136
0. 前言及参考资料
前言
本来是想做一个 Sublime Text 3
的小插件,解决 vim
模式下,退出插入模式进入命令模式的时候,输入法没有办法自动切换到英文的这个问题。
后来看了一下文档好像有点门槛,准备以后再弄吧,暂时写一个 Python
切换输入法的小脚本试试。其实准确来讲应该是切换键盘布局 keyboard layout
,因为我不知道如何检测搜狗输入法或者微软拼音输入法的中英文状态,如果检测到就可以不用切换键盘布局,而是通过模拟按下 Shift
键来切换中英文输入状态了。
参考资料
- 参考了下面这个库的一些代码:
https://github.com/Lex98/py_win_keyboard_layout
1. 脚本
话不多说,上代码。
setkeyboardlayout.py
# set keyboard layout
# 设置键盘布局
from win32con import WM_INPUTLANGCHANGEREQUEST
import win32gui
import win32api
# 语言代码
# https://msdn.microsoft.com/en-us/library/cc233982.aspx
LID = {0x0804: "Chinese (Simplified) (People's Republic of China)",
0x0409: 'English (United States)'}
# 获取前景窗口句柄
hwnd = win32gui.GetForegroundWindow()
# 获取前景窗口标题
title = win32gui.GetWindowText(hwnd)
print('当前窗口:' + title)
# 获取键盘布局列表
im_list = win32api.GetKeyboardLayoutList()
im_list = list(map(hex, im_list))
print(im_list)
# 设置键盘布局为英文
result = win32api.SendMessage(
hwnd,
WM_INPUTLANGCHANGEREQUEST,
0,
0x0409)
if result == 0:
print('设置英文键盘成功!')
完成于 2018.11.20