[Bf-blender-cvs] [630e94791f6] master: Keymap: automate using OSKey for Ctrl on macos
Campbell Barton
noreply at git.blender.org
Thu May 9 08:19:13 CEST 2019
Commit: 630e94791f62b2801c58f8745cb546906f9a6ef5
Author: Campbell Barton
Date: Thu May 9 16:09:25 2019 +1000
Branches: master
https://developer.blender.org/rB630e94791f62b2801c58f8745cb546906f9a6ef5
Keymap: automate using OSKey for Ctrl on macos
Replace hard coded use of oskey with a function.
Add checks to avoid conflicting bindings with the OS.
===================================================================
A release/scripts/modules/bl_keymap_utils/platform_helpers.py
M release/scripts/presets/keyconfig/blender.py
M release/scripts/presets/keyconfig/blender_27x.py
M release/scripts/presets/keyconfig/industry_compatible.py
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
===================================================================
diff --git a/release/scripts/modules/bl_keymap_utils/platform_helpers.py b/release/scripts/modules/bl_keymap_utils/platform_helpers.py
new file mode 100644
index 00000000000..9aacb08e109
--- /dev/null
+++ b/release/scripts/modules/bl_keymap_utils/platform_helpers.py
@@ -0,0 +1,55 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+
+def keyconfig_data_oskey_from_ctrl(keyconfig_data_src, filter_fn=None):
+ keyconfig_data_dst = []
+ for km_name, km_parms, km_items_data_src in keyconfig_data_src:
+ km_items_data_dst = km_items_data_src.copy()
+ items_dst = []
+ km_items_data_dst["items"] = items_dst
+ for item_src in km_items_data_src["items"]:
+ item_op, item_event, item_prop = item_src
+ if "ctrl" in item_event:
+ if filter_fn is None or filter_fn(item_event):
+ item_event = item_event.copy()
+ item_event["oskey"] = item_event["ctrl"]
+ del item_event["ctrl"]
+ items_dst.append((item_op, item_event, item_prop))
+ items_dst.append(item_src)
+ keyconfig_data_dst.append((km_name, km_parms, km_items_data_dst))
+ return keyconfig_data_dst
+
+
+def keyconfig_data_oskey_from_ctrl_for_macos(keyconfig_data_src):
+ """Use for apple since Cmd is typically used in-place of Ctrl."""
+ def filter_fn(item_event):
+ if (item_event["type"] in {
+ 'H',
+ 'M',
+ 'SPACE',
+ 'W',
+ }) and (
+ item_event.get("ctrl") and
+ (not item_event.get("alt")) and
+ (not item_event.get("shift"))
+ ):
+ return False
+ return True
+
+ return keyconfig_data_oskey_from_ctrl(keyconfig_data_src, filter_fn)
diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py
index 138214f836d..6723346d4bf 100644
--- a/release/scripts/presets/keyconfig/blender.py
+++ b/release/scripts/presets/keyconfig/blender.py
@@ -120,6 +120,7 @@ blender_default = bpy.utils.execfile(os.path.join(dirname, "keymap_data", "blend
def load():
+ from sys import platform
from bpy import context
from bl_keymap_utils.io import keyconfig_init_from_data
@@ -138,6 +139,11 @@ def load():
use_pie_click_drag=kc_prefs.use_pie_click_drag,
),
)
+
+ if platform == 'darwin':
+ from bl_keymap_utils.platform_helpers import keyconfig_data_oskey_from_ctrl_for_macos
+ keyconfig_data = keyconfig_data_oskey_from_ctrl_for_macos(keyconfig_data)
+
keyconfig_init_from_data(kc, keyconfig_data)
diff --git a/release/scripts/presets/keyconfig/blender_27x.py b/release/scripts/presets/keyconfig/blender_27x.py
index eaa5dda4457..eb630482393 100644
--- a/release/scripts/presets/keyconfig/blender_27x.py
+++ b/release/scripts/presets/keyconfig/blender_27x.py
@@ -42,6 +42,7 @@ class Prefs(bpy.types.KeyConfigPreferences):
blender_default = bpy.utils.execfile(os.path.join(dirname, "keymap_data", "blender_default.py"))
def load():
+ from sys import platform
from bpy import context
from bl_keymap_utils.io import keyconfig_init_from_data
@@ -58,6 +59,12 @@ def load():
legacy=True,
),
)
+
+ if platform == 'darwin':
+ from bl_keymap_utils.platform_helpers import keyconfig_data_oskey_from_ctrl_for_macos
+ keyconfig_data = keyconfig_data_oskey_from_ctrl_for_macos(keyconfig_data)
+
+
keyconfig_init_from_data(kc, keyconfig_data)
diff --git a/release/scripts/presets/keyconfig/industry_compatible.py b/release/scripts/presets/keyconfig/industry_compatible.py
index 8ce38d4b40e..3f9ce98c7e5 100644
--- a/release/scripts/presets/keyconfig/industry_compatible.py
+++ b/release/scripts/presets/keyconfig/industry_compatible.py
@@ -46,25 +46,6 @@ def update_fn(_self, _context):
load()
-def keyconfig_data_oskey_from_ctrl(keyconfig_data_src):
- # TODO, make into more generic event transforming function.
- keyconfig_data_dst = []
- for km_name, km_parms, km_items_data_src in keyconfig_data_src:
- km_items_data_dst = km_items_data_src.copy()
- items_dst = []
- km_items_data_dst["items"] = items_dst
- for item_src in km_items_data_src["items"]:
- item_op, item_event, item_prop = item_src
- if "ctrl" in item_event:
- item_event = item_event.copy()
- item_event["oskey"] = item_event["ctrl"]
- del item_event["ctrl"]
- items_dst.append((item_op, item_event, item_prop))
- items_dst.append(item_src)
- keyconfig_data_dst.append((km_name, km_parms, km_items_data_dst))
- return keyconfig_data_dst
-
-
industry_compatible = bpy.utils.execfile(os.path.join(dirname, "keymap_data", "industry_compatible_data.py"))
@@ -79,7 +60,8 @@ def load():
keyconfig_data = industry_compatible.generate_keymaps(params)
if platform == 'darwin':
- keyconfig_data = keyconfig_data_oskey_from_ctrl(keyconfig_data)
+ from bl_keymap_utils.platform_helpers import keyconfig_data_oskey_from_ctrl_for_macos
+ keyconfig_data = keyconfig_data_oskey_from_ctrl_for_macos(keyconfig_data)
keyconfig_init_from_data(kc, keyconfig_data)
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 1ed17d80ce7..7d1102e3306 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -323,18 +323,6 @@ def km_window(params):
{"items": items},
)
- if params.apple:
- # Apple standard shortcuts. Cmd+F for search since F-keys are not easy to use.
- items.extend([
- op_menu("TOPBAR_MT_file_new", {"type": 'N', "value": 'PRESS', "oskey": True}),
- op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "oskey": True}),
- ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "oskey": True}, None),
- ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "oskey": True}, None),
- ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "oskey": True}, None),
- ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "oskey": True}, None),
- ("wm.search_menu", {"type": 'F', "value": 'PRESS', "oskey": True}, None),
- ])
-
if params.legacy:
# Old shorctus
items.extend([
@@ -495,9 +483,6 @@ def km_screen(params):
if params.apple:
# Apple undo and user prefs
items.extend([
- ("ed.undo", {"type": 'Z', "value": 'PRESS', "oskey": True}, None),
- ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "oskey": True}, None),
- ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "alt": True, "oskey": True}, None),
("screen.userpref_show", {"type": 'COMMA', "value": 'PRESS', "oskey": True}, None),
])
@@ -761,12 +746,6 @@ def km_outliner(params):
("outliner.id_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
])
- if params.apple:
- items.extend([
- ("outliner.id_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
- ("outliner.id_paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
- ])
-
return keymap
@@ -1102,12 +1081,6 @@ def km_view3d(params):
("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
])
- if params.apple:
- items.extend([
- ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
- ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
- ])
-
if not params.legacy:
# New pie menus.
items.extend([
@@ -1481,14 +1454,6 @@ def km_graph_editor(params):
("graph.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None),
])
- if params.apple:
- items.extend([
- ("graph.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
- ("graph.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
- ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True},
- {"properties": [("flipped", True)]}),
- ])
-
return keymap
@@ -1733,12 +1698,6 @@ def km_node_editor(params):
{"properties": [("data_path", 'tool_settings.snap_node_element')]}),
])
- if params.apple:
- items.extend([
- ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
- ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
- ])
-
return keymap
@@ -1764,11 +1723,6 @@ def km_info(params):
("info.report_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
])
- if params.apple:
- items.extend([
- ("info.report_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
- ])
-
return keymap
@@ -2019,14 +1973,6 @@ def km_dopesheet(params):
("anim.end_frame_set", {"type": 'END', "value": 'PRESS', "ctrl": True}, None),
])
- if params.apple:
- items.extend([
- ("
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list