karabiner.ts-greg-mods
Version:
Powerful mods for karabiner.ts.
79 lines (78 loc) • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sides = exports.layerVarName = void 0;
exports.isFromAndToKeyCode = isFromAndToKeyCode;
exports.getSideOfMod = getSideOfMod;
exports.isSidedMod = isSidedMod;
exports.getUnsidedMod = getUnsidedMod;
exports.getFromKeyCodeFromBasicManipulator = getFromKeyCodeFromBasicManipulator;
const karabiner_ts_1 = require("karabiner.ts");
exports.layerVarName = "__layer";
function isFromAndToKeyCode(key) {
return (karabiner_ts_1.modifierKeyCodes.includes(key) ||
karabiner_ts_1.controlOrSymbolKeyCodes.includes(key) ||
karabiner_ts_1.arrowKeyCodes.includes(key) ||
karabiner_ts_1.letterKeyCodes.includes(key) ||
karabiner_ts_1.numberKeyCodes.includes(key) ||
karabiner_ts_1.functionKeyCodes.includes(key) ||
karabiner_ts_1.keypadKeyCodes.includes(key) ||
karabiner_ts_1.internationalKeyCodes.includes(key));
}
exports.sides = ["left", "right"];
/**
* Returns the side of a sided modifier alias or Modifier or null if not sided.
*
* Accepts SideModifierAlias (e.g., 'left_shift', '>shift')
* or canonical Modifier (e.g., 'shift').
*/
function getSideOfMod(mod) {
if (typeof mod !== "string")
return null;
if (mod.startsWith("left") ||
mod.startsWith("l") ||
mod.startsWith("<") ||
mod.startsWith("‹")) {
return "left";
}
else if (mod.startsWith("right") ||
mod.startsWith("r") ||
mod.startsWith(">") ||
mod.startsWith("›")) {
return "right";
}
else {
// Not a sided modifier
return null;
}
}
/**
* Returns whether a modifier is sided.
*/
function isSidedMod(mod) {
return getSideOfMod(mod) !== null;
}
/**
* Returns the unsided version of a modifier.
*/
function getUnsidedMod(mod) {
const s = mod;
if (s.startsWith("left_")) {
return s.slice(5);
}
if (s.startsWith("right_")) {
return s.slice(6);
}
return mod;
}
/**
* Returns the from key code from a BasicManipulator or null if not found.
*/
function getFromKeyCodeFromBasicManipulator(m) {
if (!("key_code" in m.from)) {
return null;
}
if (typeof m.from.key_code === "number") {
return null;
}
return m.from.key_code;
}