Tangent 的部落格

有關 CharaChorder 和 Forge 的筆記和文章

前言

這份筆記收集了很多有關 CharaChorder 的秘訣。大部分是收集自 CharaChorder Discord 伺服器。

事前準備

在等待你的輸入裝置送達前能做的事情

你可以參考我關於學習英打逐字輸入的文章中的「記憶鍵盤佈局(無需輸入裝置)」章節

CC1/2 的使用姿勢

關於在 CC1 和 CC2 上建議的使用姿勢,你可以參考這支影片

按鍵

搜尋某個按鍵的位置

你可以用我開發的 Alnitak 參宿一上的佈局檢視器來搜尋按鍵。點擊右上角的放大鏡按鈕,輸入按鍵名稱或者字元後,點選其中一個搜尋結果。佈局檢視器會在佈局圖上點亮那個按鍵。

佈局檢視器預設是顯示 CC1/CC2 上的預設佈局。如果你是用 Master Forge,你可以在設定頁面中變更佈局設定。

符號鍵

一些符號可能比較難打出來,因為你需要按住 Num-Shift 和 Shift 鍵。你可以將這些鍵改到比較容易打的位置。舉例來說,你可以把數字層的半邊的數字鍵改成對應的符號鍵。

image

換層和鎖層鍵

每個層有其對應的層動作。你可以將這些動作設定在任何鍵上,以在不同層之間切換。它們經常以帶圓圈的數字來表示,如 ①、②、③。

根據你在目標層上的同一位置設定的動作,這個鍵的行為會有所不同。

底下的範例都假設目標層是 A2。

換層鍵

---
displayMode: compact
---
gantt
    dateFormat X
    axisFormat %s
    tickInterval 1day
    title 換層鍵 ( A1: ② | A2: ② )
    section ㅤ
    按下: milestone, done, 1, 1
    放開: milestone, done, 2, 2
    按下: milestone, done, 3, 3
    放開: milestone, done, 4, 4
    section ㅤㅤ
    A1: 0, 1s
    A2: active, 1, 1s
    A1: 2, 1s
    A2: active, 3, 1s
    A1: 4, 1s

第一種是換層鍵。舉例來說,A1 和 A2 層上的這個鍵的設定動作都是 A2 層,即 ②。

在預設佈局上的就是這種。它們的行為類似標準鍵盤上的換檔(Shift)鍵。當你按下它時,裝置會切換到目標層,放開時就會回到主要層。

單向鎖層鍵

---
displayMode: compact
---
gantt
    dateFormat X
    axisFormat %s
    title 單向鎖層鍵 ( A1: ② | A2: 除了層動作以外的任何動作 )
    section ㅤ
    按下: milestone, done, 1, 1
    放開: milestone, done, 2, 2
    按下: milestone, done, 3, 3
    放開: milestone, done, 4, 4
    tickInterval 1day
    section ㅤㅤ
    A1: 0, 1
    A2: active, 1, 5

第二種是單向鎖層鍵。舉例來說,這個鍵在 A1 上的動作為 ②,但在 A2 上是層動作以外的任何動作。

這種鍵的行為像是標準鍵盤上的大寫鎖定(Caps Lock)鍵,但是只有單向。當你按下它時,裝置會切換到目標層,但放開或者再次按下它時,並不會切換層。

雙向鎖層鍵

---
displayMode: compact
---
gantt
    dateFormat X
    axisFormat %s
    title 雙向鎖層鍵 ( A1: ② | A2: ① )
    section ㅤ
    按下: milestone, done, 1, 1
    放開: milestone, done, 2, 2
    按下: milestone, done, 3, 3
    放開: milestone, done, 4, 4
    tickInterval 1day
    section ㅤㅤ
    A1: 0, 1s
    A2: active, 1, 2s
    A1: 3, 2s

最後一種是雙向鎖層鍵。舉例來說,這個鍵在 A1 上的動作為 ②、在 A2 上的動作為 ①。

這種鍵的行為像是標準鍵盤上的大寫鎖定(Caps Lock)鍵。當你按下它時,裝置會切換到目標層,再次按下它時,會切回主要層。

實用的快捷鍵

這邊有一些在打字時實用的快捷鍵。

WindowsMac
將游標移到前一個英文單字ctrl + ⬅️option + ⬅️
將游標移到下一個英文單字ctrl + ➡️option + ➡️
將游標移到這一行的最前面homecmd + ⬅️
將游標移到這一行的最後面endcmd + ➡️
刪除在游標左邊的英文單字ctrl + backspaceoption + backspace
刪除在這一行,在游標位置之前的所有字元cmd + backspace

逐字輸入

學習

你可以參考我關於學習英打逐字輸入的文章

交替使用空白鍵

在 CC 3D 輸入裝置的預設佈局上,有兩個空白鍵。一些使用者會交替使用它們來提升打字速度。更多細節可以參考這個舊 Wiki 頁面中的 “Tech: Using both space keys” 章節

避免重複字元問題

當你遇到不預期的重複字元問題時,可以試著在打字時只輕彈每個鍵,來避免按鍵被按壓的時間過長的問題。如果問題還是存在,可以考慮調高「按壓和放開按鍵的防抖時間設定」

和弦輸入

KSC_00

當一個和弦的輸出有 “KSC_00 - No key pressed” 這個操作時,CC 裝置將不會自動在這個和弦的輸出的結尾加上空白字元。所以加上這個和弦可以避免這些自動空白字元在一些情況下造成的問題,比如在使用輸入法時。

輸入為兩個字母的和弦

輸入為兩個字母的和弦,特別是那兩個字母剛好是常用的二元組時,會很容易在你逐字輸入時誤觸。很多使用者都建議避免。

功能性和弦

CC 裝置中有一些你可以用的功能和弦。這些和弦不在內建的和弦庫中,但你可以從裝置管理工具的 Library 分頁中載入它們

功能性和弦包含:

  • 重複 X 次操作:多次按下一個鍵(刪除、退位或方向鍵)
  • 游標瞬移:打出一對符號(例如括號)後,將游標移到它們中間
  • Caps Lock
  • 退位一個字元,接著打出 !: 後,再打出一個空白字元

當和弦太難時可以試的方式

當你發現一個和弦對你來說太困難時,這邊是一些你可以試的方法:

  1. 使用和弦時間診斷工具來檢查你的按哪一些按鍵的時間太慢,並調整你的動作,直到你可以穩定地成功使用那個和弦。
  2. 使用 Spurring 模式。
  3. 當你覺得一個和弦的按鍵組合對你的手來說太困難,你可以對一樣的輸出,新增一個較簡單的和弦。舉例來說,你可以把其中的一個鍵替換成跟它位置對稱的鍵,比如把 c 鍵換成 d 鍵。
  4. 當你對很多和弦都有使用上的困難時,你可以嘗試調高按壓和放開的容許時間

避免在使用和弦時會刪除一些前面的字元的問題

不預期的字元刪除問題會在逐字輸入和和弦輸入的間隔時間太短的時候。這會使 CC 裝置誤將前面打的字視為失敗的和弦輸入嘗試,而產生比預期更多的退位鍵擊。

特別是當你在 Vim 中進入輸入模式後立刻就使用和弦的時候會發生。

有一些方法可以避免:

對角按壓(和弦的輸入有多個按鍵在同一個搖桿上)

關於對角按壓的操作說明,可以參考這個影片。如果你試過仍然覺得很困難,你可以修改和弦的輸入。舉例來說,你可以把其中的一個鍵替換成跟它位置對稱的鍵,比如把 c 鍵換成 d 鍵。

避免和弦衝突

在 CC 裝置上同時不能有兩個和弦有一樣的輸入。對一些有相同字母集合的單字,如 arttarrat,你可以對和弦輸入添加其他的按鍵,如 Alt'Dup 鍵,來使它們有不同的和弦輸入。

滑鼠

改變滑鼠速度

CC 裝置有四種滑鼠速度。

  1. 快滑鼠:將兩個滑鼠搖桿往同方向推
  2. 中快滑鼠:按住 Num-shift 鍵下,將兩個滑鼠搖桿往同方向推
  3. 慢滑鼠:將一個滑鼠搖桿往任一個方向推
  4. 極慢滑鼠:按住 Num-shift 鍵下,將一個滑鼠搖桿往任一個方向推

你可以在裝置管理工具GTM 上變更滑鼠速度。

其他

Mac 的辨識鍵盤對話框

當第一次把你的 CC 裝置連到 Mac 電腦上時,Mac 會嘗試辨識你的鍵盤類型。它會彈出一個對話框,要你按下空白鍵旁的 Shift 鍵等。你可以直接關掉這個對話框,CC 裝置應能正常運作。

使用其他語言或佈局

如果你想在 QWERTY-US 以外的其他作業系統鍵盤佈局下用 CC 3D 輸入裝置,或是用它來輸入英文以外的語言,你可以參考我寫的相關文章

我也有開發了一個佈局檢視器來檢視 CC 3D 輸入裝置在不同作業系統鍵盤佈局下的最終輸出字元。它預設是顯示 CC1 / CC2 上的預設佈局,你可以在設定頁面改成 Master Forge (M4G) 的預設佈局。

其他網站上的秘訣清單

影片

文件

前言

TanChord Code Library (TCCL) 語言是一個在 TanChord Code (TC Code) 用來描述和弦庫的語言。這份參考文件將會解釋它的語法。

建議先讀過 CharaChorder 官方文件中的和弦頁面並理解其中的和弦、和弦輸入、和弦輸出、及和弦表示法後,再來讀這份參考文件。

按鍵表示法

組成和弦輸入和輸出的最基本元素就是按鍵。在這個章節中,我將解釋要如何在 TCCL 中描述按鍵。

對於英文字母(含大小寫)、數字、和一些有支援到的符號,你可以直接用該字元來表示在 QWERTY 作業系統佈局對應的按鍵(或者說是 CCOS 上對應的操作碼)。舉例來說,b 就是 b 鍵、2 就是 2 鍵、/ 就是 / 鍵。

在和弦輸出中,空白字元就是右空白鍵,但你不能在和弦輸入使用這個字元。

而其他按鍵或操作,你可以把對應的 CCOS 操作碼的編號,用角括號包起來,來表示它們。舉例來說,<558> 就是啟動一個動態和弦庫的操作,而 <559> 就是返回基底和弦庫的操作。

下面表列出這些按鍵,供參考用。

按鍵類型語法範例備註
字母鍵[a-zA-Z]a, A, b
數字鍵[0-9]1, 2, 3
符號鍵[, ], ., /, -[, -
(右)空白鍵 只能用在和弦輸出。
操作碼<操作碼編號><558>, <559>

和弦表示法

接下來,我們要學習如何描述和弦。

首先,我們來看一個簡單的例子。這是一個輸入為 b 和 c 按鍵、輸出為 because 的和弦。

1
b + c = because

CharaChorder 官方文件定義的和弦表示法一樣,我們用 + 來分隔輸入的按鍵們、用 = 來分隔輸出和輸入。在 += 兩旁的空白字元是必要的,這樣可讀性比較好,也比較好被解析。和弦輸出就是沒有分隔符號的一串按鍵。

所以一個和弦的通用語法可以描述為:

1
K + K + ... = KK...

你可以把其中的任何 K 換成任何上面定義的按鍵表示法。

和弦庫

一個 TCCL 檔案描述的是一整個和弦庫。每個非空的行都是一個和弦表示法,各代表一個和弦。在檔案的最後必須要有一個空行。

讓我們拿 TC Code 編輯器的 Sample 1 來當範例。

1
2
3
4
5
6
b + c = because
y + o + u = you
b + a + k = back
d + o + w + n = down
i + m + p = important

這就是一個有五個和弦的和弦庫。

複合和弦和動態和弦庫

ℹ️ 動態和弦庫的啟動和弦是一個特殊的複合親代和弦。它會在背後持續「按住」它的輸入,如此一來,你就可以在啟動之後使用它的子和弦。TCCL 用一樣的方式來表示它們。

在 CharaChorder 官方文件是用豎線 | 來分隔在複合和弦中的連續和弦輸入。舉例來說,w + b + s + t | c + h + a + r = www.charachorder.com 表示你要先並擊 W+b+s+t,接著再並擊 c+h+a+r,才會得到輸出 www.charachorder.com

那個格式對只描述一個複合和弦來說很適合。但對於一個和弦庫,在很多複合和弦有相同的先代和弦時,或是在動態和弦庫下有很多和弦時,就會有很多重複的地方。舉例來說,

1
2
3
4
5
6
7
// 注意!這不是 TCCL 語法!
s + m = some
s + m | t + g = something
s + m | b + o = somebody
s + m | o + n = someone
s + v = several

所以在 TCCL 中,參考了 Python 和 YAML 等語言,使用縮排來定義和弦之間的親子關係。舉例來說,描述上面的和弦庫的 TCCL 檔就會是:

1
2
3
4
5
6
s + m = some
t + g = something
b + o = somebody
o + n = someone
s + v = several

而這邊是另一個範例,TC Code 的 Sample 3。它有一個動態和弦庫,lib1、一個返回基底和弦庫的和弦、和在 lib1 下的一個和弦 a + r = arm

1
2
3
4
i + l = <559>base
l + r = <558>lib1
a + r = arm

有關縮排大小,建議是使用兩個空白字元,這也是 TC Code 的預設設定。

結語

這些就是,使用 TCCL 語言來編寫和弦庫所需要了解的資訊。TCCL 語言旨在提供一種方便且直接的方式來描述和弦庫。感謝你的閱讀!