osfans / trime

同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android
http://osfans.github.io/trime/
GNU General Public License v3.0
3.14k stars 376 forks source link

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

Closed boboIqiqi closed 8 years ago

boboIqiqi commented 8 years ago

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

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

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

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

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

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

boboIqiqi commented 8 years ago

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

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

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

osfans commented 8 years ago

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

xiaoqun2016 commented 8 years ago

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

boboIqiqi commented 8 years ago

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

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

现在的问题有:

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

还有就是,我写好的方案,该如何提交呀?是要提交到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 commented 8 years ago

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 commented 8 years ago

@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 commented 8 years ago
xiaoqun2016 commented 8 years ago

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

  "preset_keyboards/qwerty/keys/@4/long_click": xxx
boboIqiqi commented 8 years ago

@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 commented 8 years ago

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

osfans commented 8 years ago

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

boboIqiqi commented 8 years ago

@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 commented 8 years ago

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

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

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

boboIqiqi commented 8 years ago

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

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

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

xiaoqun2016 commented 8 years ago

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

zinwalin commented 2 years ago

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

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