削除したはずのPMEキーマップが残り続ける(重複・ゴーストキーマップ)¶
重要
「削除したはずのPMEキーマップが、Blender再起動後に戻ってくる」
「PMEをアンインストールしたのに、空のPMEエントリが残っている」
「Keymap設定に
Call Menu (PME)が何重にも並んでいる」
これらの症状はPME単独の不具合ではなく、BlenderのKeymap Export/Importが層構造を 潰すという上流の仕様が原因で起きます。キーマップを多く登録する性質上、PMEで 表面化しやすくなっています。
こんな症状はありませんか?¶
次のいずれかに当てはまる場合、このページが扱う現象です。
Preferences > Keymap を開くと、同じホットキーの
Call Menu (PME)が何行も並んでいる重複行を手で削除しても、Blender再起動後または設定保存時に復活する
PMEアドオン自体を無効化・削除しても、空のPMEエントリが残り続ける
キーマップを触った覚えがないのに、他のアドオン・標準機能のホットキーがPMEに奪われたように動かなくなった
Keymap Editorで、パイメニュー名などの情報が空欄になっている「空のPMEエントリ」がある
コミュニティでは “ghost keymaps” と呼ばれ、長く議論されてきた現象です。
これはPME固有の不具合ではありません¶
同じ仕組みでキーマップを登録するアドオンなら同様に起きうる、Blender側の キーマップシステムの設計に由来する問題です。PMEはパイメニュー・ポップアップなど 多数のキーマップを扱うため、他のアドオンより症状が目立ちやすくなっています。
なぜ起きるのか¶
BlenderのKeymapは4層構造¶
BlenderはKeymapを4つの層で管理しています。
層 |
役割 |
保存される? |
|---|---|---|
default |
工場出荷時の設定(リセット時の復元先) |
— |
active |
現在のプリセット( |
✅ |
addon |
アドオンが登録するキーマップ。Blender起動ごとに再構築される |
— |
user |
UIに見えるもの = active + addon を合成した結果。 |
(差分のみ) |
この層構造があるからこそ、「アドオンのキーマップ」「ユーザーのカスタマイズ」 「工場出荷状態へのリセット」を共存させられます。
Export/Importがこの層構造を潰す¶
Preferences > Keymap の Export Key Configuration / Import Key Configuration、
および Save as Preset(プリセット保存)を実行すると、Blender は内部的に次の処理を行います。
user層で どれか1つでも編集されているKeyMap(
km.is_user_modified = True)を ピックアップするそのKeyMapに含まれるすべての項目をコピーする(アドオン由来の項目も区別なく)
コピーを active層に焼き付ける
問題は 2 です。フラグはKeyMap単位で立つので、たった1つのキーを編集しただけで、 そのKeyMap内のアドオン登録項目もまとめて「ユーザー設定」として保存されてしまいます。
再起動のたびに重複が積み上がる¶
アドオン(PMEを含む)は、Blender起動時に自分のキーマップを addon層に登録し直します。 しかし上の手順で焼き付けられたコピーは、すでに active層に残っています。
結果として同じキーマップ項目が active と addon の両方に存在し、
user 層の見た目で重複として現れます。Export/Import やプリセット切り替えを繰り返すと、
この重複がさらに積み重なります。
ゴースト(空の項目)はなぜ消せないのか¶
PMEは自分で登録したキーマップを削除するとき、idname とプロパティ値の組み合わせで
対象を識別しています。ところがExport/Importを経由すると、プロパティ情報が欠落して
is_property_set() が機能しない項目が生まれることがあります。
この状態になると、PMEはその項目を「自分が登録したもの」と認識できず、自動削除の対象に なりません。これが「PMEアドオンを外してもゴーストだけが残る」理由です。
復旧¶
ステップ1: Keymap Doctor でスキャンする¶
Preferences > Settings > Hotkeys の Keymap Doctor では、空のPMEキーマップ項目、
active keyconfig に混入した PME 項目、PME Hotkey と現在有効な Blender キーマップとの
競合を観測できます。
まずは Scan Keymaps を実行してください。
検出結果は次のように表示されます。
空のPME項目の総数
影響を受けているキーマップ数
どの layer に存在するか
件数が多いキーマップ名
activekeyconfig に PME 項目が存在するか同じキーマップ内で競合する Hotkey と相手の operator
PME dispatcher が Hotkey Mode・CHORD・mouse modifier で振り分ける重複の件数
判定を完了できなかった Hotkey の件数
必要なら Copy Summary で匿名化済みの概要をクリップボードへコピーし、 Open Report Folder でローカル詳細レポートの保存場所を開けます。詳細レポートには メニュー名や内部識別情報が含まれるため、外部へ共有する前に内容を確認してください。
スキャンは観測専用です。検出した Hotkey の割り当てや競合相手を自動的に変更・削除しません。
重要
問題の切り分けに役立つので、可能なら Clean Up Empty Items を押す前に Copy Summary の内容を support / forum へ提出してください。詳細レポートが必要な場合は、 内容を確認したうえで共有してください。
ステップ2: Clean Up Empty Items で削除する¶
スキャン結果で空のPME項目が見つかったら、Clean Up Empty Items を実行します。
この操作は、プロパティが空だと断言できる wm.pme_user_pie_menu_call 項目だけを
保守的に削除します。通常のPMEホットキーや、意味の読み取れる項目までは触れません。
過去の事例では、1回の cleanup で279件の空PME項目が削除された報告があります。 症状が軽いうちは数件、放置した環境では数百件になることがあります。
ステップ3: 変更を定着させる¶
cleanup で削除した結果は、保存しないと再起動時に戻ってくることがあります。 まずは次を試してください。
Preferences > 左下のハンバーガーメニュー > Save Preferences
これで定着すれば完了です。
注意
もし Save Preferences では再起動時に元に戻ってしまう場合、ユーザー報告では 一度だけ Export → Import を行うことで定着したケースがあります。
ただし Export/Import はこの問題の原因でもあるので、掃除直後のワンショットに 限定し、以降は使わないでください。
ステップ4: それでも解決しないとき¶
重複が深く絡み合っている場合、設定フォルダをクリーンにする方が早いことがあります。
PMEの設定をPME側のエクスポート機能でバックアップする
Blenderを終了する
Blenderの config フォルダを別名に退避(またはバックアップしてから削除)
Blenderを起動してクリーン状態から再セットアップ
必要な設定をインポートし直す
設定フォルダの場所は、File > Defaults > Show Preferences Location などで確認できます。
古いPMEを使っている場合: legacy script を使う¶
PME にまだ Maintenance セクションが無い版では、以前の救済スクリプト
pme_keymap_cleaner.py を使う方法があります。
このスクリプトは PME 内部ユーティリティを使うため、PMEがインストール・有効化されている 状態で実行してください。PMEを先にアンインストールしてしまった場合は、一度再インストール してから実行する必要があります。
予防¶
一度掃除したら、再発させないための運用に切り替えるのが重要です。
1. BlenderのKeymap Export/Importを原則使わない¶
最大の予防策は、Blender標準の Keymap Export / Import を使わないことです。 Save as Preset(プリセット保存)も同じ仕組みで動作するため、同様に避けてください。
一度実行すると、以降の起動ごとに重複が発生し続ける可能性があります。
2. どうしてもエクスポートしたいとき: アドオンを一時的に無効化する¶
環境の引っ越しなどで本当にKeymapをエクスポートしたい場合は、PMEと、キーマップを 登録する他のアドオンを一時的に無効化してからエクスポートしてください。
こうすることで、アドオン由来のキーマップが active 層に焼き付くのを防げます。
インポート先でも同様に、アドオンを有効化する前にインポートしてください。
3. PMEのマクロを「ショートカット管理の窓口」にする¶
作者が推奨する運用として、PMEのマクロ機能を代理キーマップ(Proxy Keymap)として 使う方法があります。
Blender標準のKeymapを直接編集するのではなく、PMEのマクロとしてショートカットを定義する
そのマクロに PME 側でホットキーを割り当てる
Blenderの Keymap 設定はほとんど触らないまま運用する
この運用にすると、環境を移行するときも PMEの設定だけをエクスポートすれば 済むため、Blender側のKeymap Export/Importを回避できます。
注釈
代理キーマップは PME の処理が挟まるので、呼び出しごとに微小なオーバーヘッドが 発生します。パフォーマンスが厳しい操作には、カスタムアドオンとして実装するなど 別の手段を検討してください。
4. アドオンのホットキーをUIから削除しない¶
これは別の落とし穴ですが、同じ文脈でよく踏まれるので記載します。
Keymap Editorからアドオン登録のホットキーを削除すると、Blenderは**「削除した」 という差分を永続保存**します。
このため、次のような不思議な現象が起きます。
アドオンが同じホットキーを3つ登録
UIから3つとも削除する
Blender再起動
アドオンが同じホットキーを3つ登録 — どれもKeymap Editorに現れない(削除差分が残っているため)
同じホットキーを4つ目として登録 — ようやく現れる
不要なアドオンホットキーは削除せず、チェックを外して無効化するのが安全です。
関連¶
キーマップの選び方 — Keymapの選び方と探索順の基本