Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否可以保持中文输入法的英文模式? #70

Open
Azureki opened this issue May 21, 2021 · 20 comments
Open

是否可以保持中文输入法的英文模式? #70

Azureki opened this issue May 21, 2021 · 20 comments

Comments

@Azureki
Copy link

Azureki commented May 21, 2021

这个 issue #66 中提到了搜狗输入法。而我使用系统自带的微软输入法也不行。
我一般习惯使用中文拼音输入法,按 shift 切换到英文写代码。但是按esc进入normal模式,再进入insert模式,就变成了中文。
插件版本:1.4.7。
不太清楚是本来支持的,但是我哪里做错了,还是本来就不支持这样做,正确的做法是在微软拼音/美国键盘之间切换?

@hadix-lin
Copy link
Owner

输入法自身保持输入状态,是输入法自己的特性,不是我这个插件可以解决的问题。

除非输入法本身提供API可以调用,否则我这个插件是做不到的。

@liang-0131
Copy link

输入法自身保持输入状态,是输入法自己的特性,不是我这个插件可以解决的问题。

除非输入法本身提供API可以调用,否则我这个插件是做不到的。

确实有这个需求,大部分这类切换输入法插件都是能获取输入法中英文状态的。体验是保持一致的

@Azureki
Copy link
Author

Azureki commented Dec 12, 2021

@liang-0131
我想Windows上的微软拼音、搜狗拼音都不支持获取中英文。如果可以作者就没必要这么麻烦了。而且也不仅仅是这一个插件如此,其他插件(win版)也同样。

我只知道如果用Linux上的fcitx输入法,进入normal模式再进入insert模式是保留原有中/英状态的。

@liang-0131
Copy link

@liang-0131
我想Windows上的微软拼音、搜狗拼音都不支持获取中英文。如果可以作者就没必要这么麻烦了。而且也不仅仅是这一个插件如此,其他插件(win版)也同样。

我只知道如果用Linux上的fcitx输入法,进入normal模式再进入insert模式是保留原有中/英状态的。

这可以的Windows不行就算了 mac和Linux应该可以。可以看看这个类似的有很多可以获取中英文状态
https://github.com/yuanotes/obsidian-vim-im-switch-plugin

@hadix-lin
Copy link
Owner

@liang-0131
我想Windows上的微软拼音、搜狗拼音都不支持获取中英文。如果可以作者就没必要这么麻烦了。而且也不仅仅是这一个插件如此,其他插件(win版)也同样。
我只知道如果用Linux上的fcitx输入法,进入normal模式再进入insert模式是保留原有中/英状态的。

这可以的Windows不行就算了 mac和Linux应该可以。可以看看这个类似的有很多可以获取中英文状态 https://github.com/yuanotes/obsidian-vim-im-switch-plugin

谢谢你提供的线索,直接使用输入法自己的中英文状态切换的确是最好的方案,我研究一下。

@hadix-lin hadix-lin reopened this Dec 20, 2021
@liang-0131
Copy link

有的输入法自带命令切换:比如这个小小输入法http://yong.dgod.net/read.php?tid=2155&fid=7

@hadix-lin
Copy link
Owner

Duplicate of #81 #85

@hadix-lin
Copy link
Owner

hadix-lin commented Apr 14, 2022

Duplicate of #81

@hadix-lin hadix-lin marked this as a duplicate of #81 Apr 14, 2022
@hadix-lin
Copy link
Owner

Duplicate of #85

@hadix-lin hadix-lin marked this as a duplicate of #85 Apr 14, 2022
@hadix-lin hadix-lin reopened this Jun 29, 2022
@A-23187
Copy link

A-23187 commented Nov 8, 2022

直接切换当前输入法的中英文模式可能是更合理的方式。在 Linux 或 macOS 下,有获取和切换当前输入法中英文模式的方法(具体,Linux:fcitx-remote,macOS:fcitx-remote for OS X)。而在 Windows 下,有接口 IMC_GETCONVERSIONMODE 用于获取中英文模式,IMC_SETCONVERSIONMODE 用于切换中英文模式。我用这两个接口实现了一个命令行工具 AIMSwitcher,可以切换自带的微软拼音输入法的中英文模式(所以应该可以满足 @Azureki 的需求),但目前的问题是这两个接口已经过时,对于搜狗等第三方输入法可能无效

@hadix-lin
Copy link
Owner

