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

想做一个五笔双键键盘,求指教?或者是不是有人做了呀? #61

Closed
boboIqiqi opened this issue Apr 18, 2016 · 17 comments

Comments

@boboIqiqi
Copy link
Collaborator

boboIqiqi commented Apr 18, 2016

上次跟 osfans老大 讨论过,可以利用模糊音+定制键盘外观,做一个双键和键盘(就是一个按键上有两个字母)。这种方法对拼音不行,因为模糊以后,无法再清晰化,再选确定的字母。不过,我试了一下,对五笔应该是没有问题的,我自己用的是触宝的T+键盘,也是双键,我几乎没有用过需要清晰化的功能。

我今天刚学了一点如何定制小狼毫,刚会定制五笔四码上屏,Shift切换,输入英文code。
(刚开始一直分不清安装目录下的/data/中的文件与 %appdata%/rime下的文件)
也刚看了一下,佛振 老大写的,模糊音定制模板。

现在还差如何定制Android手机上的键盘外观,准备明天,照着wiki 里面的说明,做一个

示例:新建一個副鍵盤
https://github.com/osfans/trime/wiki/trime.yaml%E8%A9%B3%E8%A7%A3

请问大家,我这样做对吗?以前有人做过没有?有做好的方案推荐一个。

谢谢诸位了,祝各位开发愉快!

@boboIqiqi
Copy link
Collaborator Author

boboIqiqi commented Apr 18, 2016

另外问一下,大家编辑yaml都是用vi吗?
我在网上查到eclipse下有个YEdit的插件,今天没有安装成功,明天安装一下。大家有用过吗?

还有咱们的项目是ADT下面的,以后为移植到Android Studio下面吗?

为什么项目中间的缩进是两个空格呀

@osfans
Copy link
Owner

osfans commented Apr 19, 2016

我是用的vim和geany。
應該eclipse和android studio都能用吧?
我是用ant命令行的。

@xiaoqun2016
Copy link
Contributor

以前观察到一个现象:使用table_translator时,拼写运算对用户词典无效。
如果你不需要调频,这对你没有任何影响。 如果要调频,那会很让人抓狂。
script_translator没有这个问题,也有用它做形码方案的先例,比如「速成」。
所以,有很多种可能,看你怎么选择了。

@boboIqiqi
Copy link
Collaborator Author

boboIqiqi commented May 1, 2016

@xiaoqun2016
汇报一下工作哈。
我按照上面的方案,实现了一个键盘,又定义了模糊音,界面如下:
仿触宝自定义的双键

下面这个我平时使用的触宝双键,我就仿这个页面布局做的
触宝双键

现在的问题有:

  • 词频问题。上面的截图中,我想打一个"输入"这个词汇(词频233000000),但是它却在"加尔各答"后面(词词频180000)。schema_id.dict.yaml文件中,既然已经标明了词频,为什么还不能自动调频呢?我还没有看懂你上面的解释,拼写运算跟词频有什么关系?我再查查哈。
  • 如何实现切换到英文模式,并且使用全键盘。我自己定义了一个输入方案,又定义了个键盘。然后切换到英文模式的时候,我想切换回全键盘。这个该如何实现,我看wiki中给出的参考,是自定义一个键盘,然后有个键,- {click: Keyboard_default, long_click: Menu, width: 10},就可以切换加默认键盘。但是我现在的默认键盘已经变了。我想我是需要切换到qwer键盘,并将输入模式切换回英文。我先研究一下系统注册了哪些键盘吧。
  • 界面配色美化,主要就是把字体大小改一下,再研究一下配色,如果能做皮肤就更好(上次看老大说,要不要实现按键上加背景图片,我可以研究一下)
  • 五笔造词问题。主要就是希望实现点"词"按钮,再加一个数字,可以将前面输入的后几个汉字造成词。这个主要是研究一下libRime中有没有提供这个功能和按键

有些可能需要我自己先查查,补补基础知识。

还有就是,我写好的方案,该如何提交呀?是要提交到brise的版本库中吗?

帖上我的代码:

