我使用
react-hotkeys-hook
构建了一个应用程序并创建了多个热键。
这些最初是在 Mac 上编写的,现在我希望在 Linux 和 Windows 上实现它们,之后我会考虑不同的浏览器。现在,只关注 Chrome。
一般来说,Mac 应用程序倾向于使用命令键,而 Linux 和 Windows 倾向于使用控制键。例如,
meta+f
和 ctrl+f
在 Chrome 中都是 find
。
如果可能的话,我想针对不同的操作系统使用不同的热键,而不是在所有平台上使用相同的映射。
出于其他原因,我已经在我的应用程序中使用
react-device-detect
,但这样的东西不起作用,因为 useHotkeys
是一个钩子。
if (isWindows) {
useHotkeys(
"ctrl+shift+1",
() => {
// do something
},
{ enableOnFormTags: true, preventDefault: true }
);
} else if (isMacOs) {
useHotkeys(
"meta+alt+1",
() => {
// do something
},
{ enableOnFormTags: true, preventDefault: true }
);
}
任何有用的建议将不胜感激。
有多种方法可以避免条件挂钩调用,但在您的情况下,最简单、最干净的方法是根据操作系统对不同的击键做出反应。例如:
useHotkeys(
isWindows
? "ctrl+shift+1"
: isMacOs
? "meta+alt+1"
: "meta+1",
() => {
// do something
},
{
enableOnFormTags: true,
preventDefault: true
}
);