m3e-shortcuts
M3E viewer.tsのキーボードショートカットを追加・編集・削除するためのガイド。ユーザーが「ショートカット追加」「キーバインド変更」「hotkey」「キーボード操作」などに言及したとき、または viewer.ts の keydown ハンドラを修正する必要があるときに使用する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
M3E viewer.tsのキーボードショートカットを追加・編集・削除するためのガイド。ユーザーが「ショートカット追加」「キーバインド変更」「hotkey」「キーボード操作」などに言及したとき、または viewer.ts の keydown ハンドラを修正する必要があるときに使用する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Read and write the M3E mind-map via local REST API at `/api/maps/`. Use this skill whenever the user asks to view, query, add, update, move, color, delete, or restructure nodes in an M3E map, or when they mention "map", "node", "tree", "色付け", "ノード", or refer to the M3E viewer. Also trigger on bulk edits, structural reorganization, listing/creating/renaming maps, resolving paths copied from the viewer, or operating on style attributes (fill / urgency / importance / status).
Minimal instruction for scoped worker agents. Use when receiving or preparing bounded worker tasks in M3E / Akaghef-System, and when an M3E request contains !!! / !!! or asks for recurrence prevention, durable rule changes, worker guardrails, or agent instruction updates.
Decide M3E map structure before writing or delegating. Use when a task involves scope, scopen/unscopen, layouting, display intent, facet choice, edge/link/alias choice, cross-facet relations, path ambiguity, or worker handoff.
Read and write the M3E mind-map via local REST API at `/api/maps/`. Use this skill whenever the user asks to view, query, add, update, move, color, delete, or restructure nodes in an M3E map, or when they mention "map", "node", "tree", "色付け", "ノード", or refer to the M3E viewer. Also trigger on bulk edits, structural reorganization, listing/creating/renaming maps, resolving paths copied from the viewer, or operating on style attributes (fill / urgency / importance / status).
ユーザーから投げられたアイデア・テーマを docs/ideas/<group>/<topic>/ フォルダに 「複数選択肢を並べる・採否を決めない・実装は考えない」方式で ブレインストーミング展開するスキル。レビュー前のアイデア整理用。 以下の場面でトリガーする: - 「ブレスト」「ブレインストーミング」「アイデアを整理」「アイデア化」と言われたとき - 「色々な選択肢を考えて」「網羅的に並べて」「いっぱい案を出して」と言われたとき - 「docs/ideas/に入れて」「idea化」「実行に移せる程度に詳細化された設計を作って」と言われたとき - ユーザーが新しいテーマや機能アイデアを投げてきて「フォルダ作って」「整理して」と言うとき - 「採用するかは決めない」「実装は考えない」前提で考えてほしいと言われたとき
Read and write the M3E mind-map via local REST API at `/api/maps/`. Use this skill whenever the user asks to view, query, add, update, move, color, delete, or restructure nodes in an M3E map, or when they mention "map", "node", "tree", "色付け", "ノード", or refer to the M3E viewer. Also trigger on bulk edits, structural reorganization, listing/creating/renaming maps, resolving paths copied from the viewer, or operating on style attributes (fill / urgency / importance / status).
| name | m3e-shortcuts |
| description | M3E viewer.tsのキーボードショートカットを追加・編集・削除するためのガイド。ユーザーが「ショートカット追加」「キーバインド変更」「hotkey」「キーボード操作」などに言及したとき、または viewer.ts の keydown ハンドラを修正する必要があるときに使用する。 |
M3Eのキーボードショートカットは final/src/browser/viewer.ts 内のグローバル keydown イベントハンドラで管理されている。ショートカット設定ファイルやレジストリは無く、if/else chainで直接記述するスタイル。
ショートカットの追加・編集・削除は以下の順序で行う。
まず以下のドキュメントを読み、現在のキー割り当てとアクション定義を把握する。
| ファイル | 内容 |
|---|---|
docs/06_Operations/Keybindings_Beta.md | キー → アクション名のマッピング(全キーの一覧) |
docs/06_Operations/Actions_Beta.md | アクション名 → 説明・備考 |
これらが「仕様」であり、実装の正解はここに書かれている。衝突チェックもこのドキュメントで行う。
実装対象は final/src/browser/viewer.ts の keydown ハンドラ。詳細は後述の「実装ガイド」を参照。
実装が完了したら、変更内容に応じて Keybindings_Beta.md と Actions_Beta.md を更新する。
Keybindings_Beta.md を更新Actions_Beta.md を更新Keybindings_Beta.md 側は — に戻す)ショートカット一覧のオーバーレイ(Ctrl/Alt 長押しで表示)は viewer.html 内の #shortcut-cheatsheet にハードコードされている。ショートカットを変更したら必ずこの HTML も同期させること。
beta/viewer.html(および同期時に final/viewer.html)内の <div id="shortcut-cheatsheet"> ブロック<div class="cheatsheet-row"><kbd>キー</kbd><span>説明</span></div>変更パターン:
<kbd> 内のキー表記を更新<div class="cheatsheet-group"> を新設npx tsc -p tsconfig.browser.json --noEmit
3つの独立した keydown ハンドラが存在する。目的に応じて正しいハンドラに追加すること。
| ハンドラ | 検索キーワード | 用途 |
|---|---|---|
| メインハンドラ | document.addEventListener("keydown" | ツリー操作全般(ノード選択、スコープ遷移、コピペ等) |
| インラインエディタ | input.addEventListener("keydown" | テキスト編集中のショートカット(Enter, Tab, Escape等) |
| リニアテキストパネル | linearTextEl?.addEventListener("keydown" | メモパネル内のショートカット(Ctrl+Enter保存等) |
document.addEventListener("keydown", (event: KeyboardEvent) => {
// ── ガード節 ──
if (!doc) return;
if (inlineEditor && document.activeElement === inlineEditor.input) return;
if (document.activeElement === linearTextEl) return;
// ── ショートカット定義(if → preventDefault → command → return) ──
// Ctrl系 → 特殊キー(Escape, Tab, Enter, F2) → 数字キー → Alt系 → 裸キー → 矢印キー
// この順序に意味がある:修飾キー付きが先、裸キーが後
});
if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey && event.key.toLowerCase() === "k") {
event.preventDefault();
myCommand();
return;
}
| やりたいこと | 条件式 |
|---|---|
| Ctrl/Cmd | (event.ctrlKey || event.metaKey) |
| Ctrl/Cmd+Shift | (event.ctrlKey || event.metaKey) && event.shiftKey |
| Alt | event.altKey |
| 裸キー(修飾なし) | !event.ctrlKey && !event.metaKey && !event.altKey && !event.shiftKey |
Mac互換のため、Ctrl条件には必ず event.metaKey を OR で含める。使わない修飾キーは明示的に !event.shiftKey 等で否定する(意図しない発火を防ぐため)。
| キーの種類 | 書き方 |
|---|---|
| アルファベット | event.key.toLowerCase() === "k" (CapsLock対応) |
| 数字 | event.key === "1" |
| 特殊キー | event.key === "Enter" ("Escape", "Tab", "F2", "Delete", "Backspace", "ArrowUp" 等) |
| 記号 | event.key === "]" |
ショートカットの挿入位置は優先度に直結する(最初にマッチしたものが発火)。
同じカテゴリ内では、既存のショートカットの近くに配置する。
event.preventDefault() — ブラウザデフォルト動作の抑止。必須。return — 後続ショートカットの発火を防止。必須。event.repeat — 長押し連打を防ぎたい場合は if (!event.repeat) ガードを追加(既存例: toggleReparentSource)。