hadix-lin commented Nov 14, 2022 via email

@HusuSama
Copy link

我使用的微软自带的输入法,英文使用的美式英文键盘,但是能切换英文,不能在输入时切换回来,只能搜狗输入法吗?

@A-23187
Copy link

A-23187 commented Mar 22, 2023

我使用的微软自带的输入法,英文使用的美式英文键盘,但是能切换英文,不能在输入时切换回来,只能搜狗输入法吗?

如果你中英文输入都用的微软自带的输入法,可以试一试我的工具 AIMSwitcher,可以实现在微软输入法的中英文模式之间切换

@HusuSama
Copy link

@A-23187
你的这个只是通过 im-select 去进行的键盘切换,在vim和vscode中很容易编写,但是放在 ideavim 中,他本身不支持 autocmd 命令,不能在切换模式或者其他生命周期中操作,因为我本身不太熟java,如果是可以使用python、golang、rust这些我倒是能帮这个插件进行一些修改,而且看起来修改非常简单,然而我这里并不能打包成功,不知道为什么


也许,可以在文件src/main/kotlin/io/github/hadixlin/iss/win/WinInputMethodSwitcher.kt,添加关于微软键盘的指令,0x0804
image

@hadix-lin
Copy link
Owner

@A-23187 你的这个只是通过 im-select 去进行的键盘切换,在vim和vscode中很容易编写,但是放在 ideavim 中,他本身不支持 autocmd 命令,不能在切换模式或者其他生命周期中操作,因为我本身不太熟java,如果是可以使用python、golang、rust这些我倒是能帮这个插件进行一些修改,而且看起来修改非常简单,然而我这里并不能打包成功,不知道为什么

也许,可以在文件src/main/kotlin/io/github/hadixlin/iss/win/WinInputMethodSwitcher.kt,添加关于微软键盘的指令,0x0804 image

微软中文输入法支持操作系统指令来切换输入状态吗?如果你知道指令编码,并且可以帮忙做测试,我可以来修改这部分代码

@hadix-lin
Copy link
Owner

插件可以调用win32api

@HusuSama
Copy link

HusuSama commented Apr 6, 2023

我在nvim中使用python进行过中英文的切换,但是我没有用java实现过这个方案,而且我并不熟悉idea的插件开发,不过我可以给你看下这边使用python进行的示例代码
ideavim_extension的项目我尝试过克隆修改并编译,但是似乎错误很多,因为没有弄过,所以也不清楚具体产生的原因
如果你想看下python的示例,你可以从下面访问:

https://github.com/1538379200/vim-switch-keyboard

@hadix-lin
Copy link
Owner

我在nvim中使用python进行过中英文的切换,但是我没有用java实现过这个方案,而且我并不熟悉idea的插件开发,不过我可以给你看下这边使用python进行的示例代码 ideavim_extension的项目我尝试过克隆修改并编译,但是似乎错误很多,因为没有弄过,所以也不清楚具体产生的原因 如果你想看下python的示例,你可以从下面访问:

https://github.com/1538379200/vim-switch-keyboard

跟我调用的基本是一样的api,只是键盘布局使用的码不同,我没有windows电脑,测试起来有点儿麻烦。

@HusuSama
Copy link

也许可以加入配置来自定义键盘码?在有配置加入的情况下使用配置,没有则使用代码中指定的?这个实现应该很简单,但是不知道这个可不可以做到

@owenstake
Copy link

直接切换当前输入法的中英文模式可能是更合理的方式。在 Linux 或 macOS 下,有获取和切换当前输入法中英文模式的方法(具体,Linux:fcitx-remote,macOS:fcitx-remote for OS X)。而在 Windows 下,有接口 IMC_GETCONVERSIONMODE 用于获取中英文模式,IMC_SETCONVERSIONMODE 用于切换中英文模式。我用这两个接口实现了一个命令行工具 AIMSwitcher,可以切换自带的微软拼音输入法的中英文模式(所以应该可以满足 @Azureki 的需求),但目前的问题是这两个接口已经过时,对于搜狗等第三方输入法可能无效

第三方输入法(qq、sogou)的接口理解实现错误了,中英文切换 用了这两个接口 IMC_GETOPENSTATUS IMC_SETOPENSTATUS。这接口原生是用来 关闭输入法,即纯英文输入,对微软拼音有效。

@hadix-lin hadix-lin reopened this Jan 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants