Tangent's Blog

CharaChorder and Forge related articles and notes

ℹ️ For anyone who would like to know what Bopomofo or Zhuyin is, here is an article with a detailed explanation.

Bopomofo Layout on CharaChorder One (CC1)

In this section, I will explain some existing Bopomofo layouts and their problems with CC1 first, and then the design, implementation, and updates of my Bopomofo layout.

Problems of Existing Bopomofo Layouts

Standard Bopomofo (標準注音、大千注音)

Standard Bopomofo is the layout I’ve used since I started to learn Chinese typing.

On a normal keyboard, symbols are placed in the same way as the Bopomofo table, so it is easy to find the location of each symbol if one has already been familiar with Bopomofo. Also, one can input the consonant, rhyme, and medial of a Chinese character at the same time[^bpmf_chord] (I call it “Bopomofo chord”). Furthermore, the frequently used symbols (ㄐㄑㄒㄓㄔㄕ一ㄨㄩ) are placed near the center of the keyboard (for index fingers).

However, since CC1’s layout is completely different from a normal keyboard, the Bopomofo symbols are not easy to find and learn. And since some Bopomofo symbols are on the number or symbol keys on a normal keyboard (such as 1 for , / for ), one needs to switch the layer to get those Bopomofo symbols when typing on CC1. So it is impossible to do “Bopomofo chord” for every combination of Bopomofo with this layout on CC1.

Eten Bopomofo (倚天注音)

Eten is another layout that is designed for users that are familiar with English typing. Its rules for mapping symbols are mainly by sound or shape similarity, so it’s easier to learn for those who are familiar with English typing on any keyboard (including CC1). Yes, this is a workable and easier solution without any software modification. But still cannot do “Bopomofo chord” due to the same reason as Standard Bopomofo.

Make a New Bopomofo Layout - TanChord 41 Bopomofo (TC41)

Design (V1)

As mentioned, there are some problems when using CC1 with existing Bopomofo layouts. To let it both easy to learn (easy to find key) and efficient (can do “Bopomofo chord”), a special Bopomofo layout should be designed for CC1, so I came up with the layout below.

The design rules of this layout are:

  1. Bopomofo symbols are placed according to the order of the Bopomofo table as possible.
  2. Positions of consonants (red keys on image), medials (green keys on image), and rhymes (blue keys on image) are placed in a way that makes all Bopomofo chords possible. (Left hand -> consonant, Right index/middle finger -> medial. Right thumb/ring finger -> rhyme)
  3. Position of the Dup key is kept since it cannot be mapped to a Bopomofo symbol in IME and I don’t want to affect already-learned English typing on CC1.
  4. Positions of frequently used keys are kept as possible, such as ctrl (mapped to command in Karabiner on my Mac), backspace, enter, and (right) space.
  5. Frequently used symbols (ㄐㄑㄒㄓㄔㄕ一ㄨㄩ) are placed at the switches of the index and middle fingers.

Implementation (V1)

Two things are required to do for implementing the layout. One is to remap keys on CC1, the other is to modify the mapping rule of a Bopomofo IME.

Remapping keys on CC1

Bopomofo IME only can map character keys (alphabets, numbers, symbols) to Bopomofo symbols, so I need to replace some non-character keys with character keys if I want those keys to map to Bopomofo symbols in IME. Also considering usage for programming, I replace them with some frequently used symbols in codes. Below is the final CC1 layout after remapping.

And I put the CSV file of my layout here. https://raw.githubusercontent.com/andy23512/setting-files/master/CharaChorder/cc1-layout.csv

Modifying Bopomofo IME

The final step is to change the IME’s Bopomofo layout. It is really difficult to modify the built-in IME of OS, so I forked an open-sourced Mac Bopomofo IME and changed its layout according to the CC1 layout and the Bopomofo layout I designed (https://github.com/andy23512/McBopomofo/commit/7446337c8cc54a0700f467d26b3c4289cd55a9?diff=split).

(It seems to be possible to use libchewing on Windows and Unix-like systems and change this line to "/[(-wzg#kcmre|io.{\u,atl$])?bqxfdhpsy;nj};",.)

At this moment, I finally could have a better Bopomofo layout for my Chinese typing.

Updates

V2

After some time using this layout, I found a few problems so I made a few adjustments to the layout.


The adjustments are:

  1. All Rhymes (except ㄦ[1]) are moved to right thumb switches to fit the group of Bopomofo chart. (dup key is moved to the north key of left mouse switch) This change also lets all the frequently used rhymes, ㄢㄣㄤㄥ, placed at the thumb 1 switch. It is good for efficiency.
  2. All Tones (except Tone1(space)) are moved to right middle switch.
  3. ㄩ is moved to right ring switch.

New CC1 layout file: https://raw.githubusercontent.com/andy23512/setting-files/master/CharaChorder/cc1-layout-v2.csv
Update to McBopomofo: https://github.com/andy23512/McBopomofo/commit/14899a112d1032330825fe16f8718d6ecab7021c

V3

I found that some keys in shift layer in OS layout (such as {) would break Bopomofo chords, so I modified the CC1 layout to solve the problem.

New CC1 layout file: https://raw.githubusercontent.com/andy23512/setting-files/master/CharaChorder/cc1-layout-v3.csv
Update to McBopomofo: https://github.com/andy23512/McBopomofo/commit/e33883e3f7d189bf18d339c7a02d0072899848fc

localhost_4200_layouts (1)

V4

After some praticing, I found that putting the Tone2~Tone5 on the right middle switch would make the workload of right middle finger too high. (We always need one tone per Chinese word when typing.) So I try spliting them into two switches to see whether it gets better or not.

(No change on CC1 layout)
Update to McBopomofo: https://github.com/andy23512/McBopomofo/commit/35b7eccbe94c184d9edee9d11471076702660ec2

image

V5 (Latest)

I found that typing ㄌ(/) would trigger the slash command at ClickUp, so I change the key to = and move / to left mouse switch.

New CC1 layout file: https://raw.githubusercontent.com/andy23512/setting-files/master/CharaChorder/cc1-layout-v5.csv
Update to McBopomofo: https://github.com/andy23512/McBopomofo/commit/fe53eda098250384d600af04d44e2139dc492fef

localhost_4200_layouts

V5.1 (Adjustment for mouse actions)

Since the mouse switch at primary layer has been remapped to other keys, I decided to use the mouse actions at the numeric layer, so I added a num lock key at right-ring_2-west of primary layer.

< and > can be typed with shift+, and shift+. so they can be removed.

Primary Layer

localhost_4200_layouts

Numeric Layer

localhost_4200_layouts (1)

  • ②: numeric layer key
  • M(arrow): mouse move
  • S(arrow): mouse scroll
  • LC, MC, RC: mouse left, middle, right click

Device Manager Backup file https://github.com/andy23512/setting-files/blob/master/CharaChorder/backup-ONE-v5.1.json

V5.2 (Functional Keys at Numeric Layer)

To make the functional keys more accessible (for me), I remap some keys at the left side of numeric layer to functional keys.

Numeric Layer

localhost_4200_layouts

Device Manager Backup file https://github.com/andy23512/setting-files/blob/master/CharaChorder/backup-ONE-v5.2.json

The Name - TanChord 41 Bopomofo (TC41)

Since I came up with another Bopomofo layout for Master Forge, to easily distinguish them, I named the layout here as TanChord 41. Tan is the abbreviation of my name, Tangent. Chord is because it’s mainly designed for using Bopomofo input method and Bopomofo chords on CharaChorder One. 41 is because it uses 41 keys[2].

Side Topics

In this section, there are some side topics related to Chinese typing, Bopomofo, chording, or other setting for CC1.

Chinese Punctuation

This layout occupies some punctuation keys, such as [, ], to map to Bomopofo symbols. This would make the corresponding Chinese punctuations unaccessible with these keys. ([ key for , ] key for )

Under McBopomofo input method, the solution is to add new key combinations to those punctuations with the feature of user dictionary. And here is the dictionary file I use. https://raw.githubusercontent.com/andy23512/setting-files/master/McBopomofo/data.txt

Then we can use the following key combinations for the punctuations:

KeyOutput
ctrl+,
ctrl+.
ctrl+'
shift+,(<)
shift+.(>)

Chord

(moved to this article)

Bopomofo Password

Bopomofo password is a kind of password that we can make with several Chinese words. It uses the mapping between the standard layout and QWERTY layout. (See this link for more details if anyone is interested.) So we use the same keystrokes but different input sources (Standard Bopomofo or QWERTY) for typing the Chinese words and the corresponding Bopomofo password.

As it’s dependent on the QWERTY layout, I cannot directly type it with my Bopomofo layout, so I made a new OS layout for Bopomofo password with Ukelele to mapping between CC1 output and Bopomofo password.

The corresponding OS layout for Bopomofo password on TC41.V5 is as below:
image

It looks like someone shuffle the positions of all keys on your keyboard, but it’s actually the combination of TC41.V5 and the Standard Bopomofo layout.

For example, when typing ㄅㄆㄇㄈ... at TC41.V5, the CC1 actually send out the 7890... sequence.

            sequenceDiagram
            CC1->>TC41.V5: 7890...
TC41.V5->>Output: ㄅㄆㄇㄈ...
          

But at Standard Bopomofo, the keyboard actually send out the 1qaz... sequence. (This is the Bopomofo password of ㄅㄆㄇㄈ…)

            sequenceDiagram
            Keyboard->>Standard BPMF: 1qaz...
Standard BPMF->>Output: ㄅㄆㄇㄈ...
          

So we just need a Bopomofo password layout to map the output from CC1 7890... to corresponding output 1qaz..., so on this layout, 7890 keys would output 1qaz respectively.

            sequenceDiagram
            CC1->TC41.V5: 7890...
TC41.V5->Reversed Standard BPMF: ㄅㄆㄇㄈ...
Reversed Standard BPMF->Output: 1qaz... (BPMF password)
          

So the output of 7890 keys should be 1qaz on the OS layout respectively, which is the result after doing TC41.V5 mapping and Reversed Standard Bopomofo mapping.

upload_b72eeab34a7f164d74dcf73a19b18b3c

Custom Keyboard Shortcut

(moved to this article)

Possible Bopomofo Approaches on Master Forge (M4G)

(moved to this article)

Arpeggiate Problem

The arpeggiate feature is a quick single keystroke after a CC chord that can use to modify a chord, such as modifing the tense, adding a suffix, a prefix or a punctuation.

I found that CC’s punctuation arpeggiate feature is also possible to conflict with Bopomofo chords.

For example, at my TC36.V2 layout, when I type 問(ㄨㄣ、), I chord ㄨ+ㄣ(corresponding keys is t+d) and then hit the Tone4 (corresponding key is ;) immediately after the chord. The ; keystroke would trigger the punctuation arpeggiate feature, so CC device seemed to emit Space, ;, Arrow Left, Backspace and Arrow Right keys.

(ㄨㄣ + Space(Tone1) is the Bopomofo of the word. And the Backspace keystroke delete that word.

The workaround for now is to turn off the arpeggiate feature.


  1. ㄦ is a special rhyme that doesn’t have any combinations with other consonants or medials, so we can leave it alone from other rhyme keys. ↩︎

  2. Although there are 42 keys on the layout, the space key (first tone) usually isn’t counted by other Bopomofo input methods, such as Eten 41. ↩︎

ℹ️ The official list of Web tools is here.

Official Resources

Device Manager / Configuration Tool

charachorder.io
(Outdated) CharaChorder Device Manager
(Outdated) CharaChorder Launchpad - Chord Manager (Note: This website only supports pre-CCOS devices.)

Home Page

CharaChorder - Type at the speed of thought®
Forge Keyboard

Kickstarter

The Master Forge: A Keyboard Built for You by CharaChorder — Kickstarter

Documentation

CharaChorder Documentation

Practice Tool

dot i/o
(Outdated) CharaChorder Launchpad

Videos

CharaChorder’s YouTube Channel
>
Show DetailHide

In CharaChorder Essentials, there are in-depth tutorial videos provided by CharaChorder. These videos can help you unlock the full potential of your CharaChorder device.

Others

Try CharaChorder
>
Show DetailHide

Try CharaChorder is a free CharaChorder emulator that you can try some features of CharaChorder devices directly on your browser with any keyboard. Check the introduction video of Try CharaChorder for more detailed explanation and demostration.

Master Forge Estimator
>
Show DetailHide

It’s a web tool that estimates the fulfillment date for your Master Forge order.

VoiceBox
>
Show DetailHide

VoiceBox is a live text-to-speech web app. Check the official release video for demostration.

CharaChorder/CAD-CAM: CharaChorder’s official repository of CAD & CAM files
>
Show DetailHide

This repository collects the CAD & CAM files of some parts of CharaChorder devices, Forge devices and Forge Bolt-on.

CharaChorder/nexus: CharaChorder’s logging and analysis desktop app, supporting Linux, Windows, and macOS.

Community Resources

Wiki

(Outdated) CCOS Community Wiki
>
Show DetailHide

An old community Wiki but not updated for a long time. Recommend to use the official documentation instead.

(Outdated) CharaChorder One Wiki
>
Show DetailHide

An old community Wiki but not updated for a long time. Recommend to use the official documentation instead.

It seems to me that the “Learn to Type” and “Learn to Chord” sections are still useful.

Tool

CharaTyping
>
Show DetailHide

It’s a fork/clone of a typing test app, Monkeytype.

Differences from Monkeytype:

  • The anti-cheat module of Monkeytype is removed.
  • Chording would not affect the accuracy.

GitHub Repo: https://github.com/typing-tech/monkeytype

(Outdated) CharaChorder Config
>
Show DetailHide

An old community tool to configure your device. Recommend to use the official device manager instead.

CharaChorder Layout
>
Show DetailHide

A web tool that shows the output characters of the default CC1 layout under different OS layout settings.

CharaChorder Utilities - Home
>
Show DetailHide

CharaChorder Utilities contains a collection of tools for CharaChorder users.

CharaChorder Builder (BETA) - Google Spreadsheet
>
Show DetailHide

CharaChorder Builder allows anyone to create computer-generated chord libraries from any word list.

Data

YouTube Channel and Video

John de St. Germain - YouTube
KlintWithA-K Charachorder - YouTube
LambChorder - YouTube

3D Model

CharaChorder tenting 3D models at Printables.com

Third-Party Resources

Typing Practice Tools

Program

Product

Troubleshoot

Software

Testing

My Resources

Notes

Web Applications

Statistics