{"id":48338858,"url":"https://github.com/devanshutak25/blenderKey","last_synced_at":"2026-04-20T17:00:55.584Z","repository":{"id":346507065,"uuid":"1179995235","full_name":"devanshutak25/blenderKey","owner":"devanshutak25","description":"Blender 5.0+ Addon to visualize and edit the hotkey bindings","archived":false,"fork":false,"pushed_at":"2026-04-20T10:52:11.000Z","size":28678,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-20T12:06:17.057Z","etag":null,"topics":["blender","blender-addon","claude-code","python","vibe-coding"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devanshutak25.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-12T15:37:47.000Z","updated_at":"2026-04-20T10:52:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/devanshutak25/blenderKey","commit_stats":null,"previous_names":["devanshutak25/blenderkey"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devanshutak25/blenderKey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshutak25%2FblenderKey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshutak25%2FblenderKey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshutak25%2FblenderKey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshutak25%2FblenderKey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devanshutak25","download_url":"https://codeload.github.com/devanshutak25/blenderKey/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshutak25%2FblenderKey/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32056876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blender","blender-addon","claude-code","python","vibe-coding"],"created_at":"2026-04-05T04:00:24.555Z","updated_at":"2026-04-20T17:00:55.577Z","avatar_url":"https://github.com/devanshutak25.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# blenderKey — Keymap Visualizer for Blender\n\n\u003e [!WARNING]\n\u003e **Back up your Blender preferences before using this add-on.**\n\u003e Keymaps are sensitive user data and Blender provides limited safeguards around them. This add-on edits your keymaps in place — there is a real possibility of keymap loss or corruption, with no guaranteed way for users to restore them from within Blender. Before using this add-on, copy your `userpref.blend` (and any `keyconfig` files) from your Blender config folder so you can roll back if anything goes wrong.\n\nBlender's shortcut system is powerful, but the built-in keymap editor makes you dig through nested menus to find anything. **blenderKey** shows you the whole keyboard on one screen: every shortcut on every key, color-coded, searchable, rebindable with a right-click.\n\nHover a key to see what it does. Click once to lock it. Right-click to change it. Press a shortcut to jump to the key that owns it. Save your setup as a preset and share it with your team.\n\n\u003e *Completely vibecoded using Claude Code.*\n\n![Blender](https://img.shields.io/badge/Blender-5.1%2B-orange) ![License](https://img.shields.io/badge/license-GPL--3.0--or--later-blue)\n\n![Keymap Visualizer](docs/cover.png)\n\n---\n\n## Why use it?\n\n- **See every shortcut at a glance.** The whole keyboard is rendered on-screen with each key colored by what it does.\n- **Rebind without hunting.** Right-click any key, pick a binding, press a new combo. Done.\n- **Find keys by shortcut.** Press `?` then the combo — the key highlights and the panel shows its bindings.\n- **Find shortcuts by name.** Press `/` and start typing. Matching keys stay bright, others dim.\n- **See what you've changed.** Press `D` and Blender defaults appear in red/green/neutral.\n- **Undo anything.** Up to 50 steps, `Ctrl+Z` like you'd expect.\n- **Save your setup.** Presets as JSON, export as a Blender `.py` keyconfig, or paste from clipboard.\n\n---\n\n## The keyboard\n\nA GPU-rendered keyboard with drop shadows and smooth hover animations. It's not a screenshot — it's interactive.\n\n- **6 sizes**: 100% full, 96% compact, 80% TKL, 75%, 65%, 60%\n- **2 physical layouts**: ANSI or ISO (proper ISO Enter shape)\n- **7 logical layouts**: auto-detect your OS, or force QWERTY / AZERTY / QWERTZ / Dvorak / Colemak / Nordic\n- **Resizable**: drag the handle, scale 0.5× to 3×\n- **All the keys**: alphanumeric, navigation cluster, numpad, function row, mouse buttons (LMB/RMB/MMB)\n\n### What key colors mean\n\nEach key changes appearance based on what's happening:\n\n- **Unbound** — plain surface\n- **Bound** — highlighted\n- **Category-colored** — tinted by what it does (Transform = amber, Navigation = teal, Mesh = purple, etc.)\n- **Hovered** — soft animated transition\n- **Selected** — accent color when clicked\n- **Modifier-active** — Ctrl/Shift/Alt/OS keys pulse at 2Hz when you hold them physically\n- **Dimmed** — during search, non-matches fade to 30%\n- **Diff mode** — green for modified bindings, red for deactivated, dim for untouched\n- **Rebind flash** — green pulse when you successfully reassign a key\n\n### Badges on each key\n\n- **Top-left** — the physical key name (`G`, `Tab`, `F5`)\n- **Bottom** — the primary operator, abbreviated (`Move`, `Extrude`, `Loop Cut`) using 80 built-in shorthand labels\n- **Bottom-right** — count of other modifier combos that also have bindings\n- **Top-right \"D\"** — shown when the key has click-drag bindings\n\nText color adapts to background luminance (WCAG-aware) so labels stay readable on any theme.\n\n---\n\n## Info panel\n\nPick a key — the right-hand panel shows everything bound to it:\n\n- Every binding with its modifier prefix, operator name, editor icon, and keymap\n- Same operator in multiple keymaps? Grouped into one expandable row\n- Expand a group to see operator descriptions\n- Modal shortcut hints for chain combos (`G G → Edge Slide`, `S S → Shrink-Fatten`, `R R → Trackball`)\n- Scrollable — wheel or middle-drag, with a real scrollbar and fade gradients\n\nNothing selected? The panel shows contextual help and tooltips instead.\n\n---\n\n## Filters\n\nTwo side panels to narrow down what you see:\n\n- **Editors** — All, Global, 3D Viewport, Image/UV, Node Editor, Text Editor, Sequencer, Clip, Dopesheet, Graph, NLA, Properties, Outliner, Console, Spreadsheet\n- **Modes** — All, Object, Edit Mesh, Sculpt, Pose, Weight Paint, Vertex Paint, Texture Paint, Grease Pencil, Curves\n\nMulti-select. Mix and match. Icons for everything.\n\n---\n\n## Operator browser\n\nA searchable accordion on the left lists every Blender operator, grouped into 13 categories:\n\nTransform • Navigation • Mesh • Object • Edit • Sculpt • Paint • UV • Nodes • Animation • Playback • File • System\n\n- Type in the search to filter by name or idname — categories auto-expand\n- Blue dot marks operators that are actually bound somewhere\n- Click any operator to:\n  - **Assign Shortcut** — press a key combo to bind it\n  - **View Bindings** — jump to the key it's already on\n  - **Remove All Bindings** — unbind everywhere (undoable)\n  - **Open in Preferences** — jump to Blender's built-in editor\n\n---\n\n## Editing shortcuts\n\n### Right-click any key\n\nOpens a menu listing up to 5 bindings on that key. Hover any binding for a sub-menu:\n\n- **Rebind** — press a new combo\n- **Unbind / Enable** — toggle it off or back on\n- **Reset to Default** — restore Blender's original\n- All undoable\n\n### Capture mode\n\nWhen you rebind, every other key dims and your target pulses with an animated border. The prompt says \"Press new key combination… ESC to cancel\". Press any combo — letters, digits, F-keys, Tab, Space, arrows, numpad, punctuation, with any mix of Ctrl/Shift/Alt/OS.\n\n### Conflict resolution\n\nIf your new combo is already taken, a centered dialog appears with three options:\n\n- **Swap** — move the conflicting binding to the old key\n- **Override** — take the combo, deactivate the conflict\n- **Cancel** — bail out\n\n---\n\n## Search\n\nTwo kinds, different keys:\n\n- **By name** — `/` or `Ctrl+F`. Fuzzy token matching on operator names. Matching keys stay bright, others dim to 30%. Result count shown.\n- **By shortcut** — `?` (Shift+/). Press a key combo — the visualizer jumps to that key and shows its bindings.\n\n---\n\n## Diff view\n\nPress `D`. Compares your current keyconfig against Blender defaults:\n\n- **Green** — you modified this binding\n- **Red** — you deactivated this binding\n- **Dim** — untouched\n\nA \"DIFF\" badge appears in the toolbar while active.\n\n---\n\n## Undo, redo, presets, export, import\n\n- **Undo** up to 50 levels. `Ctrl+Z` / `Ctrl+Shift+Z`. Every rebind, unbind, reset, toggle, preset-load and import pushes a snapshot.\n- **Presets** — save your whole keyconfig as a JSON file. Load, delete, copy to clipboard, paste from clipboard. Location configurable in preferences.\n- **Export** — write a Blender-importable `.py` keyconfig script. Export only what you changed (default) or the whole thing.\n- **Import** — load a previously exported `.py` back. Parsing is safe (`ast.literal_eval`), no code execution.\n\n---\n\n## Keyboard navigation\n\nFull keyboard-only workflow for accessibility:\n\n- `Tab` / `Shift+Tab` — cycle focus: Keys → Editors → Modes → Operators → Info\n- Arrow keys — move around the keyboard layout, or scroll lists\n- `Enter` — select / toggle\n- Focus ring shows where you are\n\n---\n\n## Shortcuts reference\n\n| Key | What it does |\n|-----|--------------|\n| `ESC` | Close visualizer / cancel |\n| `/` or `Ctrl+F` | Search operators |\n| `?` | Reverse-lookup (find key by shortcut) |\n| `D` | Toggle diff view |\n| `Ctrl+Z` / `Ctrl+Shift+Z` | Undo / Redo |\n| `Tab` / `Shift+Tab` | Cycle focus |\n| Arrow keys | Navigate keyboard / scroll |\n| `Enter` | Select key / toggle filter |\n\n### Mouse\n\n| What you do | What happens |\n|-------------|--------------|\n| Left-click a key | Select it, see its bindings |\n| Left-click a modifier | Toggle that modifier |\n| Right-click a key | Open context menu |\n| Left-click Export / Import / Presets | Open that tool |\n| Drag resize handle | Scale the keyboard |\n| Mouse wheel | Scroll the panel under the cursor |\n| Middle-drag | Drag-scroll a panel |\n\n---\n\n## Install\n\n**From the Blender Extensions platform** *(easiest, once listed)*\nEdit → Preferences → Get Extensions → search \"Keymap Visualizer\" → Install.\n\n**From the zip**\n1. Download `keymap_visualizer-1.0.0.zip` from the [Releases page](https://github.com/devanshutak25/blenderKey/releases)\n2. Edit → Preferences → Get Extensions → dropdown → **Install from Disk…**\n3. Pick the zip\n4. Restart Blender (required — the addon registers a topbar button at startup)\n\n**From source** *(for development)*\nClone the repo, then copy the `keymap_visualizer/` folder into:\n\n```\n# Windows\n%APPDATA%\\Blender Foundation\\Blender\\\u003cversion\u003e\\extensions\\user_default\\\n\n# macOS\n~/Library/Application Support/Blender/\u003cversion\u003e/extensions/user_default/\n\n# Linux\n~/.config/blender/\u003cversion\u003e/extensions/user_default/\n```\n\n---\n\n## How to use it\n\nOpen from **Edit → Keymap Viz** in the top menu bar. A new window opens with the keyboard.\n\n- **Hover** — preview bindings\n- **Left-click** — lock the info panel to that key\n- **Right-click** — rebind, unbind, or reset\n- **Ctrl / Shift / Alt / OS buttons** — filter by modifier combo\n- `/` — search by operator name\n- `?` — find a key by pressing its shortcut\n- `D` — see what you've changed from defaults\n- `Ctrl+Z` / `Ctrl+Shift+Z` — undo / redo\n\n---\n\n## Preferences\n\n**Edit → Preferences → Add-ons → Keymap Visualizer:**\n\n- **Keyboard Layout** — pick your layout, form factor (ANSI/ISO), and size (100%–60%)\n- **Export / Import** — output path, scope (modified-only or all), import path\n- **Presets** — folder to store preset JSON files\n- **Fonts** — custom TTF paths for key labels and command labels (optional)\n- **Theme** — 8 base color tokens. All other colors derive from these.\n- **Category Colors** — turn on/off, customize all 13 category colors\n- **Advanced Color Overrides** — 29 fine-grained per-element color pickers (collapsed by default — open only if the base tokens aren't enough)\n\n---\n\n## Category colors\n\n\u003cimg width=\"1127\" height=\"1320\" alt=\"blender_nMHIr6LGG6\" src=\"https://github.com/user-attachments/assets/ff16bbc2-8f1b-4916-9063-516c04df8660\" /\u003e\n\nKeys are tinted by what they do. 13 categories — Transform, Navigation, Mesh, Object, Edit, Sculpt, Paint, UV, Nodes, Animation, Playback, File, System. Each color is individually configurable. Legend shown above the keyboard. Turn the whole system off if you prefer plain keys.\n\n---\n\n## Project layout\n\n```\nkeymap_visualizer/\n  __init__.py       # Addon registration\n  blender_manifest.toml  # Extension metadata\n  constants.py      # Enums, color tokens, layout constants\n  drawing.py        # GPU rendering (keys, panels, overlays)\n  export.py         # Python keymap script export/import\n  handlers.py       # Event handling and input dispatch\n  hit_testing.py    # Mouse-to-key hit detection\n  icons.py          # Icon loading and texture atlas\n  keyboards.py      # Physical/logical keyboard definitions\n  keymap_data.py    # Keymap introspection and diffing\n  layout.py         # Key position/size calculations\n  operators.py      # Blender operators (modal, launch)\n  preferences.py    # Addon preferences and theme settings\n  presets.py        # Preset save/load/delete\n  state.py          # Runtime state, undo/redo, selections\n```\n\n---\n\n## Contributing\n\n1. Fork, branch, change, PR\n2. One feature or fix per PR\n3. Test in Blender 5.1+\n4. Clear description of what changed and why\n\n---\n\n## License\n\nGPL-3.0-or-later — see [LICENSE](LICENSE). Required by the Blender Extensions platform since Blender itself is GPL.\n\nBundles **Roboto Condensed** font (Apache-2.0, © 2011 Google Inc.) — see [keymap_visualizer/fonts/LICENSE.txt](keymap_visualizer/fonts/LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanshutak25%2FblenderKey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevanshutak25%2FblenderKey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanshutak25%2FblenderKey/lists"}