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, 输入法设置工具

已有 53 条评论

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

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

  2. 小软件也有大用处!

  3. Alan Alan

    刚我翻了一下,IMETool是十多年前的工具,开发者现在还在继续更新,改名TSFTool,感谢!

  4. 软件虽然更新了,但界面的帮忙说明没有更新。点?帮助界面弹出的帮助说明:
    应该同步修改支持windows 10以后系统。目前测试win10\11\server2022都正常

  5. 徐

    大神,我讲的不是设置的问题,是程序启动的时候,这个选项的默认钩选状态

    1. 就是设置过慢的问题。这个功能两年前已经写好了,程序的第一步就是读取设置状态,所以不会有这么明显的错误。我已经更新了版本来解决这个设置过慢的问题。

      1. 徐

        测试过了,有盘系统上正常 无盘的不正常 有点怪了 但读取的应该是同一个位置的值啊?Control Panel\Desktop\UserPreferencesMask

        1. 是注册表的这个键值,正常系统是个8位的16进制数,第5位是开关这个设置的,数值是12或者92。

          1. 我查了一下Win7,它的值是:90 32 03 80 10 00 00 00,和你的第二种 Win10 类似。我分析要么是版本差异,要么是这些值是多重开关状态叠加的结果。

          2. 徐

            // win10
            // =[$9e,$1e,$07,$80,$92,$00,$00,$00]; on
            // =[$9e,$1e,$07,$80,$12,$00,$00,$00]; off

            // win10
            // =[$90,$12,$03,$80,$90,$00,$00,$00]; on
            // =[$90,$12,$03,$80,$10,$00,$00,$00]; off

            不知道是WIN10版本的原因还是咋的了 我这里找了来有两种值

  6. 徐

    程序还有个小BUG,界面的每个窗口使用不同的输入法,未读取当前的设置值

    1. 这个其实不是bug,而是win10/11在某个版本之后,设置这个功能变得很慢,大约需要近一分钟才能完成。正在想办法改进。

      1. 更新了一下,优化了设置速度。

  7. 徐

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

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

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

    1. 是处理多个参数时流程上的问题,已经修正。另外修订了一个默认输入法为美式键盘时不能识别的bug。

  8. Jack Xie Jack Xie

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

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

  9. cw cw

    大神你好,请问如何截获的键盘消息以及控制其他进程的输入法的呢?有啥资料可以参考吗

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

  10. 李力 李力

    感谢大神。解决了长期困扰我的难题!小巧实用!国产精品软件的翘楚

  11. kidzgy kidzgy

    我很好奇,如果64位系统,运行你这个32位程序,在正常使用上会有什么区别吗?

    1. kidzgy kidzgy

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

      1. 从编程角度来说,同一个语句,在不同的环境下可能会有不同的效果,比如读写注册表的位置是不同的、默认的系统目录位置也是不同的。

        1. kidzgy kidzgy

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

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

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

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

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

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

          1. 现在系统的主流是64位,仍保留32位版本是为了顾及部分用户,但没有必要单独再增加代码。无法重现这个问题。Win10 时代没有什么好的方法,所有可行的方案都是另写一个常驻程序外挂。国人有个叫“Win10输入法经典切换”的工具,可以完全模拟 Win7 时代的 Ctrl+空格切换方式,不过记得后来收费了。另外有个叫 ImTip ( 输入法状态跟踪提示 ) 的工具,可以在输入法框里浮动显示中英文、全半角等状态,也可以一试。
  12. zhq zhq

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

    1. 正如你描述的那样,是不可能实现单键打开/关闭输入法的。

      1. Felix Felix

        博主您好,win10的默认输入法在默认状态下是打开的,可否设置为默认是关闭状态,需要时按快捷键打开?

        1. 输入法的设置里一般有个“选择输入法默认模式”,设为英文即可。添加美式键盘也算是一种解决方案。

  13. u2shana u2shana

    那个顽固的英语美式键盘,删了,过一段时间又莫名其妙冒出来,有办法彻底干掉么

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

      1. 留连暗香 留连暗香

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

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

          1. 查了一下 intel 显卡服务相关文件,igfxEM.exe 调用了添加输入法键盘布局的操作,但我这里并没有添加英文键盘,或者是和安装的显卡驱动语言版本有关。

          2. 留连暗香 留连暗香

            大佬,我禁用igfxCUIService1.0.0.0 这个服务后,重启系统就不再自动添加英文输入法了。顺便非常感谢大佬为此更新个版本,谢谢!

      2. 留连暗香 留连暗香

        作者大大,能告知删除顽固的英文美式键盘这个对应的注册表吗,我想把这个键值设置成禁止修改。谢谢

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

  15. GoodbyeNJN GoodbyeNJN

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

  16. 老人 老人

    建议为默认输入法增加单快捷键打开的功能。实现一键打开默认输入法,想关闭时一键关闭。比如,使用功能键F10。

    1. 这需要常驻内存的程序来实现,不是本工具的设计方向。

  17. 大马猴 大马猴

    可以不可以付费定制一下

    1. 说出你的想法

      1. 大马猴 大马猴

        主要功能就是能够导出当前输入法列表,禁用输入法没有四秒提示,静默禁用
        能不能留个联系方式,沟通一下

        1. 更新 0.9.2.4 版本,增加上述功能。

  18. 古大虾 古大虾

    大佬,这个工具在Win10下真的帮了大忙,能否加上设置默认输入法的功能,……还是说我没找到哈哈

  19. 牛逼啊没想到更新了。 牛逼啊没想到更新了。

    早几年就好了。

  20. 古大虾 古大虾

    第一次也没看到,第二次在图左上发现……

    1. 我的错,把字号改粗一点。

  21. lomom楼猫 lomom楼猫

    根本没有下载链接

    1. 看来是眼神不太好。:D

添加新评论