问题标签 [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 投票
0 回答
217 浏览

winforms - 如何访问 WinForms TextBox 中的 IME 文本?

我需要在用户编辑它时获取 IME 文本,即在他们点击 [Enter] 并因此将文本的“最终”版本添加到 WinForms (.net 3.5) 文本框之前。

我该如何做到这一点?

一些类似于 Java 的InputMethodListener.inputMethodTextChanged的​​事件会很棒。

0 投票
1 回答
962 浏览

android - 我可以覆盖 Android 输入法处理自动完成和自动更正的方式吗?

我正在制作自己的文本编辑器,并且我希望段落之间总是有额外的空间,所以我覆盖了 EditText 的 OnKeyListener 以便在按下 Enter 时将两个换行符插入到文本中,并且当光标位于时按下 Backspace在段落的开头,两个字符被删除而不是一个。

看起来很简单,但我的问题是,如果输入法(即键盘)在按下 Enter 并按下 Backspace 时刚刚完成编辑一个单词,它将尝试通过用带下划线的自动替换该单词来处理 Backspace。自身的可纠正版本(用自身覆盖单词)。但是,由于额外的换行符,光标已经向前移动了两个字符,而输入法不知道这一点,所以当它覆盖时,它会关闭一个字符。

抱歉,如果这令人困惑;这是一个错误示例(垂直条标记光标所在的位置):

  1. 在空行上写一个字

    /li>
  2. 点击回车,出现一个新行

    /li>
  3. 按删除

    /li>

到目前为止我为修复该错误所做的尝试:

  1. 使用 OnKeyListener 正确处理退格。不幸的是,OnKeyListener 只在输入法完成它的事情后才获得关键事件。

  2. 使用 TextWatcher 撤消输入法所做的操作。不幸的是,TextWatcher 无法知道是否按下了 Backspace,或者它看到的文本是否是其他内容的结果。

  3. 放弃按 Enter 时自动添加额外换行符的整个想法。不幸的是,似乎没有任何其他方法可以在段落之后添加额外的空格。据我所知,TextView 的跨度只能为段落添加水平边距,但不能为垂直边距添加。

所以我认为我最好的选择是在输入法得到它之前抓住退格键(顺便说一下,OnKeyPreIme 也不起作用)。我宁愿不必完全编写自己的 IME,并且我想让用户选择使用他们喜欢的任何 IME 进行输入,但如果我必须将自定义 IME 与文本编辑器捆绑在一起,那就这样吧。即便如此,关于自动更正如何工作以及在何处实现的文档很少,我什至不知道从哪里开始。

任何帮助将非常感激; 提前致谢!

0 投票
0 回答
263 浏览

android - 平板电脑的自定义输入键盘

我正在构建平板电脑,我真的不想使用标准键盘输入。我总是处于横向模式,所以我认为我没有足够的空间来使用这个键盘的工作方式。有没有关于创建自己的自定义 IME 的好教程?调整大小是横向模式的选项吗?

0 投票
2 回答
653 浏览

c# - 韩语虚拟键盘在鼠标单击时禁用 WM_IME_ENDCOMPOSITION

我正在处理与This Question完全相同的情况。

没有答案,而且问题太老了,所以我不能留下任何评论,看看 OP 是否找到了解决方案。

我现在才学习 p/invoke 的基础知识,至少还很难理解。

我一直在做相当多的搜索。我发现这个问题将我与这个问题/答案联系起来,但我仍然无法理解我需要做什么。

我想我正在寻求一种操作 WM_IME 命令的方法,或者至少在鼠标单击时禁用 WM_IME_ENDCOMPOSITION。

先感谢您

0 投票
1 回答
307 浏览

.net - WinCE CF2.0 控制文本框输入法

我正在使用 .NET 2.0 CompactFramework 为 WinCE 编写智能设备应用程序。在完整的 2.0 框架中,我可以使用 this.ImeMode 控制 IME(输入法编辑器)。此属性在 CompactFramework 上不可用。有什么我可以做的,比如从 wince DLL 调用一些东西吗?

0 投票
1 回答
1265 浏览

android - Kindle Fire Keyboard Buttons

I have an EditText field in my app:

The problem is that on my Kindle Fire, the keyboard that appears when the user wants to edit the EditText has no Done button, just a button that hides the soft keyboard

enter image description here

That wouldn't be a problem if I could intercept the 'hide keyboard' button that I highlighted on the above screenshot. However, it doesn't seem to trigger the OnEditorActionListener I've attached to the EditText, so I'm a bit stuck what to do aside from having my own 'Done' button in my actual layout to take focus away from the EditText, hide the keyboard and make any changes that result from the number being changed

Is there a way to intercept the 'hide keyboard' button, or is there some alternative solution?

Incidentally, I have a regular EditText view elsewhere in my app that has no imeOptions nor specifies inputType and that does have a Return key

Here's the rest of the code for reference:

.

0 投票
0 回答
145 浏览

android - 是否可以包装 IME?

我正在充实一个程序想法,但遇到了一个我不确定的问题。我正在尝试为 Android 编写一个新的 InputMethodService,它将为其他服务添加功能。

我正在尝试做的一个例子是:我想编写一个 Speech-to-Text 服务,然后将文本输入另一个 3rd 方 IME。这将允许我使用该 IME 的功能。因此,例如,如果我说日语,我希望能够通过 3rd 方 IME 转换为中文字符。

我不确定它是否可行,因为 SDK 提到“一次只能激活一个 IME”。似乎一旦我调用 setInputMethod 并向其提供新的 IME,我的服务将失去检测焦点更改和调用 IME 的能力(以便知道它何时需要输入)。

我对文档的理解是否正确?或者是否有其他方法可以做到这一点?

0 投票
1 回答
2298 浏览

java - 在 java swing 应用程序中更改 IME 语言

我正在用Java(Swing)构建一个文本编辑器,它有一个EditorPane来输入文本和一个包含JRadioButtonMenuitems的菜单。像 Menu 是“Language”,“Language”下的 JRadiobuttonMenuitems 是“Spanish”、“Japanese”、“English”等,当用户单击并选择任何 JRadioButtonMenuItem 时,系统必须根据所选语言更改其 IME。就像用户单击并选择日语选项一样,编辑器必须将当前进程的 IME 更改为日语,并允许用户以各自的语言输入文本。

我已经安装了正确的 IME。手动我可以更改 IME 并能够在摆动组件中写入。但我的问题是如何以编程方式加载 IME。

目前我正在 windowsXP 上构建此应用程序,但希望此应用程序更改每个操作系统的 IME 语言。

我已经谷歌了它,但没有找到任何相关信息来更改 IME。

谢谢

0 投票
2 回答
4913 浏览

android - 增加键盘行键高度

我在 /res/xml 的 xml 文件中有一个键盘定义,如下所示:

我正在寻找一种使一排钥匙比其他钥匙高的方法,但我不知道怎么做。增加键盘标签上的 keyHeight 会使所有键都变大 - 有没有办法只针对一行?

0 投票
0 回答
299 浏览

ime - 为什么我的消息循环中有这么多 WM_INPUTLANGCHANGEREQUEST?

在sonme环境中,我的程序的消息循环已满,依次为 WM_INPUTLANGCHANGEREQUEST 、 WM_INPUTLANGCHANGE 和 WM_IME_NOTIFY 。

我真的不知道 WM_INPUTLANGCHANGEREQUEST 是从哪里发布的。它使 api PeekMessage(..., PM_REMOVE) 始终返回非零,因此我无法在空闲时间执行我的逻辑。

当它发生时,在一段时间后最大化和最小化窗口。消息循环变得清晰。一切顺利。或者仍然忙于处理 WM_INPUTLANGCHANGEREQUEST 、 WM_INPUTLANGCHANGE 和 WM_IME_NOTIFY 循环。

当程序启动开始时 ime 发生变化时,可能会发生这种情况。

求救!Orz~~~~~。对不起我可怜的英语。