librime icon indicating copy to clipboard operation
librime copied to clipboard

网址记忆 和 小键盘不参与选字

Open chainofhonor opened this issue 7 years ago • 37 comments

你好,我最近在学习配置小狼毫输入法 大部分都学会了 我自己配置了一个纯简体中文的输入法,词典也是纯简体中文的

然后现在这个输入法就还有2个小功能没有解决

1.网址记忆 (这个功能也是非常常用的功能) 比如第一次输入了www.baidu.com 然后按了空格上屏 然后下一次再输入www.b的时候 候选就有www.baidu.com 下次输入了www.badu.com以后 再输入www.b的时候就会有2个候选了

2.小键盘不参与选字 (这个功能其他输入法都有) 比如输入www.hao123.com 数字直接用小键盘输入就不参与选词

我看了一些资料,好像说rime输入法为了各种平台通用,小键盘也是识别为大键盘的数字的

但是我设置speller/alphabet: zyxwvutsrqponmlkjihgfedcba9876543210 这个时候大键盘的数字是不参与选词的这个时候就可以直接用大键盘输入www.hao123.com 用小键盘选词 但是这样的话就本末倒置了,小键盘太远了,选词操作的频率又远远大于输入数字的次数

请问这2个功能能实现吗?

chainofhonor avatar Sep 07 '18 05:09 chainofhonor

目前不能。

nameoverflow avatar Sep 07 '18 05:09 nameoverflow

请问这2个功能大概多长时间会更新?

chainofhonor avatar Sep 08 '18 11:09 chainofhonor

没有计划。 而且输入网址为什么不切换到英文呢

nameoverflow avatar Sep 08 '18 11:09 nameoverflow

额 而且网址记忆能少敲很多次键盘 人都是比较懒的

那个小键盘为什么不支持 是不是为了跨平台 造成无法正确识别小键盘的按键?

chainofhonor avatar Sep 08 '18 11:09 chainofhonor

  1. 浏览器的网址自动补全已经很智能了,让输入法做是多此一举。
  2. 小键盘的用途,有必要征求一下 @lotem 的意见。

Prcuvu avatar Sep 10 '18 10:09 Prcuvu

数字键盘可能不支持的。我没有/不用。所以一直没做。 默认行为是绕过输入法,直接输入数字。因为按键码与主键盘区的数字键不同,输入法没有做处理。

lotem avatar Sep 10 '18 10:09 lotem

并不是只有在浏览器才输入网址 有时候其他地方也有输入网址的

小键盘的数字其实真心建议改为不参与选词 不然功能上就和大键盘的数字键重复了
比如输入www.abc123.com类似这样的网址或者输入"我有1个苹果"这样的带数字的句子,小键盘直接输入方便很多

我按照下面的设置 speller/alphabet: zyxwvutsrqponmlkjihgfedcba9876543210 这个时候大键盘的数字就是不参与选词的 说明应该是可以实现的,只需要把上面0-9的按键设置为小键盘的按键应该就可以了

chainofhonor avatar Sep 11 '18 09:09 chainofhonor

另外还有一个bug 在玩魔兽争霸的时候 输入法候选框的位置异常 WIN10自带的拼音输入法的位置也是异常的 不知道是什么原因 但是我以前用搜狗输入法的时候是正常的 希望能修复 应该不止这一个程序位置异常

chainofhonor avatar Sep 11 '18 10:09 chainofhonor

@lotem 在目前的方案中,小键盘的数字貌似和主键盘区的数字一样起到选字的作用。我看看能不能通过方案的设置改成直接输入数字。

@chainofhonor 小狼毫在 Direct3D 全屏游戏中无法正常工作。这个问题的解决不但要看输入法,也要看游戏的实现。目前我们选择不在这个问题上投入精力。

Prcuvu avatar Sep 12 '18 01:09 Prcuvu

这个功能可以实现了吗?

hunya2017 avatar Sep 28 '20 10:09 hunya2017

附议小键盘支持。

DictXiong avatar Aug 17 '22 13:08 DictXiong

附议

mina998 avatar Sep 30 '22 17:09 mina998

我也觉得数字小键盘不应该参与选字,一方面大键盘上方的数字键完全可以选字,另一方面数字小键盘在不切换输入法的情况下输入数字。我看了很多其它输入法都是这么处理的。

daszgd avatar Jan 08 '24 10:01 daszgd

附议,小键盘不选字希望有,方便打字母+数字的词组

TianLi-520 avatar Jul 15 '24 03:07 TianLi-520

附议,确实有点不太方便

luguoyixiazi avatar Nov 15 '24 05:11 luguoyixiazi

一个很常见的case是,输入一些英文+数字的组合(例如t5xxl)时,常见输入法都可以不切换为英文,直接输入英文+小键盘数字,最后按小键盘Enter直接上屏

现在只能先按shift,输入完再多按一次shift切回中文。

