修改微软拼音输入法的“/”快捷键

By rebellion51 at 2022-03-14 • 0人收藏 • 340人看过

微软拼音系统自带,很好用,响应快,也没有广告,但是有一个不爽的地方,就是它的“/”键,无论是中文模式还是英文模式,都只能输出“/”,这与我们常规的输入习惯不一样。我们希望的是:在中文模式下,按“/”键,输出“、”,英文模式下,按“/”键,输出“/”。一番搜索后,从网上的一段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
2022-03-14   #1

感谢分享, ,有用

2022-03-14   #2

要发布的话,还得先导入import win.ui.menu

否则发布了也运行不了

2022-03-14   #3

回复#2 @rebellion51 :

我把menu代码给你添加进去了

2022-03-14   #4

回复#3 @admin :

多谢多谢

2022-03-14   #5

可能win11没这个问题,我在测试时,中文始终返回的1025。 微软应该增加个选项,用户选择/键的输出方式,可惜封闭惯了。

登录后方可回帖

登 录
信息栏
公告:
个人博客
专注分享
谢谢合作!

本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...