hotkey について
キーボードショートカットを追加する開発者向けガイドです。定数、登録設定、翻訳、フックの変更手順と、任意のツールチップ追加方法を説明します。
主な機能
- 01ホットキー識別子の追加
- 02デフォルトショートカットの登録
- 03ローカライズされたタイトルと説明の追加
- 04フックの作成と登録
- 05任意のツールチップ追加
- 06スコープとキー競合の確認
活用シーン
- 01チャット操作へのショートカット追加
- 02設定画面へのショートカット表示
- 03反応しないショートカットの調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lobehub/ lobehub --skill hotkeyインストール後、Claude Code で/hotkeyを入力して読み込まれたか確認します。
詳細
キーボードショートカット追加ガイド
新しいホットキーを追加する手順
1. ホットキー定数を更新する
packages/types/src/hotkey.ts で、HotkeyId ユニオンに新しい ID を追加します。これは、HotkeyEnum の型定義の基準となる唯一の情報源です。
export type HotkeyId =
| 'addUserMessage'
// existing...
| 'saveTopic';
2. デフォルトのホットキーを登録する
packages/const/src/hotkeys.ts では、KeyEnum と combineKeys はすでにこのファイル内で定義されているため、インポートは不要です。HotkeyEnum と HOTKEYS_REGISTRATION にエントリーを追加します。
export const HotkeyEnum = {
// existing...
SaveTopic: 'saveTopic',
} as const satisfies Record<string, HotkeyId>;
export const HOTKEYS_REGISTRATION: HotkeyRegistration = [
// existing...
{
group: HotkeyGroupEnum.Conversation,
id: HotkeyEnum.SaveTopic,
keys: combineKeys([KeyEnum.Alt, 'n']),
scopes: [HotkeyScopeEnum.Chat],
},
];
3. i18n 翻訳を追加する
packages/locales/src/default/hotkey.ts で次のようにします。
const hotkey: HotkeyI18nTranslations = {
saveTopic: {
desc: '保存当前话题并新建一个话题',
title: '保存话题',
},
};
4. フックを作成して登録する
src/hooks/useHotkeys/chatScope.ts で次のようにします。
export const useSaveTopicHotkey = () => {
const openNewTopicOrSaveTopic = useChatStore((s) => s.openNewTopicOrSaveTopic);
return useHotkeyById(HotkeyEnum.SaveTopic, openNewTopicOrSaveTopic);
};
export const useRegisterChatHotkeys = () => {
useSaveTopicHotkey();
// ...other hotkeys
};
5. ツールチップを追加する(任意)
const saveTopicHotkey = useUserStore(settingsSelectors.getHotkeyById(HotkeyEnum.SaveTopic));
<Tooltip hotkey={saveTopicHotkey} title={t('saveTopic.title', { ns: 'hotkey' })}>
<Button icon={<SaveOutlined />} onClick={openNewTopicOrSaveTopic} />
</Tooltip>;
ベストプラクティス
- スコープ:機能に応じて、グローバルまたはチャットのスコープを選択します
- グループ分け:適切なグループ(System/Layout/Conversation)に配置します
- 競合の確認:システムやブラウザーのショートカットと競合しないことを確認します
- プラットフォーム:
CtrlやCmdをハードコードせず、KeyEnum.Modを使用します - 明確な説明:ユーザー向けにタイトルと説明を設定します
トラブルシューティング
- 動作しない:スコープと RegisterHotkeys フックを確認します
- 設定に表示されない:HOTKEYS_REGISTRATION の設定を確認します
- 競合する:HotkeyInput コンポーネントに警告が表示されます
- ページ固有の動作:正しいスコープが有効になっていることを確認します
コメント
Markdown 対応