除了事后还要多按一次shift切回来之外,【事先有意识地进行一次切换】对于已经习惯了不切直接输入的人来说是很容易遗漏的,而不切换直接输入t5会得到“天”,还要浪费时间去删除,这是最难受的

@fxliang @lotem 不知道是否可以重新打开这个issue?

Reekin avatar Nov 16 '24 08:11 Reekin

如果要打开就transfer到librime下研究吧?这个似乎不是前端的问题。

fxliang avatar Nov 17 '24 11:11 fxliang

附议,小键盘不选字

dyfllll avatar Nov 28 '24 13:11 dyfllll

附议,小键盘不选字,真的强烈需求这个功能,因为平常经常有验证码等等的场景,来回切换中英文还是有点麻烦

ChinaRailway avatar Dec 07 '24 18:12 ChinaRailway

附议

wx6969 avatar Feb 28 '25 08:02 wx6969

附的具体是什么议?有没有人详细定义定义,小键盘的数字键不选字,那要做什么?

如果要输入网址,从 www. 之后就识别到网址了,不会有候选字,这时候按数字键就会追加到网址。

如果要数字键直出数字,那么没有输入字母的时候,数字原本就是直接上屏的; 如果前面有字母,数字前面的字母不是也会转换成中文吗,仍然需要切换。

lotem avatar Feb 28 '25 08:02 lotem

附的具体是什么议?有没有人详细定义定义,小键盘的数字键不选字,那要做什么?

@lotem 我已经给出了例子,像 t5xxl 这样的模型名称,搜狗等主流输入法是可以做到直接字母数字混合最后回车一下完成上屏的,用rime就是需要多几步额外的输入

Reekin avatar Mar 02 '25 12:03 Reekin

我最后用Lua实现,和搜狗之类的不一样,按下小键盘相当于回车+输入相对应的字符,算是间接解决需要切换问题吧 https://github.com/dyfllll/rime-ice/blob/main/lua/kp_input.lua 把这个文件加入的配置里面就行了 配置可以参考这个 https://github.com/dyfllll/rime-ice/blob/main/rime_ice.custom.yaml

dyfllll avatar Mar 02 '25 13:03 dyfllll

对于熟悉小键盘的用家,一个例子足够说明问题。 笔者从未用过数字小键盘, 仅凭他人的模糊描述去编程,肯定难以周全。 这事还得等一个程序员来完成。

lotem avatar Mar 03 '25 03:03 lotem

附的具体是什么议?有没有人详细定义定义,小键盘的数字键不选字,那要做什么?

如果要输入网址,从 www. 之后就识别到网址了,不会有候选字,这时候按数字键就会追加到网址。

如果要数字键直出数字,那么没有输入字母的时候,数字原本就是直接上屏的; 如果前面有字母,数字前面的字母不是也会转换成中文吗,仍然需要切换。

附议 +1. 以搜狗拼音输入法为例: a) 如果开头输入的是字母, 但后面紧跟小键盘输入的数字或符号, 则前面的字母 (含用于分词的单引号) 不但不会被转换为汉字, 候选字词还会因此暂时消失. 此时按回车; 空格或 Shift 键即按原样直接上屏, 最终达成在避免反复切换输入法或中英文输入状态的前提下完成中英数字混合输入的目的. b) 按退格键删除所有由小键盘输入的数字或符号, 只留下字母 (含用于分词的单引号), 候选字词将重新出现且剩余的字母照常转换为汉字. c) 对于 www. 开头的网址, 搜狗拼音输入法有专门的应对方式. 如果后面紧跟数字 (或 . 和数字之间存在几个字母), 也分 2 种情况:

  • 如果未上屏的部分匹配词库中的条目, 则存在候选供用户选择 (由于数字此刻仍被用于输入网址的一部分, 与平时输入汉字后用数字键选字词的行为冲突. 此时只能用鼠标点击或方向键选择, 空格键上屏选择的候选条目. 按回车则只上屏用户输入的部分); Image Image
  • 如果未上屏的部分在词库中没有任何匹配, 则同规则 a. Image

YamatoRyou avatar Mar 05 '25 19:03 YamatoRyou

a) 如果开头输入的是字母, 但后面紧跟小键盘输入的数字或符号, 则前面的字母 (含用于分词的单引号) 不但不会被转换为汉字, 候选字词还会因此暂时消失. 此时按回车; 空格或 Shift 键即按原样直接上屏, 最终达成在避免反复切换输入法或中英文输入状态的前提下完成中英数字混合输入的目的. b) 按退格键删除所有由小键盘输入的数字或符号, 只留下字母 (含用于分词的单引号), 候选字词将重新出现且剩余的字母照常转换为汉字. c) 对于 www. 开头的网址, 搜狗拼音输入法有专门的应对方式. 如果后面紧跟数字 (或 . 和数字之间存在几个字母), 也分 2 种情况:

  • 如果未上屏的部分匹配词库中的条目, 则存在候选供用户选择 (由于数字此刻仍被用于输入网址的一部分, 与平时输入汉字后用数字键选字词的行为冲突. 此时只能用鼠标点击或方向键选择, 空格键上屏选择的候选条目. 按回车则只上屏用户输入的部分);
  • 如果未上屏的部分在词库中没有任何匹配, 则同规则 a.

