Manage Karabiner config in TypeScript
With flow, run f setup, then f will search through list of tasks.
With flow, run: f deploy (this will put kar in your path).
kar # Build and apply config to 'kar' profile
kar watch # Watch config and rebuild on changes
kar --dry-run # Print generated JSON without writing
kar -c other.ts # Use different config file
kar init # Create example config- examples/simple/config.ts - all features explained
- examples/complex/config.ts - comprehensive real-world config
// Keyboard Maestro macro
km("macro name")
// Shell command
shell("echo hello")
// Open file/app in Zed
zed("~/.config/kar/config.ts")
// Open URL or path
open("raycast://extensions/...")
// Alfred workflow trigger
alfred("workflow_id", "trigger_name", "optional_arg")
// Raycast extension
raycast("extensions/raycast/...")Single: "left_command", "left_shift", "left_option", "left_control"
Multiple: ["left_command", "left_shift"]
// Simple key
{ from: "h", to: "left_arrow" }
// Key with modifier
{ from: "a", to: { key: "c", modifiers: "left_command" } }
// Multiple modifiers
{ from: "b", to: { key: "left_arrow", modifiers: ["left_command", "left_option"] } }
// Shell command
{ from: "o", to: shell("open -a Safari") }
// Keyboard Maestro
{ from: "m", to: km("My Macro") }
// Mouse scroll
{ from: "j", to: { mouse_key: { vertical_wheel: 60 } } }
// Multiple actions (sequence)
{ from: "w", to: [
{ key: "left_arrow", modifiers: "left_option" },
{ key: "right_arrow", modifiers: ["left_option", "left_shift"] }
]}Use AI & flow. All meaningful issues and PRs will be merged in. Thank you.