我正在尝试向 McCLIM 添加输入法支持,以便它可以使用 fcitx 等输入法客户端在 McCLIM 中输入 CJK。
为了更好地绘制 fcitx,我想获取文本编辑区域更改时的光标位置。
我发现了一个叫做 的东西cursor-position/stream-cursor-position
,但我不知道如何获得cursor/stream
当前的关注。我试过*standard-output*
了,但是失败了。
我怎么能这样做?
我正在尝试向 McCLIM 添加输入法支持,以便它可以使用 fcitx 等输入法客户端在 McCLIM 中输入 CJK。
为了更好地绘制 fcitx,我想获取文本编辑区域更改时的光标位置。
我发现了一个叫做 的东西cursor-position/stream-cursor-position
,但我不知道如何获得cursor/stream
当前的关注。我试过*standard-output*
了,但是失败了。
我怎么能这样做?
我知道您没有使用 libx11,但我只想向您展示 libX11 是如何做到这一点的。
基本上这是由协议中的 XIM_SET_IC_VALUES 完成的。预编辑属性的嵌套值中的点位置值。
该点只是一个 X 点 (x, y)。尽管如此,该点是焦点窗口的相对坐标。焦点窗口也是 ic vlaues 的一部分,属性名为 XNFocusWindow。
如果不设置焦点窗口,通过 XCreateIC 的客户端窗口将作为焦点窗口。
XVaNestedList preedit_attr;
preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &nspot, NULL);
XSetICValues(ic, XNPreeditAttributes, preedit_attr, NULL);
XFree(preedit_attr);