Tangent's Blog

CharaChorder and Forge related articles and notes

Accessories

Hand Protection

As mentioned in my CC1 and CC2 progress article, I had some pain problems on my index fingers and wrists, mainly due to the long-term bad typing habit. To reduce the problem, I bought the half-finger gloves, wrist bands, and finger splint from Copper Compression. They do a good job of reducing my pain. Even now, I sometimes use my CC2 with those gloves, and my hands feel twice as comfortable.

Keyboard Tray

The desk I use my computers on doesn’t have a built-in keyboard tray, and the keyboard placed on it is too high for my hands. I found that this might be another cause of my hand problems, so I bought a keyboard tray that can be installed under my desk.

This keyboard tray is the one I bought. However, it can only be shipped to the mainland and outlying islands of Taiwan. You can probably find similar ones that can ship to your country from other companies.

Software Applications (on MacOS)

Karabiner

Karabiner is the application I use to remap the key on the software side.

With it, I swap the command keys and ctrl keys on my CC2, and remap the right option key to ctrl key on my normal keyboards.

Hammerspoon

Hammerspoon is a tool for powerful automation of MacOS. I use it to automatically snap windows to grid and add nome hotkeys.

Input Sources

I have four input sources on my Mac computer. They are ABC (English), Zhuyin (Mac built-in), McBopomofo (with my custom Bopomofo layout for CC1, CC2, and M4G), and Japanese.

To quickly switch to a certain input method, I have the following shortcuts. (https://github.com/andy23512/setting-files/blob/7360eae2f7980aa295c99575b98ee1874a448c2b/Shell/init.lua#L224-L263)

ShortcutChanges
cmd+alt+aOthers -> ABC or ABC -> McBopomofo
cmd+alt+bOthers -> Zhuyin or Zhuyin -> ABC
cmd+alt+m or cmd+mOthers -> McBopomofo or McBopomofo -> ABC
cmd+alt+jOthers -> Japanese or Japanese -> ABC

(I often accidentally triggered cmd+m when I want to use cmd+alt+m, so I turn off the default cmd+m hotkey and let it do the same thing as cmd+alt+m.)

Window Arrangement

To easily arrange the window positions or sizes without much mouse dragging, I set several shortcuts and auto grid snapping. (https://github.com/andy23512/setting-files/blob/0d5379447f26dadbe3ac90cbf2415e783ea766c6/Shell/init.lua#L17-L197)

The shortcuts are:

ShortcutAction
cmd+alt+[2-8]Set grid to [2-8] x 2.
cmd+alt+gStart the interactive window resize/reposition process. Handy for adjusting multiple windows in one go.
cmd+alt+sSnap all windows to grid.
cmd+alt+[Set the focused window to the left half of the screen.
cmd+alt+]Set the focused window to the right half of the screen.
cmd+alt+\, cmd+alt+⬇️Set the size of the focused window to half of the screen and center it.
cmd+alt+rResize the focused window into a grid row.
cmd+alt+;Set the focused window to the cell at the top-right corner.
Mouse Teleport

To move the mouse cursor faster on a dual-wide screen, I set several shortcuts for teleporting the mouse horizontally. (https://github.com/andy23512/setting-files/blob/0d5379447f26dadbe3ac90cbf2415e783ea766c6/Shell/init.lua#L231-L252)

The mouse cursor will be moved to the corresponding line when alt+shift+[1-5] is triggered.

image

Switch to Application

To switch between applications faster, I set several shortcuts for it. (https://github.com/andy23512/setting-files/blob/0d5379447f26dadbe3ac90cbf2415e783ea766c6/Shell/init.lua#L254-L266)

ShortcutApplication
cmd+alt+vVisual Studio Code - Insider
cmd+alt+cGoogle Chrome
cmd+alt+iiTerm
Volume Control

To control the volume faster, I set two shortcuts to increase and decrease volume by 10%. (https://github.com/andy23512/setting-files/blob/0d5379447f26dadbe3ac90cbf2415e783ea766c6/Shell/init.lua#L268-L282)

ShortcutAction
cmd+alt+➡️Increase Volume by 10%
cmd+alt+⬅️Decrease Volume by 10%

Raycast

Raycast is a collection of powerful productivity tools all within an extendable launcher. I use it to open applications, web pages, VSCode projects, etc.

Preface

Several types of chords can be used under the combinations of CC1 and my Bopomofo input method, and they may conflict with each other when they share the same key set. In this article, I would explain each type of chord and how I prevent the conflict between them.

Bopomofo Chord

Since the Bopomofo of any Chinese character has at most one consonant, rhyme, and medial, one can input the consonant, rhyme, and medial of a Chinese character at the same time on a normal keyboard. (It’s called 聲韻並擊 in Chinese.) And it’s also possible on CC1 with my Bopomofo input method.

All possible combinations of the Bopomofo chord can be looked up in some Chinese dictionaries, like this Bopomofo index of a Chinese dictionary website. It is useful when I want to add a new CC1 chord that does not conflict with Bopomofo chords.

I have another article about Bopomofo chords.

CC1 Chord

I list my CC1 chords in this note.

CC1 English Chord

The Bopomofo chords are possible to conflict with CC1 chords when they share the same key set. To keep the chording feature working for English and prevent conflict, I discard all built-in chords from CC1 and only add chords that do not conflict with Bopomofo chords.

An example in TC41.V5, e+x -> exit is not a conflicting CC1 chord, because the corresponding Bopomofo symbols of e and x are and , and ㄑㄡ is not a valid Bopomofo combination.

CC1 Chinese Chord (Under Bopomofo input method)

Keeping the chording feature of CC1 opens a new possibility, using CC1 chord to type Chinese words. I made the CC1 convert an invalid Bopomofo chord to a series of keys that type out a Chinese word.

For example, This is the ㄑ+ㄜ -> 企鵝 chord in work. (企鵝 is penguin in Chinese.)

未命名

And this is the sequence chart of how it works.

UserCC1TC41 V5BPMF IMEOutpute + 4 (ㄑ+ㄜ)eas4nㄑㄧˋㄜˊ企鵝UserCC1TC41 V5BPMF IMEOutput

So what I did is adding an e + 4 -> eas4n[KSC_00] chord in CC1. It is mapped to ㄑ+ㄜ -> ㄑㄧˋㄜˊ[KSC_00] under TC41 V5, and the output word 企鵝 is decided by the Bopomofo IME according to its dictionary.

([KSC_00], “No Key Pressed” action in the device manager, is used to eliminate the auto space of the CC1 chord, which would open the word selection menu and I don’t want it.)

Limitation

There are some limitations to this kind of chord.

Besides the conflict problems mentioned above, the tricky one is that one cannot use more than one consonant, rhyme, or medial in the chord input. For example, ㄋ+ㄏ cannot be used because it has two consonants ( and ) in it. Because Bopomofo IME would only keep at most one consonant, rhyme, and medial in its buffer, Backspaces generated by CC1 would be more than the symbols in the buffer and delete the previous characters.

Also, the tone keys cannot be used in this kind of chord due to a similar issue.

CC1 Japanese Chord (Under Romaji input method)

Though I don’t type a lot of Japanese, I try to make a CC1 chord for Japanese. Similar to the CC1 Chinese chords mentioned above, I set a chord which outputs a series of keys that type out a Japanese word.

For example, this is the s+h -> すし(寿司) chord in work. (same as CC1 Chinese chord, the trailing space need to be removed.)

c3c22ac745ad2320

And this is the sequence chart of how it works.

UserCC1JP IMEOutputs + hsusi寿司 (or any homophones of すし)UserCC1JP IMEOutput
Limitation

The character reduction nature of Japanese IME would have problem with CC1’s chord feature, because the number of backspace generated by CC1 may be different from the character number in the buffer and the previous characters would be deleted.

For example, chording n+u would types out ぬ(nu), うん(un), or 運(un). There would be randomly one or two character(s) in the buffer, depending on the key press order and the word priority decided by IME. Then CC device would generate two backspaces for the n+u chord. So if the output is single character, like ぬ or 運, a previous character would be removed.

So the limitation of this kind of chord is one only can choose key combinations that the pre-output characters in any order wouldn’t be reduced by IME. It may be easier to choose key combinations under romaji input method. (Just don’t use vowel keys in chord input.) But it would be far more complex for Kana input method since there are too many combinations of Kana that can be transformed to Kanji, so it’s not recommended to use Japanese chords under Kana input method.