#trime.custom.yaml
patch:
#1、新建一個按鍵佈局wubi86_double_key
  "preset_keyboards/wubi86_double_key":  #佈局ID
    author: "boboIqiqi"   #作者
    name: "五笔双键"  #方便自己辨識的名字
    ascii_mode: 0 #默認進入中文狀態
    height: 60   #每行高度
    width: 20   #按鍵默認寬度(取所有按鍵中用得較多的寬度值,接下來就可以少寫一些width了)  
    keys:   #按鍵排列
      #第一行
      - {label: "Q W", click: q, long_click: 1}
      - {label: "E R", click: e, long_click: 2}
      - {label: "T Y", click: t, long_click: 3}
      - {label: "U I", click: u, long_click: 4}
      - {label: "O P", click: o, long_click: 5}

      #第二行
      - {label: "A S", click: a, long_click: 6}
      - {label: "D F", click: d, long_click: 7}
      - {label: "G H", click: g, long_click: 8}
      - {label: "J K", click: j, long_click: 9}
      - {label: "L"  , click: l, long_click: 0}

      #第三行
      - {label: "词" , click: Shift_L, width: 10}
      - {label: "Z"  , click: z, long_click: "@", width: 10}
      - {label: "X C", click: x, long_click: "!"}
      - {label: "V B", click: v, long_click: "?"}
      - {label: "N M", click: n, long_click: "."}
      - {click: BackSpace}

      #第四行
      - {click: Keyboard_symbols, width: 15}
      - {click: Keyboard_default, long_click: Menu, width: 10}
      - {click: ",", width: 10}
      - {label: " " , click: space, long_click: VOICE_ASSIST, width: 30} 
      - {click: "。", width: 10}
      - {label: "123", click: Keyboard_number, width: 10}
      - {label: "确定", click: Return, width: 15}

#2. 在style/keyboards中聲明一下我們要用到wubi86_double_key這個鍵盤
  "style/keyboards":
    - .default
    - default
    - number
    - symbols
    - wubi86_double_key  

文件wubi86_double_key.yaml

# Rime schema settings
# vim: set sw=2 sts=2 et:
# encoding: utf-8

