Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持非ascii字符编码模式 #644

Open
liwenyi777 opened this issue Apr 26, 2023 · 21 comments
Open

支持非ascii字符编码模式 #644

liwenyi777 opened this issue Apr 26, 2023 · 21 comments

Comments

@liwenyi777
Copy link

我在trime项目贴了一个帖子(unicode模式:接受任何字符作为编码手段):osfans/trime#850
大概是设计一个unicode转换编码模式,类似于中文模式,任何unicode文字编码都能接受作为编码键入的一部分,由于我提出的基于是虚拟键盘(字符映射)的方案,而不是基于键盘映射方案,就好比是实体键盘上的A映射成"非ascii字符",而不是新增一个有键盘代码的"非ascii字符"的实体键,可能这个unicode模式对桌面操作系统用处不大(没有那么多实体按键被映射成非ascii字符)。
这个unicode转换编码模式会有什么作用呢:键入万国音标的输入编码输出中文、日文、谚文、西夏文等等,或者是拥有300个汉字的实体键盘,以这300个汉字作为形码组合编码输出中文字。

@LEOYoon-Tsaw
Copy link
Member

現在就支持所有 Unicode 字符作編碼。這是我的一個方案的 dict:
image

@liwenyi777
Copy link
Author

liwenyi777 commented Apr 27, 2023

現在就支持所有 Unicode 字符作編碼。這是我的一個方案的 dict: image

旧的librime版本,比如说bă,在中文模式下,单独键入ă会直接上屏这个字符不会上编码区,先输入b再输入ă上不了编码区(只有b没有ă上去)。同文的话,如果是大小写字母,看这个帖子:osfans/trime#824 输入的字符先交给librime处理一遍,同文再处理一遍,a(按shift a)A是可以作为编码的。
我设想的unicode编码转换模式呢,输入bă,可以当做bă是文本字符来处理,不要当做keycode来处理。

@mokapsing
Copy link
Contributor

我用中文编码仓颉方案似乎是不可以的

image

@liwenyi777
Copy link
Author

我用中文编码仓颉方案似乎是不可以的

image

中文模式下,汉字的字符编码输入好像会被librime处理一遍,所以不会上编码区。

@mokapsing
Copy link
Contributor

我用中文编码仓颉方案似乎是不可以的
image

中文模式下,汉字的字符编码输入好像会被librime处理一遍,所以不会上编码区。

我用lua_translator将输入的英文字母转成了中文再去查字,但是还是不行,应该是不支持中文编码

@liwenyi777
Copy link
Author

我用中文编码仓颉方案似乎是不可以的
image

中文模式下,汉字的字符编码输入好像会被librime处理一遍,所以不会上编码区。

我用lua_translator将输入的英文字母转成了中文再去查字,但是还是不行,应该是不支持中文编码

IMG_20230505_162008
中文模式下,能上界面编码区的字符基本是部分ascii字符,trime的话,键入汉字、拉丁字母的字符会先通过librime处理一遍,trime再处理一遍,换句话说,db已经存储了汉字编码(unicode)的字典,但你输入这些汉字编码的时候被librime算法处理掉了(一般是非ascii字符和大写字母A-Z(按shift+a-z键))会直接上屏而不会上界面编码区)导致不能去db字典搜索符合的编码,trime中文模式是有个漏网之鱼就是先输入非大写字母的字符(能上编码区的字符)随后再跟大写字母是可以上编码区的(例如aA可以上编码区,Aa不可以,先输入A会直接上屏导致只能输入a)。

@mokapsing
Copy link
Contributor

我己经完成了用中文编码仓颉,不过要借助lua,不得不说librime+lua真的太好用了

image

image

@groverlynn
Copy link
Contributor

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。
至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。
十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

@liwenyi777
Copy link
Author

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

@groverlynn
Copy link
Contributor

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

@liwenyi777
Copy link
Author

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

安卓同文可以编排一个虚拟键盘,可以输入编排好的"字符"。同样的想法套用到实体键盘上,既然市面上实体键盘不能满足需求,便DIY一个出来去满足需求,而不是用映射字符到键位去解决。

@groverlynn
Copy link
Contributor

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

安卓同文可以编排一个虚拟键盘,可以输入编排好的"字符"。同样的想法套用到实体键盘上,既然市面上实体键盘不能满足需求,便DIY一个出来去满足需求,而不是用映射字符到键位去解决。

DIY出來實體鍵盤嗎?如果不是,那還不是要先映射到ASCII或LATIN-1?

@liwenyi777
Copy link
Author

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