總結得很好,詳細定義了每一步產生什麼結果,做起來就容易了。

a. 類似於 Rime 裏的輸入碼模式匹配,但目前不好實現,因爲小鍵盤按鍵沒有對應的字符,無法跟數字行的數字有效區分,所以無法精準匹配。

如果 a. 能實現 b. 自然就實現了。

c. Rime 的預設輸入方案裏配置了網址模式,敲數字沒問題(數字行是可以的,小鍵盤不知道支不支持),只是沒有翻譯器提供候選。

歸根結底還是因爲 librime 最初設計時沒考慮要支持數字小鍵盤。 我會在 R²ime 裏試做。

lotem avatar Mar 06 '25 03:03 lotem

我最后用Lua实现,和搜狗之类的不一样,按下小键盘相当于回车+输入相对应的字符,算是间接解决需要切换问题吧 https://github.com/dyfllll/rime-ice/blob/main/lua/kp_input.lua 把这个文件加入的配置里面就行了 配置可以参考这个 https://github.com/dyfllll/rime-ice/blob/main/rime_ice.custom.yaml

请问可以详细说说这个方法吗?我把kp_input.lua放在了lua文件夹,但后面不知道怎么设置才行。

thezwa avatar Jun 21 '25 06:06 thezwa

我最后用Lua实现,和搜狗之类的不一样,按下小键盘相当于回车+输入相对应的字符,算是间接解决需要切换问题吧 https://github.com/dyfllll/rime-ice/blob/main/lua/kp_input.lua 把这个文件加入的配置里面就行了 配置可以参考这个 https://github.com/dyfllll/rime-ice/blob/main/rime_ice.custom.yaml

请问可以详细说说这个方法吗?我把kp_input.lua放在了lua文件夹,但后面不知道怎么设置才行。

还需要配置一下,比如你用的是rime_ice,就新建一个rime_ice.custom.yaml在里面加入

patch:
  engine/processors/@before 0: lua_processor@*kp_input

就行了,也可以在原配置rime_ice.schema.yaml里面找到engine:processors,把lua_processor@*kp_input加到里面 如果用的是其他输入方案比如double_pinyin,就新建double_pinyin.custom.yaml,用patch的方式,或者直接修改double_pinyin.schema.yaml

dyfllll avatar Jun 22 '25 00:06 dyfllll

我最后用Lua实现,和搜狗之类的不一样,按下小键盘相当于回车+输入相对应的字符,算是间接解决需要切换问题吧 https://github.com/dyfllll/rime-ice/blob/main/lua/kp_input.lua 把这个文件加入的配置里面就行了 配置可以参考这个 https://github.com/dyfllll/rime-ice/blob/main/rime_ice.custom.yaml

请问可以详细说说这个方法吗?我把kp_input.lua放在了lua文件夹,但后面不知道怎么设置才行。

还需要配置一下,比如你用的是rime_ice,就新建一个rime_ice.custom.yaml在里面加入

patch:
  engine/processors/@before 0: lua_processor@*kp_input

就行了,也可以在原配置rime_ice.schema.yaml里面找到engine:processors,把lua_processor@*kp_input加到里面 如果用的是其他输入方案比如double_pinyin,就新建double_pinyin.custom.yaml,用patch的方式,或者直接修改double_pinyin.schema.yaml

!!!太感谢了,使用“新建double_pinyin.custom.yaml”的方式成功了。就是不知道为什么使用修改“double_pinyin.schema.yaml”或者“default.custom.yaml”的方式会失败。

thezwa avatar Jun 22 '25 08:06 thezwa

对于熟悉小键盘的用家,一个例子足够说明问题。 笔者从未用过数字小键盘, 仅凭他人的模糊描述去编程,肯定难以周全。 这事还得等一个程序员来完成。

I have a unique issue related to the keypad. In my schema, when I type:

beng -> beng
beng2 -> béng
beng3 -> bèng
beng5 -> bêng
beng6 -> běng
beng7 -> bēng
boh8 -> bo̍h
beng9 -> bĕng

...this mapping works perfectly.

However, if I use the keypad to type numbers, RIME's "translator" fails to convert them correctly. Because of this, I also want to prevent the keypad from being used to select words.


You might wonder why I don’t use the top row number keys.

My keyboard has only 34 keys, and I designed the keypad layout myself. I’ve disabled the top-row numbers and use the keypad for number input. With Num Lock, those keys also double as arrows and other functions, which makes input more efficient.

yapinxxx avatar Jul 18 '25 06:07 yapinxxx