work: update FA maya config pro

This commit is contained in:
Nathan
2026-06-16 10:20:09 -06:00
parent 6c3b78075b
commit 6ff69f0080
19 changed files with 190 additions and 45 deletions
@@ -1,5 +1,5 @@
{
"last_check": "2026-05-27 14:41:11.263249",
"last_check": "2026-06-15 10:23:39.203210",
"backup_date": "May-27-2026",
"update_ready": false,
"ignore": false,
@@ -2,6 +2,11 @@
All notable changes to **Maya Config Pro** are listed here. Versions match `blender_manifest.toml`.
## [1.8.1] — 2026-06-16
### Fixed
- **Node Editor:** Alt+RMB drag works for **Node Wrangler Lazy Connect** again (FA Hotkeys + Blender default). Disabled conflicting `node.backimage_sample` and `node.move_detach_links_release` bindings; runtime patch applies on preset switch and add-on load.
## [1.8.0] — 2026-04-22
### WIP — Animation shelf (3D View)
@@ -2,7 +2,7 @@
Maya Config Pro - Blender Extension
A Maya-like configuration, shortcuts, and UI elements for Blender.
Version: 1.8.0
Version: 1.8.1
Author: Form Affinity (Jesse Doyle)
"""
@@ -12,7 +12,7 @@ Author: Form Affinity (Jesse Doyle)
bl_info = {
"name": "Maya Config Pro",
"author": "Form Affinity (Jesse Doyle)",
"version": (1, 8, 0),
"version": (1, 8, 1),
"blender": (4, 2, 0),
"location": "View3D > Sidebar > Maya Config",
"description": "Maya-like configuration, shortcuts, UI panels, and keymap presets",
@@ -50,6 +50,7 @@ from .ops import (
from .keyconfigs import fa_hotkeys
from .utils import deploy as deploy_util
from .utils import keymap_fix
from .ops import deploy_ops
@@ -190,6 +191,11 @@ def register():
except Exception as e:
print(f"Warning: Failed to sync keymaps: {e}")
try:
keymap_fix.patch_active_keyconfig()
except Exception as e:
print(f"Warning: Maya Config Pro: node editor keymap patch: {e}")
def unregister():
"""Unregister all classes and submodules"""
@@ -3,7 +3,7 @@ schema_version = "1.0.0"
id = "form_affinity_maya_config_pro"
name = "Maya Config Pro"
tagline = "Maya-like configuration, shortcuts, and UI elements for Blender"
version = "1.8.0"
version = "1.8.1"
type = "add-on"
maintainer = "Form Affinity"
@@ -10,6 +10,7 @@ that layer without restarting.
import bpy
from ..utils import compat
from ..utils import keymap_fix
# Import the keyconfig data
from . import fa_hotkeys_data
@@ -138,6 +139,10 @@ def sync_addon_keymaps() -> None:
if is_fa_keyconfig_active():
unregister_keymaps()
register_keymaps()
try:
keymap_fix.patch_node_editor_alt_rmb("FA_HOTKEYS")
except Exception:
pass
else:
unregister_keymaps()
@@ -2555,7 +2555,10 @@ keyconfig_data = \
},
),
("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, None),
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
{"active":False,
},
),
("node.link_make",
{"type": 'J', "value": 'PRESS'},
{"properties":
@@ -2768,6 +2771,7 @@ keyconfig_data = \
],
),
],
"active":False,
},
),
("node.move_detach_links",
@@ -7,6 +7,7 @@ import os
import bpy
from ..keyconfigs import fa_hotkeys
from ..utils import keymap_fix
from ..utils import compat
from ..utils import deploy as deploy_util
@@ -27,6 +28,10 @@ class MCP_OT_DeployKeymapPresets(bpy.types.Operator):
fa_hotkeys.sync_addon_keymaps()
except Exception:
pass
try:
keymap_fix.patch_active_keyconfig()
except Exception:
pass
else:
self.report({"ERROR"}, msg)
return {"FINISHED"} if ok else {"CANCELLED"}
@@ -109,6 +114,11 @@ class MCP_OT_ActivateKeymapPreset(bpy.types.Operator):
except Exception:
pass
try:
keymap_fix.patch_node_editor_alt_rmb(self.preset)
except Exception:
pass
return {"FINISHED"}
@@ -2555,7 +2555,10 @@ keyconfig_data = \
},
),
("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, None),
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
{"active":False,
},
),
("node.link_make",
{"type": 'J', "value": 'PRESS'},
{"properties":
@@ -2768,6 +2771,7 @@ keyconfig_data = \
],
),
],
"active":False,
},
),
("node.move_detach_links",
@@ -0,0 +1,104 @@
"""
Runtime fixes for Alt+RMB in node editor areas.
Node Wrangler Lazy Connect (node.nw_lazy_connect) uses Alt+RMB press/drag.
Native node.backimage_sample and node.move_detach_links_release block it.
"""
from __future__ import annotations
import bpy
def _find_keymap(kc, name: str, space_type: str):
try:
return kc.keymaps.find(name, space_type=space_type, region_type="WINDOW")
except Exception:
return None
def _set_kmi_active(km, *, idname: str, value: str, active: bool) -> None:
if not km:
return
for kmi in km.keymap_items:
if (
kmi.idname == idname
and kmi.type == "RIGHTMOUSE"
and kmi.value == value
and kmi.alt
and not kmi.shift
and not kmi.ctrl
):
kmi.active = active
def _lazy_connect_available() -> bool:
return "node_wrangler" in bpy.context.preferences.addons
def _ensure_lazy_connect(km) -> None:
if not km or not _lazy_connect_available():
return
for kmi in km.keymap_items:
if (
kmi.idname == "node.nw_lazy_connect"
and kmi.type == "RIGHTMOUSE"
and kmi.value == "PRESS"
and kmi.alt
and not kmi.shift
and not kmi.ctrl
and not getattr(kmi.properties, "with_menu", True)
):
kmi.active = True
return
kmi = km.keymap_items.new(
"node.nw_lazy_connect",
"RIGHTMOUSE",
"PRESS",
alt=True,
head=True,
)
kmi.properties.with_menu = False
def active_preset_name() -> str | None:
try:
stem = str(bpy.context.preferences.keymap.active_keyconfig or "").lower()
except Exception:
stem = ""
if stem == "fa_hotkeys":
return "FA_HOTKEYS"
if stem in {"industry_compatible", "industry compatible"}:
return "INDUSTRY"
if stem == "blender":
return "BLENDER"
return None
def patch_active_keyconfig() -> None:
preset = active_preset_name()
if preset:
patch_node_editor_alt_rmb(preset)
def _patch_keyconfig(kc) -> None:
if not kc:
return
km_node = _find_keymap(kc, "Node Editor", "NODE_EDITOR")
_set_kmi_active(km_node, idname="node.backimage_sample", value="PRESS", active=False)
_set_kmi_active(
km_node,
idname="node.move_detach_links_release",
value="CLICK_DRAG",
active=False,
)
_ensure_lazy_connect(km_node)
def patch_node_editor_alt_rmb(preset: str) -> None:
"""Free Alt+RMB for Node Wrangler Lazy Connect in node editors."""
wm = getattr(bpy.context, "window_manager", None)
if not wm:
return
_patch_keyconfig(wm.keyconfigs.active)
_patch_keyconfig(wm.keyconfigs.addon)