安卓同文可以编排一个虚拟键盘,可以输入编排好的"字符"。同样的想法套用到实体键盘上,既然市面上实体键盘不能满足需求,便DIY一个出来去满足需求,而不是用映射字符到键位去解决。

DIY出來實體鍵盤嗎?如果不是,那還不是要先映射到ASCII或LATIN-1?

如果是实体键盘,确实先要映射ASCII或LATIN-1的键位。我提出一个解决方案:电脑上可以设计一个屏幕键盘(屏幕虚拟键盘)让用户去编排unicode字符编码(但鼠标单点输入效率低,可以换个多点触控的屏幕,双食指点击屏幕,或者屏幕套个实体键盘套多指操作,点击键盘会压到触控屏幕相应位置上的虚拟键盘字符)。DIY实体键盘,创建新键位时,输入的字符要和键位码绑定,而虚拟键盘不和键位码绑定,DIY新建的键位码也不符合通用标准。unicode的空余字符编码,相关组织可以提出申请某个文字去找到个位置安放下来,随着unicode迭代就可以输出该文字。而DIY实体键盘的键位码(ASCII和LATIN-1的之外字符),似乎没有相关标准去让人申请。

@groverlynn
Copy link
Contributor

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

安卓同文可以编排一个虚拟键盘,可以输入编排好的"字符"。同样的想法套用到实体键盘上,既然市面上实体键盘不能满足需求,便DIY一个出来去满足需求,而不是用映射字符到键位去解决。

DIY出來實體鍵盤嗎?如果不是,那還不是要先映射到ASCII或LATIN-1?

如果是实体键盘,确实先要映射ASCII或LATIN-1的键位。我提出一个解决方案:电脑上可以设计一个屏幕键盘(屏幕虚拟键盘)让用户去编排unicode字符编码(但鼠标单点输入效率低,可以换个多点触控的屏幕,双食指点击屏幕,或者屏幕套个实体键盘套多指操作,点击键盘会压到触控屏幕相应位置上的虚拟键盘字符)。DIY实体键盘,创建新键位时,输入的字符要和键位码绑定,而虚拟键盘不和键位码绑定,DIY新建的键位码也不符合通用标准。unicode的空余字符编码,相关组织可以提出申请某个文字去找到个位置安放下来,随着unicode迭代就可以输出该文字。而DIY实体键盘的键位码(ASCII和LATIN-1的之外字符),似乎没有相关标准去让人申请。

你以為實體鍵盤是怎麼輸入的?實體鍵盤也不綁定到鍵帽上打印的那個鍵位碼的啊(根本不存在這種鍵位碼)。實體鍵盤的內碼也是1,2,3,4,5…之類的,然後由系統套用的某個鍵盤佈局映射到相應鍵位。鍵盤佈局可以更改的,

所以你追求的無非是自定義鍵盤佈局罷了。

@liwenyi777
Copy link
Author

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

安卓同文可以编排一个虚拟键盘,可以输入编排好的"字符"。同样的想法套用到实体键盘上,既然市面上实体键盘不能满足需求,便DIY一个出来去满足需求,而不是用映射字符到键位去解决。

DIY出來實體鍵盤嗎?如果不是,那還不是要先映射到ASCII或LATIN-1?

如果是实体键盘,确实先要映射ASCII或LATIN-1的键位。我提出一个解决方案:电脑上可以设计一个屏幕键盘(屏幕虚拟键盘)让用户去编排unicode字符编码(但鼠标单点输入效率低,可以换个多点触控的屏幕,双食指点击屏幕,或者屏幕套个实体键盘套多指操作,点击键盘会压到触控屏幕相应位置上的虚拟键盘字符)。DIY实体键盘,创建新键位时,输入的字符要和键位码绑定,而虚拟键盘不和键位码绑定,DIY新建的键位码也不符合通用标准。unicode的空余字符编码,相关组织可以提出申请某个文字去找到个位置安放下来,随着unicode迭代就可以输出该文字。而DIY实体键盘的键位码(ASCII和LATIN-1的之外字符),似乎没有相关标准去让人申请。

你以為實體鍵盤是怎麼輸入的?實體鍵盤也不綁定到鍵帽上打印的那個鍵位碼的啊(根本不存在這種鍵位碼)。實體鍵盤的內碼也是1,2,3,4,5…之類的,然後由系統套用的某個鍵盤佈局映射到相應鍵位。鍵盤佈局可以更改的,

所以你追求的無非是自定義鍵盤佈局罷了。

