添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

TSFTool 是 IMETool 输入法设置工具的继承者,支持在 Windows 10/11/Windows Server 2019 操作系统下,支持新的 TSF 输入法框架,并部分兼容旧的 IMM 输入法框架。

下载:tsftool.rar

tsftool.png
版本历史:
0.9.3.1:修订命令行参数 /remove_eng 失效问题,去除无用的 /? 参数。同时发现程序在最新版的 Windows11 下有时退出后仍在进程中,尚未找到原因。
0.9.3.0:解决命令行输入两个以上参数时,程序界面不自动退出的问题。将启用/禁用输入法的延时改为5秒。修正默认输入法设置为“美式键盘”时程序不能正确识别的问题。优化“每个窗口使用不同输入法”设置的生效速度。
0.9.2.9:增加命令行参数 /remove_eng,对应其它菜单下的删除顽固的英语美式键盘功能(不删除注册表项目)。
0.9.2.8:修订因输入法名称中含有空格和大写字母带来的命令行参数 bug,受影响的命令:
add_name/del_name/move_name/default_name/hotkey_name。
0.9.2.7:修改导出/导出配置文件格式,解决某些特殊情况下可能出现冲突的问题。
0.9.2.6:增加导出/导出配置功能(在其它功能菜单下)。去除 0.9.2.5 增加的禁用所有输入法功能。
0.9.2.5:增加禁用所有输入法功能(因为必须保留至少一个输入法,故全部禁用后保留了一个美式键盘)。
0.9.2.4:增加导出输入法列表功能。取消等待4秒的对话框。
0.9.2.3:修正两处 bug。
0.9.2.2:旧的 IMM 框架输入法在列表中显示为绿色。增加删除按钮,从注册表中删除无用输入法项目交由用户处理。
0.9.2.1:在启用/禁用输入法后强制延时4秒,避免系统操作太慢可能会导致程序报错。此版本可以清除小狼毫等输入法卸载后在注册表中的残留项目。
0.9.2.0:增加命令行参数支持;增加帮助窗口;一些细微的程序内部调整。
0.9.1.3:修补从 0.9.1.0 版本开始遗漏的写入键盘切换热键的部分代码(感谢 waiting 的提醒)。
0.9.1.2:旧版本的 Windows10 不支持表情符号面板功能,TSFTool 启动时会报错。此版本修订这一问题。
0.9.1.1:某种输入法禁用时,如果其已被设置为默认输入法,则将默认输入法改为语言列表。英文键盘布局在禁用/启用时,增加一个延时关闭的提示对话框,以免操作过快引起异常。增加删除顽固存在的英语美式键盘布局功能。
0.9.1.0:全部重写代码,使用不同的方式处理,支持旧的 IMM 框架输入法,修复一些 Bug。此版本需要管理员权限。增加 32 位版本,32位版本也可以正常支持 64 位的 Windows10。
0.9.0.0:初始版本,只支持 TSF框架输入法。

命令行参数:
/r /refresh 重载键盘布局。
/remove_eng 删除顽固的英语美式键盘(不删除注册表项目)。
/caps 使用 Caps Lock 键关闭大写。
/shift 使用 Shift 键关闭大写。
/alone:0 各个窗口使用相同的输入法。
/alone:1 各个窗口使用独立的输入法。
/bar:0 关闭桌面状态栏。
/bar:1 打开桌面状态栏。
/emoji:0 表情符号面板自动关闭。
/emoji:1 表情符号面板不自动关闭。
/layout:0/1/2/3 键盘布局切换热键:0:禁用;1:Ctrl+Alt;2:Alt+Shift;3:` 。
/lang:0/1/2/3 输入语言切换热键:0:禁用;1:Ctrl+Alt;2:Alt+Shift;3:` 。
/add_num:<输入法序号> 按序号添加到输入法列表。
/add_name:<输入法名称> 按名称添加到输入法列表。
/del_num:<输入法序号> 按序号从输入法列表中禁用。
/del_name:<输入法名称> 按名称从输入法列表中禁用。
/del_all 禁用列表中所有输入法。
/move_num:<输入法序号> <新序号> 将指定序号的输入法移动到新位置。
/move_name:<输入法名称> <新序号> 将指定名称的输入法移动到新位置。输入法名称中如有空格,需要用双引号括起来。
/langlist 使用语言列表替代默认输入法。
/default_num:<输入法序号> 将指定序号的输入法设置为默认输入法。
/default_name:<输入法名称> 将指定名称的输入法设置为默认输入法。
/export_enabled_list: <文件名> 导出当前使用的输入法列表。
/export_disabled_list: <文件名> 导出禁用的输入法列表。
/hotkey_num:<输入法序号> 按序号指定输入法热键,不填写热键表示删除热键。
/hotkey_name:<输入法名称> 按名称指定输入法热键,不填写热键表示删除热键。输入法名称中如有空格,需要用双引号括起来。
/switchkey:<a/b/c> 设置通用切换热键。a: 打开关闭输入法;b: 全角半角切换;c: 中英
文标点切换。

