fcitx / libime

43 stars 21 forks source link

关闭自动选择候选词后不能连续输入 #10

Closed yueduz closed 4 years ago

yueduz commented 4 years ago

fcitx5 里的码表输入法有如下选项

2020-08-31 10-04-16 的屏幕截图

打开自动选择候选词时的行为

-情况1:输入全码后有重码时等待下一个输入顶第一码上屏 -情况2:输入全码后无重码自动上屏。

两种情况行为不统一。 Peek 2020-08-31 09-57

关闭自动选择候选词时的行为

-情况1:输入全码后继续输入法无法匹配任何词组 Peek 2020-08-31 09-58

关闭自动选择候选词时推荐的行为

这种行为可以说和拼音一样,可以连续输入但是不自动提交。全码后继续输入时查找下一个词,之前找到的词停留到预编辑区,此时空格上全部中文,回车上全部编码。这样夹杂输入法长串英文时很方便。当所有字的是全码时可以一直输入下去,遇到非全码字则必需空格上屏。

任何时候都需要空格或标点上屏,行为统一。也为选项中使用上下文相关排序提供方便。 Peek 2020-08-31 10-03

yueduz commented 4 years ago

就是和拼音输入法一样,拼音输入法根据音节表自动分词。码表输入法根据满全码分词。

wengxt commented 4 years ago

你说的行为只需要把自动选择候选词长度设置一个较大的数字即可做到。(大于码表码长即可)

其实我本来预期设置成 0 就应该是这个行为的,但测试一下似乎不行(-1 表示为最大码长)

wengxt commented 4 years ago

那个 check box 控制了所有和自动选择相关的行为,这个是预期中的行为。

yueduz commented 4 years ago

你说的行为只需要把自动选择候选词长度设置一个较大的数字即可做到。(大于码表码长即可)

其实我本来预期设置成 0 就应该是这个行为的,但测试一下似乎不行(-1 表示为最大码长)

0和-1还有9我都试过,都没有我说的这种效果 。提交无效分段选中也没有这种效果。

wengxt commented 4 years ago

你描述那种具体是要这样设置吧:

  1. Commit after select candidates 勾掉
  2. 没有新匹配时自动选择最后的候选词改成 1 (当前长度大于等于这个数字时触发)
  3. 自动选择候选词长度改成较大的数字 (文字描述不太准确,效果是控制如果候选词唯一时进行自动选择)

这样的话 shift + enter 是按英文提交整个串,enter 是确认当前串, 输入其他字符例如标点或者空格就是继续输入

yueduz commented 4 years ago

你描述那种具体是要这样设置吧:

  1. Commit after select candidates 勾掉
  2. 没有新匹配时自动选择最后的候选词改成 1 (当前长度大于等于这个数字时触发)
  3. 自动选择候选词长度改成较大的数字 (文字描述不太准确,效果是控制如果候选词唯一时进行自动选择)

这样的话 shift + enter 是按英文提交整个串,enter 是确认当前串, 输入其他字符例如标点或者空格就是继续输入

差不多是这个样子,但是不能一次空格就上屏 ,要么两次空格要么回车才能上屏。且空格上屏会多加一个空格。

我重新描述一下,就是全码时顶到预编辑区不顶上屏,等到有空格时一并上屏。 如果我打了两个全码字,但是不要上屏,等到我按空格才上屏 。 如果我打了一个全码一个三码,但是不要上屏,等到我按空格才上屏 。 如果我一直打全码字,不按空格,就一直不上屏,都顶到预编辑区。

wengxt commented 4 years ago

你再试试最新的提交

wengxt commented 4 years ago

指 fcitx5-chinese-addons,fcitx5 和 libime 都要更新

配置上有些用词也改了(虽然配置项目一样),要勾掉的是 commit after auto select,然后把 length limit of selecting the only candidate 设置成 0。

yueduz commented 4 years ago

2020-09-01 10-09-33 的屏幕截图 从aur安装时遇到错误 。

wengxt commented 4 years ago

先更新fcitx5

yueduz commented 4 years ago

就是这个效果

yueduz commented 4 years ago

就是候选条跑来跑去的,拼音不提交前候选条是不移动的,码表在输入过程中候选条跑来跑去的。

yueduz commented 4 years ago

我认为最好的实现方法是在码表文件中加一个正则,用来匹配合法的编码。然还在查表时遇到不合法的编码就分到下词。这样可以兼容各种输入法。也实现了和拼音“类似”的整句输入效果。

二笔有"U","V"开头的编码只有两码,在官方输入法中uv开头的编码输完第二码自动提交不用空格。如果用正则匹配就可以兼容这一问题。

对于超强音形输入法,是一种二笔的改版,最长码有五码,但是第五码是 "a,e,u,i,v" 其中的一个,变相的的提供了选重按键。也可以正则匹配来实现。

各类顶功输入法也可用正则匹配来支持。

yueduz commented 4 years ago

使用正则后,这些设置项都可以不要:

键码=abcdefghijklmnopqrstuvwxyz;',./
码长=4
规避字符=;iuv
wengxt commented 4 years ago

这些都是和这个issue不相关的问题。请不要 reopen 整体回答一下,使用正则与否并没有解决新的问题,甚至正则能力在实践中是没有意义的。 对于可以自动组词的码表来说,正则显然不能覆盖那些可以被生成但是码中没有的码。反正都需要查表,何必多此一举弄个正则? 至于说uv开头的两码自动提交,这个和正则不正则也没什么关系,你定义的本质是一个特殊的自动上屏行为,而这个才是目前不能支持的。例如虽然你可以把 length limit of select only candidate 设置成 2 ,但是对于非 uv 的可能又不想这么输入,目前没有区分这两种的办法,这个才是关键的问题。至于使用正则又或者使用别的什么进行判断,都无所谓。

另外这个项目也不是为了实现像 rime 那种可以随意自定义的引擎 如果有非常高度自定义的需求,建议使用 rime