schema:
  schema_id: wubi86_double_key
  name: "五笔86双键版"
  version: "0.12"
  author:
    - 發明人 王永民先生
  description: |
    五筆字型86版
    碼表源自 ibus-table
    請安裝【袖珍簡化字拼音】以啓用 z 鍵拼音反查

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: extended_charset
    states: [ 通用, 增廣 ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - reverse_lookup_translator
    - table_translator

speller:
  delimiter: " ;'"
  max_code_length: 4
  algebra:
    - derive/w/q/
    - derive/r/e/ 
    - derive/y/t/ 
    - derive/i/u/ 
    - derive/p/o/ 

    - derive/s/a/ 
    - derive/f/d/ 
    - derive/h/g/ 
    - derive/k/j/ 

    - derive/c/x/ 
    - derive/b/v/ 
    - derive/m/n/ 

translator:
  dictionary: wubi86_double_key
  enable_charset_filter: true
  enable_encoder: true

reverse_lookup:
  dictionary: pinyin_simp
  prefix: "z"
  tips: 〔拼音〕
  preedit_format:
    - xform/([nljqxy])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

punctuator:
  import_preset: default

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    reverse_lookup: "^z[a-z]*$"

最后,wubi86_double_key.dict.yaml就是跟wubi自带的词典是一样的,复制一份就好。

我的台式机上试的时候,好像用一样的会冲突,我原来的wubi86输入法,也变成了模糊音,所以就又复制了一份,就好了。

我再确认一下吧,是不是我编译文件的问题。大家解释一下,是不是必须再复制一份码表

@xiaoqun2016
Copy link
Contributor

xiaoqun2016 commented May 1, 2016

1、关于词频

dict.yaml中的编码原形是这样:

输入  lwty    233000000
加尔各答    lqtt    180000

经过你的拼写运算处理,衍生出了输入 lqtt这个编码,所以,你可以用lqtt打出这两个词。
你的做法没问题。但是,由于这里用的是table_translator,在固态词典和用户词典中,存储的都是编码原形,当你用衍生码输入时,rime并不会通过衍生码去追溯编码原形的词频,所以,衍生码都是没有词频的
输入 lqtt没有词频数据,相当于词频为零了,所以总是排在后面。而且,不管你用lqtt打多少遍输入这个词,用户词典中累加的词频都是算在编码原形输入 lwty上面,这就犹如石沉大海,你用lqtt永远也取不出输入的词频。
不知道你看懂了没?可能我的描述也是不准确的。总之一句话:拼写运算对table_translator支持得不好,或者说是有bug。 如果你觉得这需要解决,可以到librime的github提issue。

或者你可以模仿仓颉的「速成」方案,做一个「五笔速成」,这样就可以避开这个问题了。而且,你做的按键够大,可以用击键数来抵消重码。 (个人观点,仅供参考)

2、英文键盘

既然你的中文键盘上有个中英切换键,那就好解决了。
看看这样:
演示.gif

测试了一下,中文、英文、临时英文这三种模式都正常。
唯一的缺点是只有在键盘中切换到英文模式才有效。
参考补丁:

#trime.custom.yaml
patch:
#1、新建一個按鍵佈局wubi86_double_key
  "preset_keyboards/wubi86_double_key":  #佈局ID
    author: "boboIqiqi"   #作者
    name: "五笔双键"  #方便自己辨識的名字
    ascii_mode: 0 #默認進入中文狀態
    height: 60   #每行高度
    width: 20   #按鍵默認寬度(取所有按鍵中用得較多的寬度值,接下來就可以少寫一些width了)  
    keys:   #按鍵排列
      #第一行
      - {label: "Q W", click: q, long_click: 1}
      - {label: "E R", click: e, long_click: 2}
      - {label: "T Y", click: t, long_click: 3}
      - {label: "U I", click: u, long_click: 4}
      - {label: "O P", click: o, long_click: 5}

      #第二行
      - {label: "A S", click: a, long_click: 6}
      - {label: "D F", click: d, long_click: 7}
      - {label: "G H", click: g, long_click: 8}
      - {label: "J K", click: j, long_click: 9}
      - {label: "L"  , click: l, long_click: 0}

      #第三行
      - {label: "词" , click: Shift_L, width: 10}
      - {label: "Z"  , click: z, long_click: "@", width: 10}
      - {label: "X C", click: x, long_click: "!"}
      - {label: "V B", click: v, long_click: "?"}
      - {label: "N M", click: n, long_click: "."}
      - {click: BackSpace}

      #第四行
      - {click: Keyboard_symbols, width: 15}
      - {click: Keyboard_eng, label: 中, long_click: Menu, width: 10}
      - {click: ",", width: 10}
      - {label: " " , click: space, long_click: VOICE_ASSIST, width: 30} 
      - {click: "。", width: 10}
      - {label: "123", click: Keyboard_number, width: 10}
      - {label: "确定", click: Return, width: 15}
#英文键盘      
  "preset_keyboards/eng":
    name: 26键英文
    author: "osfans <waxaca@163.com>"
    ascii_mode: 1
    width: 10
    height: 60
    keys:
      - {click: 'q', long_click: '!', swipe_up: 1}
      - {click: 'w', long_click: '@', swipe_up: 2}
      - {click: 'e', long_click: '#', swipe_up: 3}
      - {click: 'r', long_click: '$', swipe_up: 4}
      - {click: 't', long_click: '%', swipe_up: 5}
      - {click: 'y', long_click: '^', swipe_up: 6}
      - {click: 'u', long_click: '&', swipe_up: 7}
      - {click: 'i', long_click: '*', swipe_up: 8}
      - {click: 'o', long_click: '(', swipe_up: 9}
      - {click: 'p', long_click: ')', swipe_up: 0}
      - {width: 5}
      - {click: 'a', long_click: '_', swipe_left: Left, swipe_right: Right, swipe_up: Up, swipe_down: Down}
      - {click: 's', long_click: '-', swipe_left: Home, swipe_right: End, swipe_up: Page_Up, swipe_down: Page_Down}
      - {click: 'd', long_click: '+', swipe_down: '_'}
      - {click: 'f', long_click: '=', swipe_down: '='}
      - {click: 'g', long_click: '|', swipe_down: '|'}
      - {click: 'h', long_click: '\', swipe_left: '[', swipe_right: ']'}
      - {click: 'j', long_click: '[', swipe_left: '{', swipe_right: '}'}
      - {click: 'k', long_click: ']'}
      - {click: 'l', long_click: ':'}
      - {width: 5}
      - {click: Shift_L, width: 15}
      - {click: 'z', long_click: '"'}
      - {click: 'x', long_click: '~'}
      - {click: 'c', long_click: "'"}
      - {click: 'v', long_click: 'Time', swipe_up: Date}
      - {click: 'b', long_click: '{'}
      - {click: 'n', long_click: '}'}
      - {click: 'm', long_click: ";"}
      - {click: BackSpace, width: 15}
      - {click: Keyboard_symbols, width: 15}
      - {click: Keyboard_defaultw, long_click: Menu}
      - {click: ',', long_click: '<', paging: Page_Up}
      - {click: space, label: " ", width: 30}
      - {click: '.', long_click: '>', has_menu: Page_Down}
      - {click: '/', long_click: '?'}
      - {click: Return, width: 15}

  "style/keyboards":
    - .default
    - default
    - number
    - symbols
    - eng  #
  "style/candidate_view_height": 36
  "style/round_corner": 0.0
  "style/label_text_size": 18
  "style/comment_height": 14
  "preset_keys/Keyboard_eng":   #切换英文键盘
    label: 中    #按鍵標籤
    send: Eisu_toggle  #執行切換鍵盤命令
    select: eng   #選擇eng鍵盤
  "preset_keys/Keyboard_defaultw":   #返回中文键盘
      label: 
      select: .default
      send: Eisu_toggle
  "preset_keys/space":
    functional: false
    label: " "
    repeatable: false  #关掉空格键重复
    send: space
  "preset_keys/Time":
    command: date
    label: time
    option: "yyyy-MM-dd  HH:mm:ss"  #自定义时间
    send: function

其它细节你可以再调整一下。
另外,上面的动图演示方案,我是直接把schema中的table_translator换成script_translator了,所以虽然也经过了拼写运算,但词频正常。这就是script_translator比较完善的地方。 但是由于造词规则是拼音式的,所以也不太适合形码,需要像速成方案那样调整一下,才有规律。

3、造词

rime有自己的造词方法。
一种是连续打出词组中的每个字,再统一上屏,rime就会预先给词组编码,只要你再用词组码打出并上屏该词,就造好了。 这个造词的最大长度是在dict.yaml中设定的。
另一种是在schema.yaml中设定commit_history,rime可以对已经上屏的几个字预先编制词组码,等你再次打出词组并上屏后,就造好了。这种方法容易产生较多非词干扰项,要慎重使用 。

4、共用词库问题

不需要再复制dict.yaml
只需要给你的拼写运算产生的棱镜文件单独命名即可。(在你的双键schema.yaml中给主翻译器设置prism: wubi86_double_key

@boboIqiqi
Copy link
Collaborator Author

boboIqiqi commented May 1, 2016

@xiaoqun2016 谢谢你的细致讲解,讲解得很清晰。也正是我需要的。
只是我得好好消化消化,补充一点rime的基础知识。

中英文切换问题

谢谢你的指导,我又认真看了一下trime.yaml的教程,觉得前面是我没想清楚需求,其实我需要的是两个功能

  1. 切换全键盘与双键键盘布局 (可以直接调用defaultqwerty键盘)
  2. 切换中/英文输入法  (这可以可以通过候选框上的中/英切换按钮实现)
    唯一的问题就是,双键键盘目前不支持英文输入,所以切换到英文状态的时候,应该自动切换到全键盘。

你给的方案很好,把上面的问题都解决了。只是我可以不自定义键盘吗?我可以继承default键盘,然后只重写一下ascii_mode吗? (css是不是就是这样工作的)

临时英文输入

测试了一下,中文、英文、临时英文这三种模式都正常。

你提到,临时英文模式,这个如何设置呢?
在五笔状态下,临时输入英文如何实现呀。
我以前用触宝的时候,特想实现这个功能:五笔双键下,左滑/下滑输入左字母,右滑/上滑输入右字母(触宝切换到英文模式特别慢),这个好实现吗?或者你有其他的更规范的临时输入英文方案

不过我们的输入法切换速度很快,这个也不必須的,可能偶尔只输入一两个英文字母会有用吧

唯一的缺点是只有在键盘中切换到英文模式才有效。

这是什么意思呢?什么有效呀?

wiki教程中的一个疑问,patch覆盖的问题

我看wiki教程里,定义了一个键盘布局xKey,最后要将xKey切换功能添加到标准键盘上,需要修改某个按键的long_click属性,

#3、把這個切換鍵盤的功能鍵放到主鍵盤中(以朙月拼音所用的預設26鍵鍵盤為例)
  "preset_keyboards/qwerty":
    name: "預設26鍵"
    ascii_mode: 0
    keys:   #这里要指定所有的按键,可以只指定需要修改的按键吗?

对yaml语法不太熟,可以增量式修改吗?只修改一个属性的部分值

个人交流

  1. 请问一下,你做那个动图是用mobizen远程控制,然后在电脑上录的吗?你的是什么手机,我看网上说,只有三星和索尼的才能装。我也一直想学着录屏
  2. 还有谢谢你的上次推荐给我的编辑器,我决定用VimTouch,这个是开源的(人家也在FDroid上上线了)不用交钱,而且我PC也一直学着用gVim,会比较统一。
  3. 最后问一下,你也是用五笔吗?你平时用什么输入法软件呀(在电脑和手机上)?在手机上你是用全键盘吗?

再次感谢你的回复,你可真是我的良师益友,让我受益良多

@xiaoqun2016
Copy link
Contributor

  • 可以增量修改,只重写ascii_mode。比如这样"preset_keyboards/<布局ID>/ascii_mode": 1
    也可以只改其中某个按键,只不过你还要去数要改的键是在第几位。比如你要把预设26键键盘的t键改成时间键,可以这样 "preset_keyboards/qwerty/keys/@4": {click: time}@4表示第5个按键,从0算起。这种做法还要一个个地数,不太直观。如果你更喜欢这样改也可以。(这些其实在佛振写的定制指南里面有讲到,只是他没有讲得很具体,需要灵活运用)
  • 布局可以共用,trime.yaml里面预置的布局很多都是网友做的。这些布局是需要靠大家不断完善的。如果你调好了双键的布局,可以提交上来,这样其他人要用双键布局就方便了。英文键盘也是这样。
  • 如果你用过小狼毫,应该知道临时英文是什么样子。就是那个左shift键。在输入过程中可以随时切换中英状态而不会上屏。
    你说的双键左右滑动输入不同的字母,同文能做。
  • 录屏有很多软件,不一定要用mobizen,你可以试试ADV Screen recorder,制作gif可以试试Gif Edit Maker Video。我都是直接在手机上录制编辑的,手机上只能做比较简单的,没办法要求太高。
  • 关于F-Droid,好像有的软件都停更了?比如VimTouch,F-Droid上面还是三年前的2.3版,而github和谷歌商店里面可以找到最新的2.7版。 又比如FBReader,F-Droid上面也停更了,而谷歌商店还在更新。不知道其它软件是不是也这样?
  • 我是用郑码,电脑上用小狼毫,手机上以前用小小,现在用同文,全键盘。
    再说说那个拼写运算的问题,虽然逻辑上有漏洞,但是却有正面的作用。比如我现在就是用它来实现生僻字不调频的。rime就是这么奇特。

@xiaoqun2016
Copy link
Contributor

xiaoqun2016 commented May 2, 2016

补充一下:
单独修改某个按键的long_click,大概是这样:

  "preset_keyboards/qwerty/keys/@4/long_click": xxx

@boboIqiqi
Copy link
Collaborator Author

boboIqiqi commented May 4, 2016

@xiaoqun2016 ,小群老师好,
按照你说的,我的方案配好以后,确实比以前好用多了。但是,使用久了,还是会发现问题。

1.候选框里面经常出现一些空白的候选字。

如下图所示:
输入回字,出现空白
输入国字,出现空白

2.词频有时候还是不对

不过感觉没有码表格式那么明显了,下面的"讣",怎么会在"生"和"主"前面。
生僻字在常用字前面

3.单独设置某个按键的没设置对

#下面这行功能有了,但是lable好像没有起作用
"preset_keyboards/qwerty/keys/@31": {label: "英", click: Keyboard_default}

帖上我的源码:

#trime.custom.yaml
patch:
#1、新建一個按鍵佈局wubi86_double_key
  "preset_keyboards/wubi86_double_key":  #佈局ID
    author: "boboIqiqi"   #作者
    name: "五笔双键"  #方便自己辨識的名字
    ascii_mode: 0 #默認進入中文狀態
    height: 60   #每行高度
    width: 20   #按鍵默認寬度(取所有按鍵中用得較多的寬度值,接下來就可以少寫一些width了)  
    keys:   #按鍵排列
      #第一行
      - {label: "Q W", click: q, long_click: 1}
      - {label: "E R", click: e, long_click: 2}
      - {label: "T Y", click: t, long_click: 3}
      - {label: "U I", click: u, long_click: 4}
      - {label: "O P", click: o, long_click: 5}

      #第二行
      - {label: "A S", click: a, long_click: 6}
      - {label: "D F", click: d, long_click: 7}
      - {label: "G H", click: g, long_click: 8}
      - {label: "J K", click: j, long_click: 9}
      - {label: "L"  , click: l, long_click: 0}

      #第三行
      - {label: "词" , click: Shift_L, width: 10}
      - {label: "Z"  , click: z, long_click: "@", width: 10}
      - {label: "X C", click: x, long_click: "!"}
      - {label: "V B", click: v, long_click: "?"}
      - {label: "N M", click: n, long_click: "."}
      - {click: BackSpace}

      #第四行
      - {click: Keyboard_symbols, width: 15}
      - {click: Keyboard_qwerty, label: "中", long_click: Menu, width: 10}
      - {click: ",", width: 10}
      - {label: " " , click: space, long_click: VOICE_ASSIST, width: 30} 
      - {click: "。", width: 10}
      - {label: "123", click: Keyboard_number, width: 10}
      - {label: "确定", click: Return, width: 15}

  "style/keyboards":
    - .default
    - default
    - number
    - symbols
    - qwerty

  "preset_keyboards/qwerty/ascii_mode": 1

#下面这行功能有了,但是lable好像没有起作用
  "preset_keyboards/qwerty/keys/@31": {label: "英", click: Keyboard_default}

  "style/candidate_view_height": 36
  "style/round_corner": 0.0
  "style/label_text_size": 18
  "style/comment_height": 14
  "preset_keys/Keyboard_defaultw":   #返回中文键盘
      label: 
      select: .default
      send: Eisu_toggle
  "preset_keys/space":
    functional: false
    label: " "
    repeatable: false  #关掉空格键重复
    send: space
# Rime schema settings
# vim: set sw=2 sts=2 et:
# encoding: utf-8


**文件 wubi86_double_key.yaml , 需要把wubi86.dict.yaml复制重命名**

schema:
  schema_id: wubi86_double_key
  name: "五笔86双键版"
  version: "0.12"
  author:
    - 發明人 王永民先生
  description: |
    五筆字型86版
    碼表源自 ibus-table
    請安裝【袖珍簡化字拼音】以啓用 z 鍵拼音反查

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: extended_charset
    states: [ 通用, 增廣 ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - reverse_lookup_translator
#    - table_translator
    - script_translator

speller:
  delimiter: " ;'"
  max_code_length: 4
  algebra:
    - derive/w/q/
    - derive/r/e/ 
    - derive/y/t/ 
    - derive/i/u/ 
    - derive/p/o/ 

    - derive/s/a/ 
    - derive/f/d/ 
    - derive/h/g/ 
    - derive/k/j/ 

    - derive/c/x/ 
    - derive/b/v/ 
    - derive/m/n/ 

translator:
  dictionary: wubi86_double_key
  enable_charset_filter: true
  enable_encoder: true

reverse_lookup:
  dictionary: pinyin_simp
  prefix: "z"
  tips: 〔拼音〕
  preedit_format:
    - xform/([nljqxy])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

punctuator:
  import_preset: default

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    reverse_lookup: "^z[a-z]*$"

@xiaoqun2016
Copy link
Contributor

1、
回
国
需要hanb_font
2、
生
请仔细看编码。这是script_translator的特性,编码没有精确匹配时就是这么拆分的。前面说过script_translator的造词方式与形码不同,这是最大的问题,你可能还没注意到。除此之外,还有许多细节上的差异。我上面用script只是演示一下两种翻译器对拼写运算的影响,并不是让你直接这么用。请再确认一下:**你要调频吗?**①如果不调频,再优化一下双键的处理方式可以完美解决。②如果要调频,只能速成化。速成会改变词组输入方式。不能接受的话,就不要继续下去了。等九宫格做出来再说。
3、
你没理解副键盘怎么调用。
另外,trime的label只在中文模式显示,西文模式无效。bug?

@osfans
Copy link
Owner

osfans commented May 5, 2016

目前label是中文狀態下的,英文都是用的click的。

@boboIqiqi
Copy link
Collaborator Author

boboIqiqi commented May 6, 2016

@xiaoqun2016 晓群老师,谢谢您的指导。
按照你的答案,我自己查阅了一些资料,不过还是有几个问题没搞明白,得请教您

1.hanb_font是什么意思?

我到网上查了半天,也没有查到,有一个han_font

2. 您说的调频是什么意思?

我不需要自己调频,只要能够按照码表中列出来的频率出现就可以了。其实,现在已经可以了,上面的频率不对,是因为它们不在码表中,然后进行拼写转换。
看指南中说,script_translator 是针对拼音的一种编码翻译,而table_translator是针对码表的一种翻译。我理解,如果码表中存在的编码,两种效果是一样。只是自动造词,或者简拼会有所不同是吗?但是也不对,上面如果解释成简拼,tgt -> tg tgd 生,这是把生当成一个词组了吗?因为它有两个编码tg和tgd都是,然后取第一个编码前tg,再取第二个编码第一个。
也不对呀, lgt -> lg lgn lgnh 车 这是最相近编码是吗?

3.为什么我的输入法没有编码提示?

就是候选词上面那个,每个候选词的编码提示。要设置什么吗?

4.发现码表中有很多空码,可以删去不?

空码

那个 空字符是啥意思呢?我的vim都显示不了。
我可以直接在这里自造词了是不是?它需要排序不?

@xiaoqun2016
Copy link
Contributor

xiaoqun2016 commented May 6, 2016

1、
hanb_font是同文创建的参数,其它地方是没有的。我用谷歌搜索出来的前两项就是同文的页面。

2、
这么说你是要固定词序?
在切分编码这方面,script_translator相当于关闭了enable_completion之后的table_translator。编码精确匹配时优先,切分编码时,也是尽量取完整的编码。这个好难解释,你以后用多了就明白了。

3、
编码提示需要设置。
4、
那些方框不是空码,是你的手机字体不支持,需要fallback字体。
比如hshn,是这个字:
hshn

@boboIqiqi
Copy link
Collaborator Author

boboIqiqi commented May 7, 2016

@xiaoqun2016 小群老师,居然上谷歌。

  1. 我猜你肯定不是党员。
  2. 你是怎么样上的呀,能稍微透露一点点,还有google play
    我以前用gfsoso,然后,最近上面全是广告。等我把我的firefox 配好,加上adblock看看能不能屏掉
    网上也有vpn还有蓝灯什么软件,我没有钱,也不想折腾。就这个gfsoso还比较稳定。但是现在广告多得,完全不能用了。
    不过百度英文确实没法用,我搜github trime,都搜不到我们的主页。连github都准备墙吗?
    还有人推荐 俄罗斯的 https://www.yandex.ru/ 
    我还没学会改语言
    不过bing应该也不错吧,以后就用它了

@xiaoqun2016
Copy link
Contributor

像hanb_font这样纯英文的关键词,几乎没有比谷歌更好的搜索引擎了:
google hanb_font
用对工具就省事了。
毛主席教导我们:一个闭目塞听,同客观外界根本绝缘的人,是无所谓认识的。
😆

@xiaoqun2016
Copy link
Contributor

双键问题要从根本上解决还是得等 #56 九宫格功能实现。(话题重复,先关掉一个)

@zinwalin
Copy link

1、关于词频

dict.yaml中的编码原形是这样:

输入  lwty    233000000
加尔各答    lqtt    180000

经过你的拼写运算处理,衍生出了输入 lqtt这个编码,所以,你可以用lqtt打出这两个词。 你的做法没问题。但是,由于这里用的是table_translator,在固态词典和用户词典中,存储的都是编码原形,当你用衍生码输入时,rime并不会通过衍生码去追溯编码原形的词频,所以,衍生码都是没有词频的输入 lqtt没有词频数据,相当于词频为零了,所以总是排在后面。而且,不管你用lqtt打多少遍输入这个词,用户词典中累加的词频都是算在编码原形输入 lwty上面,这就犹如石沉大海,你用lqtt永远也取不出输入的词频。 不知道你看懂了没?可能我的描述也是不准确的。总之一句话:拼写运算对table_translator支持得不好,或者说是有bug。 如果你觉得这需要解决,可以到librime的github提issue。

或者你可以模仿仓颉的「速成」方案,做一个「五笔速成」,这样就可以避开这个问题了。而且,你做的按键够大,可以用击键数来抵消重码。 (个人观点,仅供参考)

2、英文键盘

既然你的中文键盘上有个中英切换键,那就好解决了。 看看这样: 演示.gif

测试了一下,中文、英文、临时英文这三种模式都正常。 唯一的缺点是只有在键盘中切换到英文模式才有效。 参考补丁:

#trime.custom.yaml
patch:
#1、新建一個按鍵佈局wubi86_double_key
  "preset_keyboards/wubi86_double_key":  #佈局ID
    author: "boboIqiqi"   #作者
    name: "五笔双键"  #方便自己辨識的名字
    ascii_mode: 0 #默認進入中文狀態
    height: 60   #每行高度
    width: 20   #按鍵默認寬度(取所有按鍵中用得較多的寬度值,接下來就可以少寫一些width了)  
    keys:   #按鍵排列
      #第一行
      - {label: "Q W", click: q, long_click: 1}
      - {label: "E R", click: e, long_click: 2}
      - {label: "T Y", click: t, long_click: 3}
      - {label: "U I", click: u, long_click: 4}
      - {label: "O P", click: o, long_click: 5}

      #第二行
      - {label: "A S", click: a, long_click: 6}
      - {label: "D F", click: d, long_click: 7}
      - {label: "G H", click: g, long_click: 8}
      - {label: "J K", click: j, long_click: 9}
      - {label: "L"  , click: l, long_click: 0}

      #第三行
      - {label: "词" , click: Shift_L, width: 10}
      - {label: "Z"  , click: z, long_click: "@", width: 10}
      - {label: "X C", click: x, long_click: "!"}
      - {label: "V B", click: v, long_click: "?"}
      - {label: "N M", click: n, long_click: "."}
      - {click: BackSpace}

      #第四行
      - {click: Keyboard_symbols, width: 15}
      - {click: Keyboard_eng, label: 中, long_click: Menu, width: 10}
      - {click: ",", width: 10}
      - {label: " " , click: space, long_click: VOICE_ASSIST, width: 30} 
      - {click: "。", width: 10}
      - {label: "123", click: Keyboard_number, width: 10}
      - {label: "确定", click: Return, width: 15}
#英文键盘      
  "preset_keyboards/eng":
    name: 26键英文
    author: "osfans <waxaca@163.com>"
    ascii_mode: 1
    width: 10
    height: 60
    keys:
      - {click: 'q', long_click: '!', swipe_up: 1}
      - {click: 'w', long_click: '@', swipe_up: 2}
      - {click: 'e', long_click: '#', swipe_up: 3}
      - {click: 'r', long_click: '$', swipe_up: 4}
      - {click: 't', long_click: '%', swipe_up: 5}
      - {click: 'y', long_click: '^', swipe_up: 6}
      - {click: 'u', long_click: '&', swipe_up: 7}
      - {click: 'i', long_click: '*', swipe_up: 8}
      - {click: 'o', long_click: '(', swipe_up: 9}
      - {click: 'p', long_click: ')', swipe_up: 0}
      - {width: 5}
      - {click: 'a', long_click: '_', swipe_left: Left, swipe_right: Right, swipe_up: Up, swipe_down: Down}
      - {click: 's', long_click: '-', swipe_left: Home, swipe_right: End, swipe_up: Page_Up, swipe_down: Page_Down}
      - {click: 'd', long_click: '+', swipe_down: '_'}
      - {click: 'f', long_click: '=', swipe_down: '='}
      - {click: 'g', long_click: '|', swipe_down: '|'}
      - {click: 'h', long_click: '\', swipe_left: '[', swipe_right: ']'}
      - {click: 'j', long_click: '[', swipe_left: '{', swipe_right: '}'}
      - {click: 'k', long_click: ']'}
      - {click: 'l', long_click: ':'}
      - {width: 5}
      - {click: Shift_L, width: 15}
      - {click: 'z', long_click: '"'}
      - {click: 'x', long_click: '~'}
      - {click: 'c', long_click: "'"}
      - {click: 'v', long_click: 'Time', swipe_up: Date}
      - {click: 'b', long_click: '{'}
      - {click: 'n', long_click: '}'}
      - {click: 'm', long_click: ";"}
      - {click: BackSpace, width: 15}
      - {click: Keyboard_symbols, width: 15}
      - {click: Keyboard_defaultw, long_click: Menu}
      - {click: ',', long_click: '<', paging: Page_Up}
      - {click: space, label: " ", width: 30}
      - {click: '.', long_click: '>', has_menu: Page_Down}
      - {click: '/', long_click: '?'}
      - {click: Return, width: 15}

  "style/keyboards":
    - .default
    - default
    - number
    - symbols
    - eng  #
  "style/candidate_view_height": 36
  "style/round_corner": 0.0
  "style/label_text_size": 18
  "style/comment_height": 14
  "preset_keys/Keyboard_eng":   #切换英文键盘
    label: 中    #按鍵標籤
    send: Eisu_toggle  #執行切換鍵盤命令
    select: eng   #選擇eng鍵盤
  "preset_keys/Keyboard_defaultw":   #返回中文键盘
      label: 
      select: .default
      send: Eisu_toggle
  "preset_keys/space":
    functional: false
    label: " "
    repeatable: false  #关掉空格键重复
    send: space
  "preset_keys/Time":
    command: date
    label: time
    option: "yyyy-MM-dd  HH:mm:ss"  #自定义时间
    send: function

其它细节你可以再调整一下。 另外,上面的动图演示方案,我是直接把schema中的table_translator换成script_translator了,所以虽然也经过了拼写运算,但词频正常。这就是script_translator比较完善的地方。 但是由于造词规则是拼音式的,所以也不太适合形码,需要像速成方案那样调整一下,才有规律。

3、造词

rime有自己的造词方法。 一种是连续打出词组中的每个字,再统一上屏,rime就会预先给词组编码,只要你再用词组码打出并上屏该词,就造好了。 这个造词的最大长度是在dict.yaml中设定的。 另一种是在schema.yaml中设定commit_history,rime可以对已经上屏的几个字预先编制词组码,等你再次打出词组并上屏后,就造好了。这种方法容易产生较多非词干扰项,要慎重使用 。

4、共用词库问题

不需要再复制dict.yaml 只需要给你的拼写运算产生的棱镜文件单独命名即可。(在你的双键schema.yaml中给主翻译器设置prism: wubi86_double_key

一种是连续打出词组中的每个字,再统一上屏。
五笔输入法怎么自动上屏了,怎么能打出每个字再统一上屏?

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

No branches or pull requests

4 participants