The Ultimate Modular Mapping System for macOS
Node2Joy is a powerful, node-based automation and mapping engine built from the ground up for macOS. It allows you to transform any input—whether it's a MIDI controller, a Magic Mouse gesture, or a simple keyboard shortcut—into complex chains of actions.
- Trigger Nodes: The "Entry Points". Start your logic from any event.
- Action Nodes: The "Engines". Execute keystrokes, mouse moves, or MIDI signals.
- Logic Nodes:
- Delay: Add precision timing between steps.
- Cycle: One trigger, different outputs every time.
- Sequence: Automate multiple repeats with looping logic.
- Labels: Keep your canvas clean and documented.
- Keyboard: Custom key combinations with all modifiers.
- MIDI: Respond to MIDI Note On/Off from any source.
- Mouse: Multi-button support with modifier guards.
- Gestures: Magic Mouse & Trackpad swipes, pinches, and rotations.
- Virtual Keys: Send key combos to any active application.
- Mouse Control: Precise clicks and smooth movement relative to any window.
- MIDI Feedback: Trigger external gear or software with MIDI messages.
- Silky Smooth Canvas: Infinite panning and zooming with CMD+Scroll or Spacebar-drag.
- Rich Theming: 12+ handcrafted themes including Cyberpunk, Ocean Blue, and Apple Dark.
- Power Features:
- Selection: Shift-click or Box-selection for mass movement.
- Grid System: Toggleable snap-to-grid for pixel-perfect layouts (Option+G).
- Quick Shortcuts: Tap T, A, or D to drop nodes instantly at your cursor.
- Auto-Fit: Double-tap the canvas to instantly center your entire graph.
- /Node2Joy: The core Swift Package. Standard SPM structure (
Sources/,Tests/). Clean, modular, and Swift 6 Concurrency safe. - /Node2JoyDemo: A sample macOS app demonstrating the
CanvasSceneand real-time node manipulation.
- macOS 12.0 or later
- Xcode 15.0 or later (Swift 6.0 compatible)
To use Node2Joy in your own project:
- Drag the
Node2Joyfolder into your Xcode project. - In your target's General tab, add
Node2Joyto Frameworks, Libraries, and Embedded Content. import Node2Joyand you're ready to go!
- Open
Node2JoyDemo/Node2JoyDemo.xcodeproj. - Build and Run (Cmd+R).
- Right-click anywhere on the canvas to start adding your first nodes.
| Key | Action |
|---|---|
| Space + Drag | Pan the canvas |
| Cmd + Scroll | Zoom in/out |
| Double Tap | Fit all nodes to screen |
| Cmd + A | Select all nodes |
| T / A / D | Quick Add: Trigger / Action / Delay |
| Option + G | Toggle Grid |
| Delete | Remove selected node/connection |
| 0 | Toggle enabled/disabled state |
Distributed under the MIT License. See LICENSE for more information.
Built with ❤️ for the macOS automation community.