relferreira / para_chording

A chording solution using Karabiner

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

para_chording

beta version: 0.5.0 beta (Feb 21, 2022)

Find me on:
Twitter: Joe Penna [@MysteryGuitarM]
Discord: Joe Penna (MysteryGuitarMan)#7614

Listen, I'm not a coder/hacker either. I'm a screenwriter.

Thing is... these programs below are so easy to figure out that I was able to code this entire chording solution by fumbling through beginner example codes online.

(And asking for help a couple times. Many times. Thanks @CodyW, @lamb, @hermo, @Dimentium, @kiinoda)

Start by watching this video: How to start chording with Joe Penna (coming later)

It explains what chording is, and walks you through this entire read_me.

Default Commands

First time here? Don’t worry about these yet.

⌃ control + ⌥ option + ⌘ command + i ► add instant chord
⌃ control + ⌥ option + ⌘ command + - ► open program folder
⌃ control + ⌥ option + ⌘ command + = ► update karabiner chord_list

Q + W + E ► toggle chording on / off

Installation

Two programs you need to install:

para_chording installation

  • para_chording installation

Keyboard Maestro

  • run para_chording.kmmacros
    run kmmacros

  • right-click the para_chording folder in Keyboard Maestro, choose Enable Macro Group:
    enable macro group

  • run the installation macro:
    installation run

  • That’s all you need with Keyboard Maestro.


Karabiner

  • Open Karabiner Preferences… in your taskbar:
    karabiner preferences
  • Under Devices
    • Click the left-most checkmark on the keyboard you’d like to use.
    • Mine is called Apple Internal Keyboard / Trackpad (Apple Inc.)
  • Under Complex Modifications
    • Click ⊕ Add rule.
  • Next to para_chording
    • Click the needlessly small Enable All button.
  • You’re done with installation! To confirm, press q w e all together. You should get a message that para_chording is on / off.

Let’s Start Chording!

Open any text editor. I recommend TextEdit for now.

First, type t. Then, type h. Then, type e. Then, add a space.

How slow.

Instead, try to mash the all together — that’s your chord.

You should have gotten the + space — that’s your output.

By default, this program adds a space at the end of every output.

Other Ways of Chording

Now try to chord fj together.

You get the same output: the + space .

  1. The letters of the chord don’t have to match the letters of the output.
  2. You can have multiple chords with the same output (but each chord can only have one output).

fj for the seems like an odd choice, but consider the following:

  • The word the is the most common word in the English language.
  • It’s probably the word you type the most.
  • The keyboard in front of you probably has two easy-to-find nibs on the F and the J keys.
  • The index fingers usually rest on those two keys.
  • The term “semantic satiation” describes how you might be feeling about the word “the”.

Repeats and Shifts
Try chording fj repeatedly. You should get the the the.

If you press-and-hold fj, you get the••••• (where represents a blank space).

By default, only the last letter of a chord will repeat, which will usually be a space.

Try holding shift down, then chord fj.
You get The. Repeatedly, you get The The The.

By default, I made it so that only the first letter is capitalized.
We’ll talk about how to capitalize the entire output in a bit.

Long Chords
Back in your text editor, move your fingers around until you press thm altogether. You get:

To Whom It May Concern,
►

Note the lack of space added.

Now chord obed, which will output:

I have the honor to be your obedient servant,

A.Ham

Also, note that you don’t have to hold a long chord while it types.
For normal chording, you shouldn’t run into an issue with how long it takes to type.

Still, if you want to have the text show up immediately, you can enable “paste mode” in this program’s preferences — with the caveat that you’ll lose whatever you last copied after every chord.
This has not yet been implemented.

Adding Your Own Chords

Try this keystroke (doesn’t need to be chorded):

⌃ control + ⌥ option + ⌘ command + i

This opens up:
instant chording

Before you add any chords…

  • Numbers, lowercase letters, and uppercase letters are allowed.

  • You can’t use commas directly.

    • You need to escape them with a \backslash\
    • Evening\, ladies will get you what you want, at least chording-wise.
    • Evening, ladies will break everything.
  • You can only use the symbols ! @ # $ % ^ & * ( ) - _ = + and < . > / ? ; : ' "

    • No vertical bars. |shift+backslash|
    • No brackets. []{}
    • ꧁ 𝕹𝖔 𝖜𝖊𝖎𝖗𝖉 𝖈𝖍𝖆𝖗𝖆𝖈𝖙𝖊𝖗𝖘 𝖔𝖗 𝖊𝖒𝖔𝖏𝖎𝖘 ꧂

I’m not a good enough coder to stop you from breaking your chord list.
So, just try to stick to letters and numbers the simple symbols above.

Try adding one now!
I did:

chord: luv
output: love

If you don’t want a space at the end of your output, add a # symbol to the end of your chord.
output: love will get you love+space.
output: love# will get you love.

More Advanced Concepts

If you wanna add lots of chords more easily, or to change / delete any chords, type:
⌃ control + ⌥ option + ⌘ command + - (hyphen)

This opens your program folder in Finder.

  • chord_lists
    • lots of .txt that mesh together to create your chord library.

More info about these below.

  • chord_lists backups
    • backups of the chord_lists are made every time you:
      • add an instant chord.
      • run the manual chord_list update command.

If you’re changing your files often, a new backup of all folders is only made every hour.

  • documentation
    • links to this document, and a document for developers.
    • please, developers — read it! I need help!

chord_list directory
Open it up.

You’ve got:

  • instant_chords.txt
    • a list of chords added, with date and time as comments
instant — February 21, 2022 – 2:57 PM
chord,output
  • read_me examples.txt
    • The examples from this read_me.
    • Feel free to delete this after you’re done reading through this document.
  • 100 most common english words.txt
    • A bunch of chords to get you started.
    • Note the lack of two-letter words.
  • common two-letter words.txt
    • chords for words like be, to,
    • Note the lack of non-two-letter words.

File Format

This program’s expecting text files in the chord_list directory with the following pattern:

// title is a must
chord,output
chord,output
chord,output//comments immediately after output are supported

chord ,output//you would have to chord spacebar here chord, output//your output would have an extra space here

chord,output //this would add extra spaces to your output

// empty lines allowed //comments not at the beginning of a line might break things /* comment blocks are unsupported */

very long chords are,not useful chords without outputs will definitely break things

When you’re done changing your .txt files around, you can update Karabiner with:
⌃ control + ⌥ option + ⌘ command + = (equal sign)

Modifier Keys

I coded a few extra keys for you.

Modifiers For Chords and Outputs

backspace — ◄ but will be changed to :backspace:
enter — ▼ but will be changed to :enter:
tab — ► but will be changed to :tab:

Example 1:

abon,abandon
ing,:backspace:ing

chording abon then ing outputs:
abandon+space then backspace+ing
abandoning

Example 2:

=-:backspace:,hunter2

chording the three keys on the top of your keyboard (hyphen equalsign delete ) would output
hunter2, which might be your password or something…

Example 3:

jk,:backspace:#
df,:enter:#

Reaching my right pinky over to the backspace and enter keys was cumbersome.
These chords give you a few control keys.
right index + middle fingers = backspace
left index + middle fingers = enter

Example 4:

Lastly, the long phrases from earlier:

thm,To Whom It May Concern\,:enter::enter:#
obed,I have the honor to be your obedient servant\,:enter::enter:A.Ham

Your output must be an unbroken line.

Modifiers For Chords Only
These can ONLY be part of your chord:

^ :left_control:
^ :right_control:

:left_option:
:right_option:

:left_command:
:right_command:

_ :left_shift:
_ :right_shift:

They can be useful to differentiate chords for anagrammatic words. Remember that you could also use the spacebar as part of your chord:

	the,the
	the:right_option:,Theodore
	the ,The Space Between Us//note the space before the comma

Final Remarks

To be added.

Support The Little Guys
If you get some good use out of this program:

Written with StackEdit.

About

A chording solution using Karabiner

License:MIT License


Languages

Language:TypeScript 68.0%Language:JavaScript 29.8%Language:CSS 1.1%Language:EJS 1.0%Language:Shell 0.1%