修改微软拼音输入法的“/”快捷键
By
rebellion51
at 2022-03-14 • 0人收藏 • 824人看过
微软拼音系统自带,很好用,响应快,也没有广告,但是有一个不爽的地方,就是它的“/”键,无论是中文模式还是英文模式,都只能输出“/”,这与我们常规的输入习惯不一样。我们希望的是:在中文模式下,按“/”键,输出“、”,英文模式下,按“/”键,输出“/”。一番搜索后,从网上的一段ahk代码获得灵感。
发布后创建快捷方式,放在startup文件夹,可实现开机自动启动。
我的环境是:win11,64位系统。
以下是代码:
import win.ui; /*DSG{{*/ mainForm = win.form(text="顿号";right=959;bottom=591) mainForm.add() /*}}*/ import win.ui.menu; import key.hotkey; import win.util.tray; //创建超级热键,必须用于窗口程序中 var hotkey = key.hotkey(mainForm) //判断输入法状态是否是中文 var isChineseMode = function(){ imm32 = raw.loadDll("imm32") var hwnd = ::User32.GetForegroundWindow() var hwnd2 = imm32.ImmGetDefaultIMEWnd(hwnd) var ime_status = ::User32.SendMessage(hwnd2, 0x283/*_WM_IME_CONTROL*/, 0x001 ,0) return ime_status == 1025; } //为“/”绑定热键 hotkey.reg( "/", function(hwnd,...){ if isChineseMode(){ ..key.sendString("、") } else { ..key.sendString("/") } } ) // 创建托盘图标 var tray = win.util.tray(mainForm) // 不在前台显示 mainForm.show(false); mainForm.wndproc = { [0xACCF/*_WM_TRAYMESSAGE*/ ] = function(hwnd,message,wParam,lParam){ if( lParam = 0x205/*_WM_RBUTTONUP*/ ){ var pt = ::POINT(); ::User32.GetCursorPos(pt); //弹出托盘菜单以前,一定要前置主窗口中,不然不点击菜单不会消失 win.setForeground(mainForm.hwnd) mainForm.popmenu.popup(pt.x,pt.y,true ) } } } mainForm.popmenu = win.ui.popmenu(mainForm);//创建弹出菜单 mainForm.popmenu.add('&退出',function(id){ mainForm.close() }) return win.loopMessage();
5 个回复 | 最后更新于 2022-03-14
登录后方可回帖
感谢分享,
,有用