问题标签 [ime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
349 浏览

c++ - 获取 ibus 设置的实际键码

我能够读取 ibus 键配置以了解触发引擎开/关的键(可通过属性“通用/热键”和“触发器”访问)。这一切都很好,但返回的字符串列表 (gchar*) 组合打开/关闭 IME(例如:[“SHIFT+CTRL+F9”、“SHIFT+UNDERSCORE”、...])。

如何获得这些字符串的相应键码?

0 投票
1 回答
4511 浏览

android - 如何获取手机上安装的所有输入法(及其名称)的列表?

我正在尝试显示当前安装在手机上的所有输入法的列表。我通过这样做得到一个 InputMethodInfo 对象的列表:

这可行,但 InputMethodInfo 对象在任何地方都没有友好的名称。例如,它会给我“com.swype.android.inputmethod.SwypeInputMethod”而不是“Swype”

这不是向用户显示列表的一种非常友好的方式,而且这些包名称不遵循严格的模式,因此我无法可靠地将键盘名称从类名中解析出来。

我什至试图变得非常花哨并获取 InputMethodInfo 的相应 ServiceInfo 对象,以便我可以解析它的 Label Resource 整数,但每次运行时我都会得到 NameNotFoundExceptions。

有谁知道如何做到这一点?我不在乎我该怎么做,我只需要能够生成一个输入法列表,因为它们出现在手机的语言和键盘菜单中,然后存储用户的选择。我想也许我可以使用 InputMethodManager 来启动标准输入法选择菜单,然后通过查看菜单关闭后当前选择的 IME 来查看用户选择了哪一个,但据我所知,没有办法看到当前在系统中选择了哪个 IME。

0 投票
0 回答
335 浏览

c# - 确定虚拟键的对应字符(使用亚洲 IME)。。网

如何在给定虚拟键或虚拟键组合(System.Windows.Input.Key 或System.Windows.Input.KeyGesture )的情况下获取字符(字符或字符串)?我正在使用亚洲输入法,我想确定如果用户按下键盘上的那个键,它将显示在文本框中的亚洲字符或部分字符。

我试过 P/Invoking ToUnicodeEx,但它似乎不适用于亚洲语言。我也尝试过使用 TextCompositionManager 模拟文本合成事件,但除非您已经知道要合成的文本,否则这似乎不起作用。

这个函数最终需要在 WPF 应用程序中使用。

0 投票
1 回答
301 浏览

android - 为什么我的 android 应用程序上的 IME 与它应该编辑的 EditText 解除关联?

我有一个正在编写的 Android 应用程序。它有一个 ListActivity ,它全部设置为使用此布局为每个项目加载我的数据。

我的数据适配器绑定没有问题,我已经设置它,以便从列表中选择一个项目时调用此方法。

这具有显示和 EditText 和一个 Button 的效果(在我的布局中为 hidden_​​box 和 hidden_​​box_submit)。这正是我想要的。

但是,当用户点击新可见的 EditText (hidden_​​box) 时会出现问题。IME 弹出并且 hidden_​​box 立即失去焦点。因此,在 IME 上键入的任何内容都不会出现在 EditText 中。相反,它正在做这种奇怪的事情,输入的任何内容都以灰色字母显示在键盘上方,并在 IME 关闭时保留在屏幕底部。这就像 IME 正在输入它自己的临时隐形框。

如果用户在 IME 已显示后点击 EditText,则应用程序将正常运行。在 IME 上键入的任何内容都会出现在 EditText 中,并在 IME 关闭时保留。

在我看来,当 IME 弹出时(当用户点击 EditText 时它会立即弹出,它应该立即执行)它与我的应用程序完全解除关联并在 IME la-la 土地上做它的事情,除非我将它指向通过在键入和关闭键盘之前点击 EditText 来编辑 EditText。如何使它正常运行,以便在弹出后立即直接输入 EditText?

0 投票
1 回答
987 浏览

android - 输入法中的光标移动和文本检索

我正在设计我的第一个 Android 输入法,有点不知所措。我的目标是与可访问性相关的,因此我想知道我是否正在尝试使用 IME 框架做一些不可能的事情。我采用了默认的软键盘示例,并让它与我的一些修改一起工作,所以我肯定至少理解了其中的一些,但是关于我正在尝试的一些事情并没有很多文档. 这就是我的意思:

目前,无法使用仅具有触摸屏键盘的 Android 手机。我目前有一个可访问的触摸屏键盘,使用的方法类似于 IOS/VoiceOver 中使用的方法,因此该项目的一部分已经完成并且在 IME 框架中完成相当简单。

目前,Android 的无障碍 API 不提供用于导航文本字段的无障碍反馈。也就是说,在加载了 Android 屏幕阅读器的情况下,如果您键入单词“this”,您会在键入时听到单个字符的朗读,但如果您随后尝试在“s”上用左箭头键,则不会朗读. 所以我想捕捉动作并为导航过去的元素提供语音反馈。这是我开始遇到问题的地方。

我目前有左右箭头的语音反馈,使用 getCurrentInputConnection.getTextBeforeCursor(1, 0) 进行左箭头,以及类似的右箭头调用。这样在处理完移动后就得到了当前光标下的字符,一切正常。

然而,我的挑战来自于在线条之间上下箭头时。理想情况下,我想抓住当前的文本行并说出来,但我看不到任何方法可以做到这一点。我唯一能想到的是 getTextBefore/AfterCursor(Integer.MAX_VALUE, 0) 的某种组合并结合这些值,通过过滤前一个和下一个 \n 来确定当前行。还有另一种方法——将字段的整个文本内容作为单个文本块获取,并使用光标位置来确定该文本的哪一段代表当前行?我在各种输入法类中看到了一些关于提取文本的内容,似乎有一种方法可以监控它,但我不知道这对我是否有用(即返回整个字段内容?)

我的下一个目标是提供标准的文本导航功能。Android 可访问性目前不包括触摸屏探索,因此无法滚动一大块文本。我不一定希望人们在手机上写小说,但我想提供快速手势或命令来向上/向下移动段落,以及更长字段的顶部/底部。IMF 是否提供了光标移动的方法,还是超出了它的权限?

0 投票
3 回答
3256 浏览

android - 在表格布局中使用 android:imeOptions="actionNext" 时出现问题

我有这个表格布局,其中包含 3 个 EditText 字段和一个执行计算的按钮。

活动开始时,表格布局顶行中的左侧 EditText 具有焦点。但是,当我在软键盘上单击下一步时,光标会移动到底行左侧的 EditText,而不是右侧(顶行)的 EditText。我已经测试了顶行中的右侧 EditText,它按照我的意愿将光标发送到底行的左侧 EditText。

有没有办法让光标首先从顶行的左侧 EditText 向右移动,然后从那里移动到底行的左侧 EditText?

如果可能的话,我还可以安排它然后将焦点移到底行右侧的按钮上吗?

谢谢

0 投票
2 回答
1996 浏览

android - Android: ListView with EditTexts messes up focus and IME

I have ListActivity with custom items, where every item has it's own TextEdit. Taping on any of them brings IME keyboard up and it causes ListView to be resized. So EditText, which recently received focus by tap looses it. Second tap is required to put it focused or sure. It happens only when I have move than 1 items in the list.

Is there any way to open IME and keep focus on EditText by only one tap?

0 投票
1 回答
1742 浏览

android - 如何在 Windows 中使用 git bash 克隆 Android 项目

我想用阿拉伯语为 android 创建一个 IME。
我需要一些参考并找到了这个: https ://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/java/res

现在我想将其中一个目录树克隆到我的系统上,就像那里所说的那样。

我在 Windows 上安装了 git,我得到了一个“git bash”图标。我打开它,它问了什么并得到了这个错误:

致命:远端意外挂断

现在我一无所知。
我应该如何下载该源?

0 投票
1 回答
305 浏览

c++ - 无法在我的 XP Professional 系统上获取 ITfThreadMgrEx

在使用文本服务框架时,我遇到了 XP Professional 系统的问题。我想从 ITfThreadMgr 获取 ITfThreadMgrEx 接口。根据微软的说法,ITfThreadMgr.QueryInterface() 用于获取 ITfThreadMgrEx。当我在 C++ 中尝试这个时,我得到了 E_NOINTERFACE。据微软称,ITfThreadMgrEx 在 Windows 2000 TSF 1.0 上可用。所以我很自然地认为它会在 XP Professional 上可用。

另外,我在 Windows 7 上试过这个程序,没问题。然而,在安装了国际语言远东语言支持的两个不同的 Windows XP Professional SP3 上,两个系统上都存在同样的问题。

是否有足够熟悉 TSF 的人知道为什么我无法根据 Microsoft 的文档获取界面?关于我可以尝试什么的任何想法?

更新:安装远东语言并将中文(PRC)添加到语言栏(控制面板中的区域和语言)后,我可以获得 ITfThreadMgr 界面。我可以使用 CoCreateInstance() 和 TF_CreateThreadMgr() 来获得这个接口。

但由于某些原因,从 ITfThreadMgr 获得的与自定义 TIP 的 UI 组件直接相关的接口不可用。我可以从 ITfThreadMgr.QueryInterface 获取其他接口,例如 ITfClientId 和 ITfMessagePump,但我无法获取 ITfUIElementMgr 和 ITfThreadMgrEx。

就像自定义绘制 TIP UI 的功能一样,根本没有安装或启用。但我不确定这是否是正确的方向。

0 投票
1 回答
3215 浏览

winapi - 如何在 Windows 中确定文本光标位置

确定当前活动文本输入光标的屏幕坐标的最佳方法是什么?

我需要这个用于在线音译程序,以便在输入文本时向用户显示一些建议选项。