同时接两个键盘,一个键盘是英文输入法,一个键盘是中文输入法,可以吗?

你就把我上面代码里两个send,#{space}
换成你的ctrl1以及ctrl alt 2
就完事

对哦,没有考虑延迟,因为那个软件下载不下来,还没有实践…
哎,有些网址打不开
我在找镜像…看其他地方有没有下载

这点真是无比讨厌

删掉英文,只保留一个中文输入法,然后中文输入法开启默认英文模式。

已经试验成功啦!谢谢!

中文输入法的英文模式,在输入特殊字符的时候不知道为什么,有时候会乱掉,常常导致密码不能正常输入(keepass)并且将密码显示在中文输入法的提示框中,所以通常切换到“纯”英文输入法来提高成功率。

我有一個解決方案,目前我手機上已經實現了。那就是中英文混輸。現在我用lime輸入法,無論打中英文,基本都不需要切換。如果要上屏中文,就打對編碼,按空白鍵。如果要打英文,打完了選1(中文排在第二)。

我的電腦由於用的是gcin輸入法,它不能中英混輸,不過我可以通過移動眼球看右上角知道當前輸入法狀態,因此就不需要混輸了。

我觉得这个是输入法的兼容性和智能程度问题吧。

1 个赞

在默认输入法添加英文键盘,可以通过win+空格切换输入法

看一下效果吧:

延伸的问题,这样两个键盘使用起来,稍有不便,如果能在键盘上再插入三行按钮就好啦。

雷蛇的键盘,有的比较牛逼的,可以根据按键的释放深度不同,设置不同的功能。

经过一定的设置,可以实现轻按输入英文,日常使用输入中文。这样就不用第二个键盘了

搜索关键词 两段式触发键盘

1 个赞

还有一种强磁吸单键完全可以重排列的键盘,可以自己随便增加和排布按键阵列。

当然这两种都需要钞能力 :laughing:

1 个赞

哈哈哈,需要考虑一下 :) 谢谢

你用的是什么输入法,什么操作系统?

所以每次输入框获取焦点的时候,都要按一次或者两次shift来得到想要的输入状态了

换了rime输入法,上面切换的代码失效了。想试一试键盘a 按下->切换到英文->输出字符->切换回中文 的思路:
设置了完全监听一个其中键盘,按下按钮,获得了 code是一个数字,怎样把这个数字输出为字符?这个数字,似乎不是 ASCII 码

#SingleInstance force
#Persistent
#include Lib\AutoHotInterception.ahk

AHI := new AutoHotInterception()
keyboardId := AHI.GetKeyboardId(0x0C45, 0x8071)
AHI.SubscribeKeyboard(keyboardId, true, Func("KeyEven"))

return

KeyEven(code, state){

    ToolTip % "Keyboard Key - Code: " code ", State: " state

    If (state==1)

    {

        st =%code%   ;这个code按钮不同数字不同

        tmpstr = Chr(%st%)

        SendInput,  %tmpstr%    ;想输出 code 对应的 按钮啊,这样不行。

    }

}

我今天也装上了RIME 输入法啦,切换中英文提示真好多了!

这个乱掉的情况是这样,win11,搜狗输入法,用 keepass 输入密码,只留一个搜狗,默认中文。设置的规则首先按shift 切换到搜狗的英文模式,在输入用户名和密码,密码比较复杂,有些特殊符号,就发现有时候这些特殊符号没有顺利的输入,似乎触发了搜狗的某些快捷键?还是什么其他原因? 没有研究了。
然后就添加了 纯英文输入法,每次切换到纯英文输入法下去输入密码。

改成这样就可以了

#SingleInstance force
#Persistent
#include Lib\AutoHotInterception.ahk

AHI := new AutoHotInterception()
keyboardId := AHI.GetKeyboardId(0x0C45, 0x8071)
AHI.SubscribeKeyboard(keyboardId, true, Func("KeyEven"))

return

KeyEven(code, state){
    If (state==1)
    {
	st =%code%
	st := Format("{:03X}", st)
	SendInput,  {SC%st%} 
    }

}

谢谢! 哈哈哈,搞定了:

#SingleInstance force
#Persistent
#include Lib\AutoHotInterception.ahk

AHI := new AutoHotInterception()

keyboardId := AHI.GetKeyboardId(0x0C45, 0x8071)
AHI.SubscribeKeyboard(keyboardId, true, Func("KeyEven"))

;mouseId := AHI.GetMouseId(0x046D, 0xC00C)
;AHI.SubscribeMouseButtons(mouseId, true, Func("MouseButtonEvent"))
return

KeyEven(code, state){
	;ToolTip % "Keyboard Key - Code: " code ", State: " state
	If (state==1){
		send,^+1
		sleep,100
		 st =%code% 
		 st := Format("{:03X}", st) 
		 SendInput, {SC%st%}
		 send,^+2 
		 }

}

MouseButtonEvent(code, state){
	ToolTip % "Mouse Button - Code: " code ", State: " state	
}

^Esc::
	ExitApp

不过,英文的这个键盘,没有组合键的功能啊,就是 ctrl + v ,ctrl+c 这样的功能。现在键盘左右放置…还行吧,前后放太容易误碰了。