哪些输入法类似谷歌拼音,文字直接上屏?

谢谢!但是看来我完成不了。卡在第一步,Window Spy 无法获得搜狗拼音候选词窗口的信息,识别不了这个窗口:sweat:

应该是 SoPY_Comp 吧
我没下载搜狗输入法,这是以前代码片段里的,不知道现在还对不对

rime 的八股文整句引擎…显示编码的地方改成侯选字,然后把候选栏关闭…

可以找找有没有别人做好的

问个场景
输入英文单词,输入到一半的时候发现忘记切换输入法了,你咋办?
比如想输入safari,打到saf/safa发现是中文

@dog SoPy_Comp 也不对,我放弃了

@kimitrois 暂时不想折腾 Rime

@tianqiao 找了一下,没找到

@zzl221000 按回车、Shift 都可以让刚输入的英文字母上屏

小小輸入法有這個功能,幾年前就試過了。

我的話,如果在電腦上,就按enter。如果是手機,就選1。

就是SoPy_Comp,开启
image
是SoPy_Comp2 和 SoPy_Cand,我下载搜狗输入法试了一下。

效果如下:
使用前。

使用并进行一定调整后:
image

实测用winmove不行,因为每按一个按键,候选栏都会重新跟随光标,那样就得每个按键进行一次winmove了,会一闪一闪的。

需要关闭光标跟随,然后自己给它加带偏移量的光标跟随。

实测不那么好用,一闪一闪的,而且只适用于系统记事本等标准软件(autohotkey可以直接读取到光标位置的),其他程序需要加代码读到光标位置来适配。

01


代码,以及设置:

#Persistent
#SingleInstance Force
CoordMode, Caret , Screen

~a::
~b::
~c::
~d::
~e::
~f::
~g::
~h::
~i::
~j::
~k::
~l::
~m::
~n::
~o::
~p::
~q::
~r::
~s::
~t::
~u::
~v::
~w::
~x::
~y::
~z::
{
XX:=A_CaretX-25
YY:=A_CaretY
XX2:=XX+40
YY2:=YY-20
sleep,50
WinMove, ahk_class SoPY_Cand, , XX, YY
WinMove, ahk_class SoPY_Comp2, , XX2, YY2
sleep,50
WinMove, ahk_class SoPY_Cand, , XX, YY
WinMove, ahk_class SoPY_Comp2, , XX2, YY2
sleep,50
WinMove, ahk_class SoPY_Cand, , XX, YY
WinMove, ahk_class SoPY_Comp2, , XX2, YY2
return
}

image

实验完毕,abandon

感谢大佬帮我尝试:pray:,顺便学一下代码的写法:smiley:

又改了一下,现在舒服多了,不闪了。
不过还是只适用于记事本等标准组件,其他软件的适配改天研究,我觉得还不错,眼睛不用挪来挪去确实舒服很多诶。

最后研究好了再发出来。

效果:
01

不出意外,以后我就用这套方案了

2 个赞

我和你最好:smiley::person_gesturing_ok:

完工了,效果不错,支持大部分软件和浏览器了。

效果:
浏览器内效果:
01

文本编辑器内效果:
02

PPT/word/excel实测也没有问题

需要设定这几处:
image

如需最大限度避免闪烁,需要把表情功能关闭,以免偶然跳出的gif表情造成闪烁。
image

代码:
(搭配不同的皮肤,需要更改XX和YY的计算式)

#Persistent
#SingleInstance Force
CoordMode, Caret , Screen

