Keymapの選び方¶
PMEのホットキー設定画面。¶
そもそもKeymapって何?¶
Keymapは、Blenderの入力イベントをコンテキスト階層(モード → エディタ → 全体共通)で解決する仕組みです。
たとえば、Gキーはオブジェクトの移動ですが、スカルプトモードではグラブツールになります。Fキーはメッシュ編集では面の作成(Fill)、スカルプトではブラシ半径の変更になります。
このように、状況に応じてショートカットキーと機能を結びつけるのがKeymapです。
どうやって判断しているの?¶
BlenderのKeymapは階層構造をもっており、エディタータイプや編集モードごとにホットキー設定が格納されています。
Window / Screen
├── 3D View (3D Viewエリア全体)
│ ├── Mesh (メッシュ編集モード)
│ ├── Object Mode (オブジェクトモード)
│ ├── Sculpt (スカルプトモード)
│ └── その他のモード...
├── Image Editor (画像エディタ)
├── Outliner (アウトライナー)
└── その他のエディタ...
実際にキーイベントが発生したときにはコンテキストをチェックして、より具体的な(= 対象コンテキストの範囲が狭い)Keymapを優先してホットキーを走査します。
flowchart TD
A(キーが押される) --> B[1. Screen Editing をチェック]
B --> C[/該当するキーがある?\]
C -->|Yes| D[実行して終了]
C -->|No| E[2. 各エディタのKeymap をチェック]
E --> F[/モード固有/エディタ固有に該当する?\]
F -->|Yes| G[モード固有/エディタ固有を実行して終了]
F -->|No| H[3. Window / Screen をチェック]
H --> I[/該当するキーがある?\]
I -->|Yes| J[実行して終了]
I -->|No| K[何も実行されない]
レイヤー |
優先度 |
主な対象・例 |
|---|---|---|
Modal Handlers |
最高 |
Screen Editing(常時)/モーダルオペレータ(Transform, Grab などの実行中のみ) |
Area/Region Handlers |
中 |
Tool固有(アクティブツール)/Mode固有(Mesh, Sculpt, Object Mode)/Editor固有(3D View, Image Editor など) |
Window Handlers |
最低 |
Window/Screen |
Screen Editing
Screen Editing は、広い範囲で高い優先度で処理される特殊な Keymap です。競合が起きやすく、意図しない場面で発火する可能性があります。登録しても、すべての状況で実行されるとは限りません。
まずはエディタ/モード固有で定義し、必要最小限のみScreen Editingに置く
Pollメソッドを併用して発火条件を限定する
重要な既存キー(Tab, Space, LMB/RMBなど)は避ける。
Pollメソッドの併用¶
特定の条件でのみメニューを表示したい場合は、Pollメソッドを組み合わせて使用します:
# メッシュオブジェクトが選択されている場合のみ
ao = C.active_object; return ao and ao.type == 'MESH'
# 編集モードかつ面選択モードの場合のみ
return C.mode == 'EDIT_MESH' and C.tool_settings.mesh_select_mode[2]
# スカルプトモードかつDyntopoが有効な場合のみ
return C.mode == 'SCULPT' and C.active_object.use_dynamic_topology_sculpting
ヒント
PollメソッドがFalseを返した場合、実行されずに次のKeymapアイテムのチェックに進みます。 競合するホットキーがあっても、条件に応じて動作を切り替えることができます。
よくあるケース¶
- メッシュ編集モードでPie Menuを表示したい
Mesh(モード専用)- スカルプト中のブラシ切り替えメニュー
Sculpt(モード専用)- オブジェクトモードでメッシュオブジェクトが選択されている場合のみ
Object Mode+ Pollメソッドを使用- キーフレームに関する操作
Frames(全エディタで共通)- どのエディタでも共通の作成メニュー
WindoworScreen(全体共通)- 広い範囲で高い優先度の割り当てが必要な場合
Screen Editing(競合注意)
既存のキーマップを観察して選ぶ
迷ったら、Blender標準の割り当てから「逆引き」しましょう。
例:メッシュ編集のKeymapを探すため、Extrudeがどこに登録されているかを調べる
Edit > Preferences > Keymap を開く
検索欄に機能名/オペレーターID/既知のショートカットを入力
例: “Extrude”、
mesh.extrude_region_move、“Ctrl R”
一致した項目の Keymap パス(Editor > Mode)を確認
例: 3D View > Mesh、3D View、Screen、Window など
その層に合わせて、PMEで選ぶKeymapを決める
【見るべきポイント】
Keymapパス: Editor と Mode のどちらに属しているか
競合: 同じキーが既に定義されていないか
Keymapを探索すると、知られざる標準機能に出会うこともあります。