问题描述:
在笔记本电脑上,多少会缺少一些按钮,例如“Home”、“End”、“PgUp”、“PgDn”,它们在笔记本电脑上的作用是,如果关闭Num,则可以从数字键盘访问这些按钮。但问题是在Blender中,不论是否开启还是关闭Num键,它仍然只识别数字键盘,无法访问“Home”、“End”等。
“Home”键在Blender中非常重要,尤其在Timeline和Dopesheet中,可以快速全面铺开时间轴轨迹,方面查阅和编辑。而笔记本电脑和一些精简键盘,缺少独立的“Home”键,将其融入到了数字键盘“7”中。
神奇的是,该功能在关闭Num后,其他的软件基本都能识别数字键盘“7”中的“Home”和数字键盘“1”中的“End”,唯独Blender不识别。最终问题,应是出在Blender键盘绑定问题上。
解决方案(并非最优解):
- 定位到Blender安装目录下的文件:\4.3\scripts\presets\keyconfig\keymap_data,用编辑器打开blender_default.py文件
- 在相对靠前的位置自定义一个函数,代码如下:
- 分别在def km_time_scrub_clip(_params)和def km_dopesheet(params)中调用函数remap_home(items)
- def km_time_scrub_clip(_params)为时间轴Timeline位置,def km_dopesheet(params)为Dopesheet位置
- 缺点:时间轴Timeline和Dopesheet中的"NUMPAD_7"和"NUMPAD_1"被直接替换成了“Home”、“End”,后续找到Num键检测机制后,再来完善。
# 重新定义Numpad中的Home、End等按键
def remap_home(items): numpad_mappings = {"HOME": "NUMPAD_7","END": "NUMPAD_1"}import copynumpad_items = []for (x, keyinfo, props) in items:if not (np_key := numpad_mappings.get(keyinfo.get("type"))):continuenumpad_keyinfo = copy.deepcopy(keyinfo)numpad_keyinfo["type"] = np_keyif props:props = copy.deepcopy(props)numpad_items.append((x, numpad_keyinfo, props))items.extend(numpad_items)