实体键盘分为keycode和charcode,keycode是内码(键盘上的键,而不是贴在"键"上面的字符),charcode是unicode码(非键盘上的键,而是贴在"键"上的字符),keycode有它的一套标准,不分字母大小写,日文键盘上的键(keycode)是转写(翻译,可以理解为映射),而不是新增一套内码。按你说,如果我追求的的是自定义的键盘,那好,我新增一套A-Z的keycode内码,而不是用charcode映射到既有的keycode内码,librime接收A-Z的keycode(charcode),它还是会处理掉它不会让它上候选编码框。换言之,我想让A-Z上候选编码框,如果它能上,那么unicode字符也可以上,然后发现实体键盘不能满足unicode的按键需求。现在你说我追求的是键盘自定义布局,安卓同文就能满足我的需求,该issue我提出的是librime算法的改进,电脑rime自定义键盘是后面讨论当中附带提出的。

@groverlynn
Copy link
Contributor

IPA是用來準確一致地記錄語音的,即便是採用拼音文字的語文都普遍有正字法完全無法簡單對應IPA的問題,何況還要考慮方言、口音、歷史語音等。用純語音的IPA來編碼表意的象形文字就更荒唐了。 至於300個漢字的實體鍵盤……嗯,如果是康熙部首的話,那麼你過半時間都只會用固定的十數個鍵,還有十數個鍵你一年到頭估計就碰兩三下。 十指卅鍵是相對合理的設計。ASCII近百個可打印字符,容量上綽綽有餘。捨棄ASCII已經搭好的底層積木,直接把上萬個散裝積木扔到一起……呃……

IPA只是提出来的一种是输入方案,目前普遍输入ipa也是需要用ASCII字符的编码转写一遍,而虚拟键盘可以直接编排IPA音标字符不需要转写。象形文字确实是用形码更好,不用考虑字的读音,IPA相当于音码。300个实体键只是句玩笑话,引用维基百科-中文输入法:[台湾的交通大学1973年研发“字根键盘”,用496个键输入,每键代表一个字根,属于中键盘。],之后中国大陆和台湾100个键或以上的汉字形码(字根)输入法产品也出现过,台湾的三角输入法当时就要用到100个按键(现在放到数字小键盘那里了,只用到10个按键),支持unicode字符就能复刻这些形码输入法(调侃意味)了。不用IPA做例子,用日本万叶假名(汉字)编码平/片假名,象形文字编码表音文字。我的意思更多是:开放unicode字符,让用户有更多的DIY功能。说一下郑码,郑码是双编码字根,b bd c cd f fd这些,*d的字根编码其实是妥协的产物,郑码可以设计成b B c C f F,或者b 另外的拉丁字符之类的。而librime算法会处理掉大写字母和非ASCII字符,导致不能上编码区。设计输入法方案可以从unicode选取更多想要的字符,而不局限于ASCII字符,设计者要用上万个字符组合他的输入法方案我认为是个失败的方案(学习成本太高)。

那你要怎麼輸入這些字符?像是注音、倉頡、五筆都是映射到美式ANSI鍵盤上的。至多從ascii擴展到latin-1用來支持歐陸ISO鍵盤。

安卓同文可以编排一个虚拟键盘,可以输入编排好的"字符"。同样的想法套用到实体键盘上,既然市面上实体键盘不能满足需求,便DIY一个出来去满足需求,而不是用映射字符到键位去解决。

DIY出來實體鍵盤嗎?如果不是,那還不是要先映射到ASCII或LATIN-1?

如果是实体键盘,确实先要映射ASCII或LATIN-1的键位。我提出一个解决方案:电脑上可以设计一个屏幕键盘(屏幕虚拟键盘)让用户去编排unicode字符编码(但鼠标单点输入效率低,可以换个多点触控的屏幕,双食指点击屏幕,或者屏幕套个实体键盘套多指操作,点击键盘会压到触控屏幕相应位置上的虚拟键盘字符)。DIY实体键盘,创建新键位时,输入的字符要和键位码绑定,而虚拟键盘不和键位码绑定,DIY新建的键位码也不符合通用标准。unicode的空余字符编码,相关组织可以提出申请某个文字去找到个位置安放下来,随着unicode迭代就可以输出该文字。而DIY实体键盘的键位码(ASCII和LATIN-1的之外字符),似乎没有相关标准去让人申请。

你以為實體鍵盤是怎麼輸入的?實體鍵盤也不綁定到鍵帽上打印的那個鍵位碼的啊(根本不存在這種鍵位碼)。實體鍵盤的內碼也是1,2,3,4,5…之類的,然後由系統套用的某個鍵盤佈局映射到相應鍵位。鍵盤佈局可以更改的,
所以你追求的無非是自定義鍵盤佈局罷了。

