create-next-app@13.4.19 で初期コードを生成後、実現したいフックを書いてみました。
保存のショートカットキーで、指定した処理を実行するフック
Mac なら Command + S、Mac でなければ CTRL + S で指定した処理を実行します。
"use client"
import { useEffect } from 'react';
export default function useSaveKey(saveFunc: ()=> void) {
  useEffect(() => {
    function onKeyDown(e: KeyboardEvent) {
      const isMac = window.navigator.userAgent.indexOf("Mac") !== -1;
      const isCtrl = isMac ? e.metaKey : e.ctrlKey;
      if (e.key === 's' && isCtrl) {
        e.preventDefault();
        saveFunc();
      }
    }
    document.addEventListener('keydown', onKeyDown);
    return () => document.removeEventListener("keydown", onKeyDown)
  }, [saveFunc])
}使用例
初期で生成された page.tsx に追加してみた。
"use client"
import Image from 'next/image'
import useSaveKey from './useSaveKey';
export default function Home() {
  useSaveKey(() => console.log('save.'));
  return (
(以下略)アップデートに期待するライブラリ
useKeyPress というフックがあったので試しましたが、動作しませんでした。
動作環境によって Command か CTRL かを変えられるかも不明ですが。
 
 

コメント