台灣特有的注音亂碼 su3cl3a87:你還在自己切換中英文嗎?
忘了切換輸入法,「你好嗎」變成 su3cl3a87。這篇談為什麼「記得先切換」永遠會忘,以及有沒有不用切的辦法。
su3cl3a87
你認得這串東西,因為你打過。輸入法還停在英文,你想寫的「你好嗎」變成九個字元原封不動送進文件裡,要退九下才刪得乾淨。打的是一整句中文的話,那就是幾十下。
反過來也會發生,只是好救一點。忘了切成英文,hello 打出來是一串注音符號;不過注音一次只組一個音節,後面的會蓋掉前面的,五個鍵打完畫面上只剩 ㄍㄟ,退兩下就沒了。
問題不是不知道要切
處理這件事的標準答案是:打英文之前按 Caps Lock 或切到 ABC,打完再切回來。
沒有人不知道這件事。是你打字的時候正在想句子怎麼寫,不是在想現在是哪個模式。而且切換是雙向的,切過去會忘,切回來也會忘,忘了切回中文,就是開頭那串 su3cl3a87。
現在的工作內容又特別容易踩到,一句話裡夾產品名稱、技術名詞、專案代號、同事的英文名字:
今天 review onboarding flow,下午再跟 Jason 確認 API 文件。
這句話不長,用傳統方式打完要切換四次。
還有全形這一種
Mac 注音輸入法還會在另一個地方咬你一口。字元是對的,寬度不對:
100% ABC
規則是這樣:在注音狀態下按住 Shift 打數字或標點,出來的是全形。 你想打 100%,按 Shift 打 %,得到的是 %。英文字母也有對應的全形版本,ABC 會變成 ABC。想要半形就得切回英文輸入法再打,打完再切回來,於是又多一次切換。
全形字元在中文排版裡看起來還好,貼進網址列、表單欄位或程式碼就會出事。系統認不得它們,肉眼又很難第一時間看出差別,通常要等到送出失敗才發現是寬度的問題。
不用切的辦法
讓輸入法自己判斷。這是我做 ZingIME 晶晶輸入法的原因。
判斷的依據是注音有規則,不是任何一串符號都能成字。台灣通用的大千鍵盤把每顆字母鍵對到一個注音符號,hello 的前兩個鍵是這樣:
| 你按的鍵 | 對到的注音 |
|---|---|
h | ㄘ |
e | ㄍ |
ㄘ 和 ㄍ 都是聲母,中文沒有兩個聲母連在一起的音節。所以打到第二個字母,輸入法已經可以確定這串按鍵不是中文,後面你怎麼打都當英文處理。
不確定的時候就兩條路都留著。例如 su,它可以是 ㄋㄧ(接個聲調就是「你」),也可以是 such、sure、sunday 的開頭:
決定權留給下一個按鍵:
- 按聲調鍵(
3467或空白)→ 你要中文,出候選字。 - 按
Tab→ 你要英文,接受上面那個預測。 - 繼續打 → 注音走到不可能成字的那一刻,下行自己消失,只剩英文。
qu 時兩條路都還通(ㄆㄧ 可以是「批」),所以英文預測留在上面;按 Tab 就等於選了英文那條全形那條也一起處理掉了。英文和數字後面的標點自動用半形,中文情境維持全形,你不需要記得現在該是哪一種。真的想要鍵盤上印的那個字元本身,按住 Option 再按那顆鍵就是了,不必為了一個 % 切兩次輸入法。
最後
su3cl3a87 不是嚴重的錯誤,刪掉重打就好。它煩的地方在於次數:一件三五秒的事,一天幾十次,而且每一次都打斷你正在想的那句話。
輸入法本來就看得到你按的每一顆鍵。你按了 h 然後按 e,它其實有足夠的資訊知道這不可能是中文。既然如此,為什麼還要你先告訴它?
這件事講再多都不如自己打一句試試看。ZingIME 有 14 天完整試用,拿你今天真的要寫的訊息去打,一分鐘就知道合不合用。