前言
自歲寒拼音滑行輸入方案問世以來,我對外的宣傳口徑一直都是“歲寒是雙拼輸入法的變種”,換言之,即歲寒是雙拼的一個子集,他們的關系類似下圖。
雖然有人建議我放棄這種說法,把歲寒宣傳成全拼輸入法的一種,如此更符合使用上的體驗,也不會讓新用戶感覺過于陌生,滋生畏難情緒。畢竟歲寒確實與一般意義上的雙拼有很大的不同,因此上述示意圖并不能恰如其分地描述歲寒和雙拼之間的關系,至少不應該是全包含的關系。但我自問,在設計歲寒輸入法之初,更多從雙拼輸入法中汲取到了思想上的營養,所以我始終將歲寒視作雙拼的一種,大體而言將歲寒視作雙拼的一個子集,并無問題。
眾所不知的是,雙拼是一個相對小眾的輸入方案,很多人可能連雙拼這個名詞都不曾聽說。而歲寒作為雙拼的一個子集,則更是小眾的小眾,這嚴重限制了歲寒輸入法潛在受眾的基數。如何擴大歲寒的受眾面也成為一直困擾我的重點難題。然而盲目地擴張功能以迎合更多用戶需求的做法一直都是我極力反對的,所以我不曾聽從那些讓我加入全拼和九宮格方案之類的建議,我始終在極力避免歲寒輸入法變得四不像,也在避免他泯然如眾人。我相信一個輸入法的發展要秉承一些貫徹始終的理念,具體的功能反而是次要的,但眾多功能背后要傳達的理念才是作品的根本。所以我始終在思考我要堅持的理念究竟為何?
從歲寒輸入法的發展脈絡來看,歲寒輸入法1是滑行+圖形識別+五筆,歲寒輸入法2是滑行+筆畫+五筆,歲寒輸入法3以后的版本是滑行+雙拼。可以看出的是,我想要堅持的并不是筆畫、不是五筆,也不是雙拼,不是某個具體的輸入方案,而是滑行輸入這件事情,我真正想要探問的,是滑行輸入這個新維度究竟能給中文輸入法世界帶來多少及多深的改變?歲寒拼音的基本方案也好,韻母鍵族也好,前置路徑也好,都是在為滑行輸入這個目的服務。所以我也一直在思索,還有什么辦法可以讓歲寒在滑行輸入這件事上做得更好,變得更強。
前置路徑
隨著我思考的加深,我把目光放到了前置路徑身上。在設計前置路徑之初,我對這個工具抱有巨大的期望。前置路徑是對歲寒輸入法已有的方案的繼承和顛覆,因為他賦予了用戶創造一套全新的滑行輸入方案的能力。然而前置路徑推出后,實際效果并沒有我所期待的好。首先,是只有極少數幾名歲寒輸入法愛好者會去開發前置路徑的潛能;其次,是他們所開發出來的新的滑行方案其實用者寥寥,很多使用者可能只是淺嘗輒止,隨后便將這些新方案束之高閣。是這些方案設計得很不好嗎?也不盡然,愛好者們花費心思鼓搗出來的方案必然浸潤他們的細膩心思在其中,一定有其出彩之處。但現實是,但凡有點學習成本,就足以將大多數人拒之門外。我需要為他們尋找破局的鑰匙。我發現一個情理之中的現象,大多數基于前置路徑開發出來的新滑行輸入方案都是對傳統雙拼輸入方案的復刻。遺憾的是,當前的前置路徑并不能完美地復刻傳統的雙拼輸入方案,這迫使設計者不得不采取折衷的做法,結果就是最終被設計出來的方案變成了一個強加上滑行效果的雙拼怪胎方案,即便是原雙拼輸入方案的使用者也不一定能對之提起興致。所以并不是歲寒輸入法的愛好者們不夠有創新精神,終究還是前置路徑這個功能還不夠強。在注意到這一點后,我問自己,既然愛好者如此希望復刻其他雙拼方案,那我何不干脆就賦予他們這種能力?甚至是超越這種能力的東西。
在介紹我如何改進前置路徑之前,讀者需要了解歲寒輸入法中的滑行路徑表示法和前置路徑要如何使用和配置,這里我就不浪費篇幅了,請移步以下參考材料自行閱讀吧。
歲寒滑行路徑表示法
歲寒輸入法的前置路徑功能的使用方法
歲寒配置文件的使用方法
雙拼簡介
在有了上述背景知識之后,我需要簡單介紹一下雙拼的背景知識。傳統的雙拼方案的輸入思路是基于分時復用鍵盤鍵位實現的,我們可以簡單的認為奇數次擊鍵輸入為聲母,而偶數次擊鍵輸入為韻母。但分時復用其實不夠,因為在雙拼體系下,漢語拼音會被簡單地拆分成聲母和韻母兩部分,聲母的數量是23個,韻母的數量則是33個。眾所周知,英文只有26個字母,我們當然可以輕易地將23個聲母分配到26個鍵位上,但我們又該如何將33個韻母分配到26個鍵位上的呢?這不是還差7個鍵位嗎?有的雙拼方案會把;號鍵也利用上,但那也差了6個鍵位。把更多的非字母鍵位利用起來自然能解決問題,但顯然這個解決方案并不優雅,實際上大多數雙拼輸入法也沒有這么做的。那他們是怎么做的?這就要利用漢語拼音的另一個特點了——聲母和韻母并不是可以任意組合的。也就是說,某些聲母和某些韻母的組合在漢語拼音下是非法的,比如giao這個拼音就是沒有的,雖然我們可以發這個音,但漢語里并沒有與之對應的漢字,所以這個拼音是非法的。諸如此類的拼音還有很多,有些韻母之間甚至是互斥的,它們沒有相同的可與之組合的聲母。利用這一點,我們就可以讓一部分存在互斥關系的韻母共享一個鍵位,從而將33個韻母分配到26個甚至更少的鍵位上。當我們點擊一個存在韻母共享的鍵位時,輸入法需要根據已經輸入的聲母來判斷這個鍵位的實際釋義。只要前置路徑能夠將上述的過程模擬出來,前置路徑功能就具備完美復刻任何一款雙拼輸入法的能力。看到這里,不知道你是否已經猜到了我想做什么——我要給前置路徑功能加上條件判斷的能力。
帶條件的前置路徑
前置路徑表示法
我將此前的前置路徑的形式稱為無條件的前置路徑;
下面引入一個擴展后的表達形式,稱為帶條件的前置路徑。
與此前的前置路徑格式的區別就是在左邊加上條件和:,并且在帶條件時,要求最右邊的輸入部分可以是聲母、韻母或者韻母的前綴,但不能是由聲母和韻母組成的拼音。
條件的組成與要求
條件部分可以由以下要素組成:
- 任一聲母
b p m f d t n l ɡ k h j q x zh ch sh r z c s y w
和零聲母(用數字0
表示,關于零聲母下文會詳細講解)
解釋:當條件聲明為聲母時,表示當前輸入位置上存在且僅存在所聲明的聲母時,將指定路徑接受為指定的聲母或韻母,并輸入到當前的輸入位置上;示例如:
s:a=ang
//該式表示當當前輸入位置為s時,點擊a,
//在當前輸入位置上輸入ang,當前輸入位置將變為sang;
(該條件的解釋在拼音替入時存在例外,在優先級一節中介紹)
- 任一韻母或任一韻母的前綴;韻母的數量有點多,這里就不一一列舉了。那什么是韻母的前綴呢?韻母的前綴就是由合法韻母從左到右若干個字母組成的字符串,即便不是合法的韻母也可以,如:iong的前綴:io、ion;
解釋:當條件聲明為韻母或韻母的前綴時,表示當前輸入位置上存在且僅存在所聲明的韻母或韻母的前綴時,將指定路徑接受為指定的聲母或韻母,并輸入到當前的輸入位置上;示例如:
a:n=an
//該式表示當當前輸入位置為a時,點擊n,
//在當前輸入位置上輸入an,當前輸入位置將變為an;
- 下劃線+任一韻母或下劃線+任一韻母的前綴,以an為例,則形如
_an
;這里下劃線表示韻母的左側有聲母(這里的聲母包括零聲母);
解釋:當條件聲明為下劃線+任一韻母或下劃線+任一韻母的前綴時,表示當前輸入位置上存在所聲明的韻母或韻母的前綴,且存在任一聲母,如所指定的輸入為聲母時,則將指定路徑接受為該聲母,并輸入到當前的輸入位置上;如所指定的輸入為韻母且該韻母能與已存在的聲母匹配時,則將指定路徑接受為該韻母,并輸入到當前的輸入位置上;示例如:
_a:n=an
//該式表示當當前輸入位置為形如xa的輸入時,
//其中x表示任一聲母,比如sa,點擊n,
//由于an能與s匹配,因此在當前輸入位置上輸入an,
//當前輸入位置將變為san;
優先級
前置路徑之所以被我命名為前置路徑,就是因為前置路徑的優先級高于鍵位自帶的鍵義,即當前置路徑被觸發時會覆蓋鍵位本身的輸入;
那現在前置路徑有了無條件和帶條件之分,為了避免歧義,需要對他們的優先級明確:帶條件的前置路徑優先于無條件的前置路徑。即當帶條件的前置路徑和無條件的前置路徑都被滿足時,帶條件的前置路徑被觸發,無條件前置路徑不被觸發;之所以如此規定,是因為如果無條件的前置路徑優先級更高的話,則帶條件的前置路徑將無被觸發的可能。
在拼音替入操作中,允許聲母條件在有韻母時被觸發,這是聲母條件的例外情況。因此聲母條件和下劃線+韻母條件就可能存在沖突。
當帶條件的前置路徑中條件存在沖突時,下劃線+韻母條件優于聲母條件,即當下劃線+韻母條件和聲母條件同時被滿足時,下劃線+韻母條件被觸發,聲母條件不被觸發。下劃線+韻母條件和韻母條件在理論上不會發生沖突,因此他們是平級的。
優先級總結:
下劃線+韻母條件前置路徑=韻母條件前置路徑>聲母條件前置路徑>無條件前置路徑>鍵位自帶鍵義
語法糖
- 條件的簡寫
為了便于描述多個條件下的同一路徑的同一輸入,允許在一條表達式中,用/分隔多個條件,如:
s/c/z/sh/ch/zh:a=ang
//該式表示當當前輸入位置為s、c、z、sh、ch或zh時,點擊a,
//在當前輸入位置上輸入ang;
- 反選聲母的寫法
當聲母條件較多時,為了縮短條件列表,允許在需要排除的聲母條件最前面添加~,表示選擇所列出來的聲母之外的其他所有聲母作為條件,如:
~s/c/z/sh/ch/zh:a=ang
//該式表示當當前輸入位置為s、c、z、sh、ch或zh之外的其他聲母時,點擊a,
//在當前輸入位置上輸入ang;
最極端的例子是全選所有聲母:
~:a=ang
//該式表示當當前輸入位置存在聲母時,點擊a,
//在當前輸入位置上輸入ang;
注意:反選寫法僅適用于反選聲母,不適用于反選韻母,列在反選條件列表的韻母條件將被忽略;換言之,韻母條件只能使用正選寫法;有的小朋友可能會問,為什么韻母就不提供反選呢?因為我經過審慎思考認為,韻母條件他用不著反選。當然,如果有人能向我證明,韻母條件也存在需要反選的場景,我可以考慮加入。
雙拼方案實踐
前面我已完成了對帶條件的前置路徑功能的介紹,但顯然這部分的文字表述有點多,對大部分讀者來說,看完可能感覺有點暈頭轉向,為了便于直觀地認識帶條件前置路徑的工作方式,下面我拿自然碼雙拼方案來演示一下如何使用帶條件的前置路徑功能來復刻他。
自然碼方案
這里是自然碼的鍵位表
有了這個鍵位表,我們就知道應該如何撰寫表達式。這里我拿一個鍵位舉例,比如鍵位s:
這個鍵位涉及兩個韻母,一個是iong,一個是ong;
以iong為例,由于能與iong結合的聲母只有j/q/x,因此表達式的寫法是:j/q/x:s=iong
;
以ong為例,能與ong結合的聲母比較多,有ch/zh/c/d/g/h/k/l/n/r/s/t/y/z,因此表達式的寫法是:ch/zh/c/d/g/h/k/l/n/r/s/t/y/z:s=ong
,用反選寫法則是:~sh/b/f/j/m/p/q/w/x/0:s=ong
;
依次類推,我們便可以將自然碼翻譯的帶條件的前置路徑表示。
自然碼中的特殊情況
在自然碼中zh/ch/sh被分別映射到了v/i/u鍵上,因此我們需要這樣寫:
i=ch
u=sh
v=zh
此外,在自然碼中,為了維持兩鍵一字的原則,在當一個字沒有聲母時,用以下幾個規則:
- 單字母韻母a,o,e重復按兩次。如:a → aa,等。
- 雙字母韻母an,en,ou等不變,直接輸入。
- 三字母韻母ang,eng,重復第一個字母。如:ang → ah (雙拼 h = ang)
我們一條一條來看:
- 單字母韻母a,o,e重復按兩次。如:a → aa,等。
對于這種情況,我們可以這么寫:
a:a=a
o:o=o
e:e=e
- 雙字母韻母an,en,ou等不變,直接輸入。
對于這種情況,我們可以這么寫:
a:n=an
e:r=er
e:n=en
o:u=ou
a:o=ao
a:i=ai
e:i=ei
- 三字母韻母ang,eng,重復第一個字母。如:ang → ah (雙拼 h = ang)
a:h=ang
e:g=eng
以上,就是自然碼下帶條件的前置路徑的所有寫法。整理之后,應該是下面這個樣子:
~0:u=u
sh/zh/g/h/k:w=ua
~b/f/j/l/n/m/p/q/w/x/y/0:v=ui
j/l/n/q/x/y:t=ue
~b/f/j/m/p/q/w/x/y/0:o=uo
~b/f/n/m/p/w/0:p=un
sh/ch/zh/g/h/k:y=uai
~b/f/m/p/w/0:r=uan
sh/ch/zh/g/h/k:d=uang
l/n:v=v
~f/g/h/k/w/0:i=i
d/j/l/q/x:w=ia
b/d/j/l/n/m/p/q/t/x:x=ie
b/j/l/n/m/p/q/x/y:n=in
d/j/l/n/m/q/x:q=iu
b/d/j/l/n/m/p/q/t/x/y:y=ing
b/d/j/l/n/m/p/q/t/x:m=ian
b/d/j/l/n/m/p/q/t/x:c=iao
j/l/n/q/x:d=iang
j/q/x:s=iong
~j/q/r/x:a=a
~f/j/q/r/x/y:l=ai
~j/q/x:j=an
~f/j/q/w/x:k=ao
~j/q/x:h=ang
~b/f/j/p/q/w/x:e=e
~ch/zh/c/j/q/r/s/t/x/y:z=ei
~d/j/l/q/t/x/y:f=en
~j/q/x/y/0:g=eng
b/f/m/p/w/y/0:o=o
~b/j/q/w/x:b=ou
~sh/b/f/j/m/p/q/w/x/0:s=ong
i=ch
u=sh
v=zh
a:a=a
o:o=o
e:e=e
a:n=an
e:r=er
e:n=en
o:u=ou
a:o=ao
a:i=ai
e:i=ei
a:h=ang
e:g=eng
上述表達式中,為了使表示式不會過于冗長,針對不同的韻母,我取了正向選擇寫法和反向選擇寫法中較短的那種。
你可能會說:我寫一條表達式,還得把聲母和韻母的匹配關系全找出來,這也太麻煩了吧。這一點其實不必擔心,因為聲母和韻母的匹配關系是固定的,屆時我會將完整的自然碼方案的配置上傳到在線配置上,這個配置就能體現所有的聲母和韻母的匹配關系,你只需要根據你所需要的雙拼方案的實際鍵位關系對這個配置進行修改即可;
針對拼音替入的優化
有了上述的配置,我們就可以在鍵盤上健步如飛地使用自然碼進行輸入了。但是如果我們現在想使用拼音替入,會發現由于帶條件的前置路徑的作用,輸入的鍵位總是會受聲母條件的影響被解釋成韻母,這導致我們無法對已輸入的聲母進行替換。
為了歲寒輸入法上的拼音替入功能能夠更好地工作,還需要添加一些額外的表達式。這里我添加了每個鍵位的下滑路徑為相應聲母的無條件前置路徑:
b4=b
c4=c
d4=d
f4=f
g4=g
h4=h
j4=j
k4=k
l4=l
n4=n
m4=m
p4=p
q4=q
r4=r
s4=s
t4=t
w4=w
x4=x
y4=y
z4=z
04=0
i4/i44=ch
u4/u44=sh
v4/v44=zh
其中,i44
、u44
和v44
是為了防止用戶滑行過頭,導致誤輸入而加入的防御性操作,其他表達式之所以不加,是因為用戶就算滑行過頭,輸入法會使用鍵位自帶的鍵義作為輸入,由此得到結果是一樣的。
如此一來,當我們進行替入時,只要從相應的鍵位上下滑,就可以精準地替換掉想替換的聲母。至于為什么要使用下滑而不是其他方向的路徑,原因很簡單,就是只有下滑這個方向是每個明鍵位都有的方向:最上面一行鍵位無法上滑,最左邊的一列鍵位無法左滑,最右邊的一列鍵位無法右滑,而最下面一行的鍵位由于還墊著一行操作鍵,有一行暗鍵位可供觸發,下滑對于任何明鍵位都可以觸發。
自此,我們已經能在歲寒拼音鍵盤上使用任意雙拼輸入方案了,并且能夠愉快地使用既有的拼音替入、筆畫篩選、截斷優先、歷史回溯等歲寒的特色功能。什么?你說歲寒拼音鍵盤用雙拼不香!那用什么香?要用qwerty鍵盤才香!我告訴你!我,歲寒,就是死,就是從這里跳下去,也不會往歲寒輸入法里加入……
給你你想要的真香
既然我們已經走上了復刻雙拼方案的這條路,那固執與歲寒拼音的鍵位布局,讓鍵位布局的因素影響到復刻最后的體驗,是沒有道理的,因此,我在引入帶條件的前置路徑的同時,還引入了qwerty布局。
但需要事先聲明的是,在qwerty布局下,歲寒的拼音滑行方案是無法工作的。所以單純打開qwerty布局并不能正常使用,需要配合具體的前置路徑方案。
歲寒對qwerty布局的改進
想要讓前置路徑功能能夠在qwerty布局上良好的工作,完全照搬常規的qwerty布局也不行,一些必要的調整不能少。這里,我將qwerty布局放到了3*10的規整布局中,效果如下:
由于部分雙拼方案會使用到分號鍵,本來我是因為把這個鍵位也加上的。但我認為在已經有浮出子鍵盤的前提下,放一個分號鍵到鍵盤中幾乎沒有意義,于是我換了一個鍵值。眼睛尖的小朋友可能已經發現了,就是在一般放分號鍵的位置上居然放了一個0
。不錯,這里的0
正是數字0
本0
,但這個鍵位不是用于輸入數字0
的,而是作為零聲母的輸入鍵。
歲寒輸入法的愛好者可能才知道,在歲寒輸入法中有一個叫虛聲母的概念。這個概念是這樣的,歲寒輸入法認為所有漢語拼音都有聲母,當然,官方制定的漢語拼音方案并非如此,所以小朋友們在考試的時候千萬不要把這個觀點寫到試卷上,否則被老師打板子可別找我,事先聲明啊。好,我們繼續,既然歲寒輸入法認為所有漢語拼音都有聲母,原本就有聲母的拼音還好說,那些實際上沒有聲母的拼音怎么辦?歲寒輸入法假設這些拼音里存在一個起到聲母作用,但無法被輸入的聲母,這個聲母我稱作虛聲母。有了這個假設,歲寒輸入法便能做到省略聲母。
現在,歲寒輸入法干脆就將這個虛聲母實例化,用0
來代表這個聲母。也就是說,虛聲母現在是可以被輸入的,為了以示區別,我借用了雙拼方案里的說法,將其稱為零聲母。如果覺得不是很好理解,我舉個例子,在歲寒輸入法中,an
不是an這個拼音的完整輸入,而是被看作一個省略聲母的輸入,an的完整輸入應該是0an
。如今的零聲母和此前的虛聲母本質上沒有區別,只不過以前的虛聲母不可以輸入,現在的零聲母可以。而且在某些雙拼方案中,我們確實需要一個能夠表示零聲母的符號。
助記功能
不少雙拼用戶在實際使用中少不了助記功能,這個新版本也提供了支持。比如我就在自然碼的方案加入了該方案的相關助記:
助記功能的具體配置方法相對簡單,這里就不贅述了,需要的朋友請參考歲寒配置文件的使用方法。
全拼實踐
標題說要一統雙拼和全拼,這會把講完雙拼,自然就輪到全拼了。
全拼的輸入規則想必大家都清楚,我就不多贅述了,下面分情況和大家介紹如何用前置路徑進行表示吧。
- 表示zh/ch/sh:
z:h=zh
c:h=ch
s:h=sh
- 表示長韻母,以uang為例:
u/_u:a=ua
ua/_ua:n=uan
uan/_uan:g=uang
可以看到,這里相當于是將韻母的變化情況用帶條件的前置路徑描述出來。uang屬于所有前綴都是合法韻母的情況,但同時也存在一些韻母前綴不都是合法韻母的情況,比如iong。但沒有關系,帶條件的前置路徑一樣可以描述:
i/_i:o=io
io/_io:n=ion
ion/_ion:g=iong
前面兩個例子中都是韻母條件和下劃線+韻母條件的情況,但并不是非得這么寫不可的,這么寫只是在不影響實際使用的前提下加入的方便輸入,考慮到io、ion、iong一般不會省略聲母,所以寫成:
_i:o=io
_io:n=ion
_ion:g=iong
也是對的。
以此類推,我們就可以得到全拼的前置路徑表示:
z:h=zh
c:h=ch
s:h=sh
a/_a:n=an
an/_an:g=ang
a/_a:i=ai
a/_a:o=ao
o/_o:n=on
on/_on:g=ong
o/_o:u=ou
e/_e:n=en
en/_en:g=eng
e/_e:i=ei
e/_e:r=er
i/_i:n=in
in/_in:g=ing
i/_i:a=ia
ia/_ia:o=iao
ia/_ia:n=ian
ian/_ian:g=iang
i/_i:e=ie
i/_i:o=io
io/_io:n=ion
ion/_ion:g=iong
i/_i:u=iu
u/_u:n=un
u/_u:a=ua
ua/_ua:n=uan
ua/_ua:i=uai
uan/_uan:g=uang
u/_u:o=uo
u/_u:e=ue
u/_u:i=ui
v/_v:e=ue
b4=b
c4=c
d4=d
f4=f
g4=g
h4=h
j4=j
k4=k
l4=l
n4=n
m4=m
p4=p
q4=q
r4=r
s4=s
t4=t
w4=w
x4=x
y4=y
z4=z
04=0
i4/i44=ch
u4/u44=sh
v4/v44=zh
與雙拼類似的,我加入了下滑輸入聲母的前置路徑,同樣是為了優化拼音替入效果。
現在我們就可以在歲寒上使用全拼輸入方案了。同樣的,我們在使用的全拼的同時,也可以享受到歲寒輸入法的各種特色功能,如筆畫篩選(加形可能就不是很有必要了)、拼音替入、截斷優先、歷史回溯等等。
但這個實現方案下的全拼存在一個瑕疵,就是在輸入n或g時,可能出現前一個拼音將n或g“奪走”的情況。比如我們想要輸入“可能”的拼音,按拼音順序輸入是“keneng”,此時,歲寒輸入法會識別得到“ken'eng”,而不是一般全拼輸入法的“ke'neng”。這是因為這種組合本身是存在歧義的,一般的全拼輸入法會根據拼音頻率選擇更常見的“ke'neng”。而歲寒是按順序接受輸入的,考慮到路徑n和韻母條件e滿足帶條件的前置路徑表達式:e/_e:n=en
,而k又正好能與en匹配,從而觸發了表達式,所以這種結果本身是沒有毛病的,只是與我們日常的使用習慣不太相符。那這種情況要如何解決呢?方法是在可能出現這種情況的地方使用下滑輸入n或g,這樣就可以避免觸發e/_e:n=en
表達式。我知道這種建議有點類似與蘋果公司建議用戶換一種手機持握方式,此種情形的存在其實是歲寒輸入法的設計邏輯和全拼拼音方案不相契合導致的,因為歲寒是拒絕歧義的,而全拼卻又不可避免的存在歧義。如果可能的話,我會引入一些機制來糾正這種情況。
使用全拼時的建議
如果使用全拼輸入方案的話,可以在輸入設置中將刪除鍵的操作改為以字母為刪除單位,這樣會更加符合全拼下的實際使用習慣。
寫在最后
帶條件的前置路徑功能自此已介紹完畢。歲寒輸入法通過帶條件的前置路徑功能將雙拼輸入方案和全拼輸入方案收到了麾下,在一套體系下一統了歲寒拼音、全拼和雙拼方案。據我所知,還有人在探索諸如三拼方案之類的拼音方案,而類似的方案也能通過帶條件的前置路徑實現。從某種意義上,歲寒輸入法已徹底進化為一個平臺化的輸入法,是拼音輸入方案的一個超集。
用戶可以通過導入相應的配置文件來獲得與之高度契合的體驗,此外也能享受到歲寒輸入法種種獨特功能,這就達成了一種效果——方案之間各有特色,但操作上又彼此統一。
如果您覺得歲寒的帶條件的前置路徑確實不錯的話,請將“歲寒,YES”打在討論區。感謝您的支持。