热键格式: 分两部分,以空格分隔,左侧为控制键,右侧为字符键,如:ctrl 5、shift home、ctrl+alt d 等。
左侧控制键列表如下(不分大小写):
Alt
Ctrl
Left_Ctrl
Right_Ctrl
Ctrl+Alt
Shift
Left_Shift
Right_Shift
Alt+Shift
Ctrl+Shift
Left_Ctrl+Shift
Right_Ctrl+Shift
Ctrl+Alt+Shift

右侧字符键列表如下:
0~9、a~z、-=,.;'[]\等常规字符
? 因 / 被定义为参数的前导符,用 ? 来代表 /
~ 数字1左侧那个 ` 字符
BACKSPACE
TAB
ENTER
HOME
END
PGUP
PGDN
INS
DEL
LEFT
RIGHT
UP
DOWN
F1~F12
NUM0~NUM9 小键盘的0~9
NUM+
NUM-
NUM*
NUM? 代表小键盘的 /
NUM.
LEFT_WINDOW 左徽标键
RIGHT_WINDOW 右徽标键
APPS 应用程序键

几点说明:
一、关于热键

  1. 切换热键修改后立即生效,但只对新打开窗口有效,原有窗口仍是旧的热键有效。
  2. 切换热键可以单独选择左/右控制键,但是重启后会变回左右双键同时有效,这是 Windows 的设置功能混乱造成的,重载键盘布局即可重新生效。可以点击设置工具右下角的“刷新”按钮,也可以由命令行执行 tsftool /r 或 tsftool /refresh 重载键盘布局。
  3. TSF 类型的输入法和旧的IMM类型输入法能使用的热键范围有所不同。TSF 输入法的控制键不分左右,虽然Windows10 的相关设置界面里显示 Alt 键只能用左 Alt,实际右 Alt 键也有效,故在命令行中指定 TSF 输入法热键时不再加 left 前缀,如:alt、ctrl+alt 等。另外,TSF输入法不能使用 Windows 键和 APPS 键。
  4. IMM输入法的控制键可单独区分左右,但只能使用 ctrl、shift、ctrl+shift这三组控制键组合,如:ctrl、left_ctrl、right_ctrl+shift 等等。打开/关闭输入法、全角/半角切换和中英文标点切换的热键定义范围和 IMM 输入法一致。Windows10 目前不再定义全局的全半角切换和中英文标点切换热键,但有时候也会有效,所以暂时保留了这两组切换热键设置。
  5. 因为 / 被定义为命令行参数的前导符,从命令行指定热键时使用其上档键 ? 来代替 /,小键盘的 / 用 num? 代替。
  6. 输入法热键的重码检查暂时只在当前当前语言下进行,其它语言自行注意即可。功能待以后改进。但是三组通用切换热键允许不同语言重码,互不影响。
  7. 在 Windows10 的热键设置中对“~”键的定义有误,无法生效,为保持兼容性本工具也保留了这个定义;另 Windows10 热键设置中定义的“抑音符”实际为小键盘的数字0。

二、关于键盘布局

  1. Windows10 从 1903 版本开始,已经无法正常将中文简体-美式键盘显示在输入法列表中了(实际是存在并启用的)。为了方便一些老用户,我在程序的输入法列表里硬加了一个“美式键盘”,以蓝色显示,可以正常使用。但是我发现,当切换到美式键盘后,是无法用打开/关闭输入法的切换热键“Ctrl+空格”切换到其它输入法的,只有改用切换键盘布局热键“Ctrl+Shift”或徽标键+空格键。我个人建议是禁用美式键盘,然后把最常用的输入法设置初始状态为“英文”,再用“Ctrl+空格”就可以正常切换了。
  2. 暂时只支持 0409 这一种英文键盘布局。
  3. 因为某些原因,在对美式键盘进行启用、禁用操作时,刷新需要 3~4 秒,注意操作不要太快。

三、其它

  1. 所有设置修改后立即生效,没有设计“确定”、“应用”这类功能。
  2. 本工具支持 Windows10 32/64 位版本和 Windows Server 2019,32 位版本程序在 64 位操作系统下运行正常。Windows7/8 等以前的操作系统的设置实际差异较大,不再支持。
  3. 如果安装了多种语言的输入法,可以从底部的已安装语言列表中切换进行设置。
  4. 输入法列表中显示为“粗体” 的条目表示此输入法已设置为默认输入法,可以从列表上点击右键,从弹出菜单里修改相关设置。
  5. 每种语言下应至少保留一种输入法或键盘。
  6. 如果要添加/删除某些输入法语言,请转到操作系统的设置/时间和语言/语言下进行设置。尝试过直接删除语言,发现容易造成输入法状态混乱,暂时取消了这个功能。
  7. 偶尔会出现工具里的输入法列表和实际的输入法列表不太一致的现象,来回调整几次刷新刷新就会正常。主要原因是因为 Windows 在语言选项中的输入法列表和任务栏上的输入法列表是两个不同的配置,有时候条目数量和顺序会不一致,通过输入法工具设置会纠正这个问题。
  8. 某些输入法(如小狼毫)在卸载不完全时,TSFTool 的输入法列表里可能会存在空行,以后的版本会想办法解决这个问题( 0.9.2.1 版本已解决)。
  9. 要下载 TSFTool,可以去我的个人网站: https://www.mympc.org

             Silence
             2023年2月10日
            

    标签: tsftool, imetool, 输入法设置工具

    已有 71 条评论

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Control Panel\International\User Profile]
    "Languages"=hex(7):7a,00,68,00,2d,00,48,00,61,00,6e,00,73,00,2d,00,43,00,4e,00,\
    00,00,6a,00,61,00,00,00,65,00,6e,00,2d,00,55,00,53,00,00,00,00,00
    "ShowAutoCorrection"=dword:00000001
    "ShowTextPrediction"=dword:00000001
    "ShowCasing"=dword:00000001
    "ShowShiftLock"=dword:00000001
    "InputMethodOverride"="0804:{6565D455-5030-4C0F-8871-83F6AFDE514F}{4D5459DB-7543-42C0-9204-9195B91F6FB8}"
    "HttpAcceptLanguageOptOut"=dword:00000001

    [HKEY_CURRENT_USER\Control Panel\International\User Profile\en-US]
    "CachedLanguageName"="@Winlangdb.dll,-1121"
    "0409:00000409"=dword:00000001
    "FeaturesToInstall"=dword:000000ff

    [HKEY_CURRENT_USER\Control Panel\International\User Profile\ja]
    "CachedLanguageName"="@Winlangdb.dll,-1230"
    "0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"=dword:00000001
    "FeaturesToInstall"=dword:000000ff

    [HKEY_CURRENT_USER\Control Panel\International\User Profile\zh-Hans-CN]
    "CachedLanguageName"="@Winlangdb.dll,-1650"
    "0804:{6565D455-5030-4C0F-8871-83F6AFDE514F}{4D5459DB-7543-42C0-9204-9195B91F6FB8}"=dword:00000001

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{03B5835F-F03C-411B-9CE2-AA23E1171E36}]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{03B5835F-F03C-411B-9CE2-AA23E1171E36}\LanguageProfile\0x00000411{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}]
    "Enable"=dword:00000001

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{8613E14C-D0C0-4161-AC0F-1DD2563286BC}]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{8613E14C-D0C0-4161-AC0F-1DD2563286BC}\LanguageProfile]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{8613E14C-D0C0-4161-AC0F-1DD2563286BC}\LanguageProfile\0x0000ffff]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{8613E14C-D0C0-4161-AC0F-1DD2563286BC}\LanguageProfile\0x0000ffff{B37D4237-8D1A-412E-9026-538FE16DF216}]
    "Enable"=dword:00000001

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{F25E9F57-2FC8-4EB3-A41A-CCE5F08541E6}]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{F25E9F57-2FC8-4EB3-A41A-CCE5F08541E6}\LanguageProfile]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{F25E9F57-2FC8-4EB3-A41A-CCE5F08541E6}\LanguageProfile\0x00000804]

    [HKEY_CURRENT_USER\Software\Microsoft\CTF\TIP{F25E9F57-2FC8-4EB3-A41A-CCE5F08541E6}\LanguageProfile\0x00000804{F2510000-2FC8-4EB3-A41A-CCE5F08541E6}]
    "Enable"=dword:00000001

    0.9.3.1发现一BUG。
    测试环境Windows10 64,10.0.19044.1741。
    具体是这样的,启用桌面语言栏,任务栏的语言栏按钮,会有英文(美国)和中文(中国)的两种语言,使用TSFTOOL删除顽固的英文(美国)语言时,仍旧无法彻底删除。

    在语言设置处,手动添加英文(美国)语言,添加后再手动删除,此时才可彻底删尽。

    这个其实不是bug,删除顽固的英文(美国)语言那个功能是不处理注册表的,只是处理某些通过 API 函数动态添加的“英文”键盘布局,这种动态添加的项目一般重启后就会消失。因为它并不在注册表中出现,所以我是把它作为一种特殊情况放在了其它菜单里。

    我一直是在 Win11 下进行开发的,没有这个问题。它等效于 Windows 本身的设置/时间和语言/输入/高级键盘设置下的“使用桌面语言栏”这个功能。如果系统设置可以正常切换,则检查 PowerShell 是否被禁用,TSFTool 依赖于 PowerShell。

    \HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask 的第5个数设置为16进制的 12 或者 92,但有的系统可能会是 10 或者 90。
    比较稳妥的办法是使用 powershell 命令进行设置,这个功能和使用桌面语言栏功能是相互关联的,共有四种状态组合,对应四个命令:
    powershell -command "& {Set-WinLanguageBarOption}"
    -command "& {Set-WinLanguageBarOption -UseLegacyLanguageBar}"
    -command "& {Set-WinLanguageBarOption -UseLegacySwitchMode}"
    -command "& {Set-WinLanguageBarOption -UseLegacySwitchMode -UseLegacyLanguageBar}"
    嫌麻烦就直接用 TSFTool 的命令:
    /alone:0 /alone:1

    您好,请问有没有什么方法可以在两种指定的输入法间互相切换呢?
    Win7的时候Ctrl+Space会在中文输入法和中文美式键盘间切换,从Win10开始就等同于输入法的中英切换了(按shift会变回中文,并非真正关闭输入法),现在即使强制打开使用中文美式键盘,在cmd里还是会被视为中文上屏
    始终找不到方法在英文美式键盘和中文输入法间互相切换(两种以上输入法的情况下Win+Space和Alt+Shift都做不到互相切换)

    在 TSF 框架中,各种美式键盘都不是输入法,而是键盘布局,它和输入法的处理机制是不太一样的。你s想实现的功能,要么装第三方的工具常驻后台捕捉 Ctrl+Sapce 处理切换输入法,要么可以考虑把最常用的输入法设置成默认为英文状态。

    大神你好,想在开机时使用命令行增加美式键盘并设置美式键盘为默认语言

    /add_name:美式键盘 /emoji:1 /alone:1 /default_name:美式键盘

    此命令没有问题 ,但会有界面弹出 有支持静默的参数吗?

    还是无法彻底干掉英文键盘,之前没有这种情况,不知道什么原因就一直会加载。
    另外imetool最终版网上有一个2.8.3不知道是不是官方出品,而且是单文件的,如果是可以更新到这里吗?如果不是,那官方的版本是否也可以做成单文件版?

    我之前说过多次,英文键盘有很多都是由一些使用了国外控件的程序自动注册进来的,得找到这个应用才能彻底干掉。imetool 从来都是绿色单文件的,附带的两个以i开头的文件是 windows2000 里的系统文件,在 Windows XP 下切换到输入法指示器模式下使用它们,这一点在程序包里附带的文件里有说明。

    截获键盘消息一般是用键盘钩子之类的方法,AttachThreadInput 和 WM_INPUTLANGCHANGEREQUEST 之类的函数可以控制其它进程的输入法,不过我没有做过这方法的研究。

    我很好奇,如果64位系统,运行你这个32位程序,在正常使用上会有什么区别吗?
    因为不像其他大程序,64位是处于性能的需要,但小程序的话,32位能实现,64位的存在意义又在哪里呢?

    既如此,为什么x86和x64不整合成一个文件,由软件来根据不同的环境读取不同的注册表值,这样一个文件岂不更好吗?

    0928版本发现一问题,我在运行软件前,是使用桌面语言栏的,在运行软件后,任务栏里的语言栏图标消失,而软件仍显示打勾。我关闭软件重新运行,发现【使用桌面语言栏】已经去勾。

    另外想请教,我在win7时代,是喜欢用【ctrl+空格】来切换输入法,主要是切换中文和英文,任务栏右下角处使用语言栏,并将其最小化,不显示其他图标,同时将搜狗输入法状态栏设置隐藏。这样一来,我就根据输入法的图标来判断当前输入法状态是处与中文或英文,搜狗输入法图标为S字,英文输入法图标为键盘。而且就一个图标判定,前面没有EN也没有CN的图标,这样的任务栏空间不会出现挤占

    按照作者的推荐,不使用美式键盘,而是直接将搜狗输入法(以搜狗为例)设置为默认,并将其设置默认为英文状态,用ctrl+空格来切换中英文。

    这样有一个问题,就是右下角的语言栏图标始终是搜狗的图标,就无法即时分辨当前是处于中文还是英文状态了。除非:
    (1)设置语言栏显示其他图标。这样的坏处就是,所谓其他图标包括中英文、全半角、键盘、账户登录、设置多个按钮,挤占任务栏空间,且这些按钮都无法自定义!在切换输入法的时候,美式键盘时无其他图标,切换至搜狗时又突然显示其他图标,会发生任务栏图标位置变动。
    (2)开启搜狗输入法自带的指示器,这样系统需要多一个搜狗的常驻进程,任务栏会多一个小图标。

    试问是否有其他方法更好的监视当前输入法中英文状态?

    我想将 打开/关闭输入法默认的CTRL+SPACE更改为CTRL,在原IMETOOL中可以改但无效,在TSFTOOL中,必须CTRL+一个组合键,没有CTRL+无了,能再提供一下吗?谢谢

    2006年时我在某论坛的帖子里提到过这个问题:出现这种情况,多半是因为你电脑上安装的某个软件的问题。它在设计时使用了某种国外的控件,而这种控件会自动添加英语键盘(大概是老外开发者认为英语键盘是必须的吧),最常见的方法是调用了 UnloadKeyboardLayout/LoadKeyboardLayout 之类的函数。解决方法之一就是找到这个软件的主程序,强行修改干掉这些函数。不过对普通用户来说可能有些难度。

    或者说大佬能否提供一个删除的指令?我想把它做成启动项,能开机后自动删除英文美式键盘。(其实已经查出来就是igfxCUIService1.0.0.0 Intel(R) HD Graphics Control Panel Service这个捣的鬼,但是又没办法禁用,要不显卡不正常)

    应该不是 intel 显卡服务的问题,我也用它很多年了,从来没有给我添加过英文美式键盘。
    删除这种键盘布局是调用的一个古老的 windows api 函数 unloadkeyboardlayout,得写程序才方便实现。我特地更新了一下 tsftool,增加了一个 /remove_eng 命令行参数来执行这个操作。

    [...]臨時解決方法最簡單有效的是使用免費免安裝的「TSFTool V0.9.2.8 輸入法設置工具」(https://www.mympc.org/)的一個特別功能:「刪除頑固的英語美式鍵盤」,無須以上新增語言的步驟,一定有效,且立即生效(如下圖)。但缺點是重新開機後「Eng 英文鍵盤」又再出現。[...]

    我尝试实现两个输入法之间切换的功能,想请教下如何获取当前正在使用的输入法?
    比如当前正在使用微软拼音,按一个键后切换到微软五笔,再按同一个键后切回微软拼音。
    在微软提供的文档上查到微软拼音输入法的标识是 0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7},不知道该怎么使用

    使用 ITfInputProcessorProfileMgr::GetActiveProfile 这个方法,参见:
    https://docs.microsoft.com/en-us/windows/win32/api/msctf/nf-msctf-itfinputprocessorprofilemgr-getactiveprofile

    Silence: 感谢鼓励。我也曾一度认为有技术就饭吃,现在发现在年龄这道坎面前,...
  10. Silence : Win7 与 Win10 在输入法框架上有很多区别,需要单独设计... heeroyuyj : win7 上有能用的吗 到彼岸 : 才华是无法埋没的,休息休息,重新开始! Silence : 看样子你安装了简中、日文和英文三种键盘布局,一时间也不好定位是什... 小宝贝 : Windows Registry Editor Version ...