实体键盘分为keycode和charcode,keycode是内码(键盘上的键,而不是贴在"键"上面的字符),charcode是unicode码(非键盘上的键,而是贴在"键"上的字符),keycode有它的一套标准,不分字母大小写,日文键盘上的键(keycode)是转写(翻译,可以理解为映射),而不是新增一套内码。按你说,如果我追求的的是自定义的键盘,那好,我新增一套A-Z的keycode内码,而不是用charcode映射到既有的keycode内码,librime接收A-Z的keycode(charcode),它还是会处理掉它不会让它上候选编码框。换言之,我想让A-Z上候选编码框,如果它能上,那么unicode字符也可以上,然后发现实体键盘不能满足unicode的按键需求。现在你说我追求的是键盘自定义布局,安卓同文就能满足我的需求,该issue我提出的是librime算法的改进,电脑rime自定义键盘是后面讨论当中附带提出的。

自定義鍵盤佈局當然是不改變keycode(目前全球在用的就只有ANSI、ISO、JIS三種,日文鍵盤JIS還就是和歐ISO美ANSI不一樣),而是改變charcode。你能先自己拎拎清楚嗎?前後矛盾都不知道你想表達什麼……
ASCII範圍內能不能上編碼框speller/alphabet可以設定。ASCII以外實體鍵可以用key_binder映射,自定義鍵盤佈局可以通過speller/algebra或者translator/preedit_format映射。注音、倉頡等等都是這樣實現的

@liwenyi777
Copy link
Author

自定义键盘方面:ANSI、ISO、JIS键盘是有一套标准的,假设我有一个需求是设计一个600个字符需要去编排实体按键,我的意思是600字符当中有字符超出“ANSI、ISO、JIS键盘标准”之外的字符,需要新增keycode,但新增的keycode不符合主流"标准",也没有组织去推行这样的标准。
编码区问题:方案有个是“金 金”,用AHK直接映射中文字"金"到c键,按下c,"金"上不了编码区。我估计用rime配和脚本语言输入先将"金"转成c传入librime让其识别(没实操),但如果方案里有600个字符作为编码字符,显然会不够用。ANSI之外的字符传入librime会被处理掉,所以我提出一个unicode模式的需求。

@groverlynn
Copy link
Contributor

600字符当中有字符超出“ANSI、ISO、JIS键盘标准”之外的字符,需要新增keycode

根本不存在“ANSI、ISO、JIS键盘标准”之內的字符。三大標準差別在ANSI主鍵盤比ISO主鍵盤少一個符號鍵,ISO主鍵盤比JIS主鍵盤少兩個功能鍵,三者左首和右首的個別案件佈局稍有不同。
同一個ISO鍵盤,依賴不同佈局能(系統級的)輸入拉丁字母、西里爾字母、希臘字母、希伯來字母、阿拉伯字母及他們的變體。
你要新增的是charCode,不是keyCode。charCode隨便你改,不僅可以軟件層面自定義,現在已經有硬件層面可以自定義charCode的鍵盤了。rime也不處理keyCode,畢竟三大平臺的keyCode設定都不一樣。rime過濾掉的是ASCII可打印字符以外的unicode字符。

方案有个是“金 金”,用AHK直接映射中文字"金"到c键,按下c,"金"上不了编码区

把映射的環節放到rime方案裏面就可以了啊,這有很難理解嗎?

但如果方案里有600个字符作为编码字符,显然会不够用

600個字符你的鍵盤也不夠用啊!你還要先設計一個輸入法用鍵盤輸入600個字符,然後再在上面套一個輸入法……

@Newdea
Copy link

Newdea commented Apr 20, 2024

我己经完成了用中文编码仓颉,不过要借助lua,不得不说librime+lua真的太好用了

image

image

@mokapsing 你好,请问你用lua是怎么实现的呢,能否分享下呢?

目前想用五笔的拆分表做码表,然后用Speller/algebra 运算将字根处理转换为[a-y]按键。

@mokapsing
Copy link
Contributor

我己经完成了用中文编码仓颉,不过要借助lua,不得不说librime+lua真的太好用了
image
image

@mokapsing 你好,请问你用lua是怎么实现的呢,能否分享下呢?

目前想用五笔的拆分表做码表,然后用Speller/algebra 运算将字根处理转换为[a-y]按键。

用lua_translator,将a-z转成五笔拆分去木查字,用Speller/algebra做不到

@Newdea
Copy link

Newdea commented Apr 21, 2024

用lua_translator,将a-z转成五笔拆分去木查字,用Speller/algebra做不到

这样是个思路,但一个按键是对应多个字根的,而且是在输入过程中处理,对性能会有影响的吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants