c00e5d9

Pinchord · pinchord.git · Tickets · Changelog

Branches > v28.1 > c00e5d9 > files / chords.edn

Add initial javelin script

Grahp, 2026-02-20

Commit: c00e5d951ed9c0b8fb66760b3d80afc6306aabdf
Parent: 8c9e7f9

1 changed file:

javelin-script.javelin-script added (view file)

@@ -0,0 +1,69 @@+const true = 1;+const false = 0;+// Toggles this script and the normal Javelin lookup+const SCRIPT_ENABLED = true;++// The full mask of keys pressed in the last stroke+// Reset after the stroke ends+var pressed_keys;+// The current mask of keys pressed down+var current_keys;++// TODO The script I saw had some things masked out, I'm not really sure why?++// Gemini codes to key indices+const key_masks = [[+  01 01 02 03 04 05 06 07 // S1 - RL+  08 09 0a 0a 0a 0a 0b 0c // A - U+  0d 0e 0f 10 11 12 13 14 // FR - SR+  15 16 00 00 00 00 00 00 // DR - NUM6+  00 00 00 00 00 00 00 ff // NUM7 - X1+  ff ff ff ff ff ff ff ff // X2 - X9+  ff ff ff ff ff ff ff ff // X10 - X17+  ff ff ff ff ff ff ff ff // X18 - X25+  ff                      // X26+]];+++// Key is an index, I guess from gemini?+func on_key_press_(key) {+  var mask = 1 << key_masks[key];+  pressed_keys |= mask;+  current_keys |= mask;+}++func on_key_press(key) {+  if (SCRIPT_ENABLED) {+    on_key_press_(key);+  } else {+    // Fall back to the default behavior+    pressStenoKey(key);+  }+}++func on_key_release_(key) {+  var mask = 1 << key_masks[key];+  current_keys &= ~mask;+  // No keys are pressed down+  if (current_keys == 0) {+    printValue("key_mask", pressed_keys);++    var text = "???";++    // If it's an invalid stroke, I think just send it to Javelin to look up?+    sendText(text);++    // I could just have a 'simulate_steno_stroke(mask)' that sends 'pressStenoKey' and 'releaseStenoKey' over and over lol.++    pressed_keys = 0;+  }+}++func on_key_release(key) {+  if (SCRIPT_ENABLED) {+    on_key_release_(key);+  } else {+    // Fall back to the default behavior+    releaseStenoKey(key);+  }+}