~a::
~b::
~c::
~d::
~e::
~f::
~g::
~h::
~i::
~j::
~k::
~l::
~m::
~n::
~o::
~p::
~q::
~r::
~s::
~t::
~u::
~v::
~w::
~x::
~y::
~z::
~backspace::
{
   if !GetCaretPos(x, y)
      ;MsgBox, 无法识别光标位置
      1=1
   else {
      CoordMode, Mouse
;搭配不同皮肤,需要改动这个地方的算式。
XX:=x-30
YY:=y
WinMove, ahk_class SoPY_Cand, , XX, YY
WinGetPos , xnow, ynow,,, ahk_class SoPY_Cand
if ! (xx=xnow)
{
sleep,20
WinMove, ahk_class SoPY_Cand, , XX, YY
WinGetPos , xnow, ynow,,, ahk_class SoPY_Cand
}
if ! (xx=xnow)
{
sleep,20
WinMove, ahk_class SoPY_Cand, , XX, YY
WinGetPos , xnow, ynow,,, ahk_class SoPY_Cand
}
if ! (xx=xnow)
{
sleep,20
WinMove, ahk_class SoPY_Cand, , XX, YY
WinGetPos , xnow, ynow,,, ahk_class SoPY_Cand
}
if ! (xx=xnow)
{
sleep,20
WinMove, ahk_class SoPY_Cand, , XX, YY
}
return
         }
}


GetCaretPos(ByRef x, ByRef y) {
   static OBJID_CARET := 0xFFFFFFF8
   CoordMode, Caret
   if (A_CaretX != "" && A_CaretY != "")
      x := A_CaretX, y := A_CaretY
   else {
      AccObject := AccObjectFromWindow(WinExist("A"), OBJID_CARET)
      Pos := AccLocation(AccObject)
      x := Pos.x, y := Pos.y
   }
   Return x && y
}

AccObjectFromWindow(hWnd, idObject = 0) {
   static IID_IDispatch   := "{00020400-0000-0000-C000-000000000046}"
        , IID_IAccessible := "{618736E0-3C3D-11CF-810C-00AA00389B71}"
        , OBJID_NATIVEOM  := 0xFFFFFFF0, VT_DISPATCH := 9, F_OWNVALUE := 1
        , h := DllCall("LoadLibrary", "Str", "oleacc", "Ptr")
        
   VarSetCapacity(IID, 16), idObject &= 0xFFFFFFFF, AccObject := 0
   DllCall("ole32\CLSIDFromString", "Str", idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, "Ptr", &IID)
   if DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject, "Ptr", &IID, "PtrP", pAcc) = 0
      AccObject := ComObject(VT_DISPATCH, pAcc, F_OWNVALUE)
   Return AccObject
}

AccLocation(Acc, ChildId := 0, ByRef Position := "") {
   static type := (VT_BYREF := 0x4000) | (VT_I4 := 3)
   try Acc.accLocation( ComObject(type, &x := 0), ComObject(type, &y := 0)
                      , ComObject(type, &w := 0), ComObject(type, &h := 0), ChildId )
   catch
      Return
   _x := NumGet(x, "int"), _y := NumGet(y, "int"), _w = NumGet(w, "int"), _h := NumGet(h, "int")
   Position := "x" . _x . " y" . _y . " w" . _w . " h" . _h
   Return {x: _x, y: _y, w: _w, h: _h}
}

看到立马第一时间使用,可是我这里有明显的闪烁,但是从你的录屏上看完全没有闪烁啊!

操作系统 Win10,搜狗拼音已经按照你说的设置,图片表情也已关闭。

请看录屏

拼音辅助的闪烁

image
示例(请右键新标签看大图):

03

我是直接移动到副屏角落去的

拼音辅助的闪烁2

把窗口移到了右下角,还是明显的闪烁,是否和AutoHotkey的版本有关?
看了一下,版本是AutoHotkey v1.1.25.02

应该和版本没关系,我也不知道为什么,我这边确实没你录屏里闪的那么厉害,我现在已经用的无感了。

对了,我用的是win11,没用win10测试,还有我的屏幕刷新率是75HZ,大概也有关系???

你给代码里添加一句 SetWinDelay, -1 试试
image

image
云计算候选也会导致偶然的闪,因为云候选加载时候会有个云朵动画效果,造成干扰。(不过我没关)

刷新率是120hz的,尝试把刷新率改到60hz,好了一丢丢,还是能看到每次按键都会闪一下,你的录屏上是完全看不出闪啊

郁闷了:dizzy_face:

如果设置SetWinDelay, -1,候选框就不会跟随光标,停在右下角