提问人:Nae 提问时间:11/24/2017 最后编辑:Nae 更新时间:7/6/2021 访问量:223
如何获取快捷方式的平台特定信息?
How to get platform specific info for shortcuts?
问:
如何获取特定于平台的快捷方式或特定进程的键绑定?
例如,如何获取Windows上用于复制的快捷方式的信息?(如果可能的话,我想要所有标记语言的信息)我的意思是文本编辑和文件管理器的使用,也想知道它们是否独立。 Ctrl + C
答:
如果我理解你,你想重写浏览器的系统命令。在浏览器中,所有进程在某个事件后启动。您可以复制文本 ,如果您使用命令进行复制: ;您可以重写除 .
例:document.execCommand('copy')
paste
document.addEventListener('keydown', (ev) => {
if(ev.keyCode === 67 && ev.ctrlKey === true) { // ctrl+c
console.log(ev);
ev.preventDefault();//block default action of browser
}
});
和触发复制:
document.addEventListener('keydown', (ev) => { //ctrl+z
if(ev.keyCode === 90 && ev.ctrlKey === true) {
console.log(ev);
document.execCommand('copy');
ev.preventDefault();
}
});
所有 execCommand:https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
为了扩展我上面的评论,您需要检查以捕获标准的 macOS 快捷方式,这些快捷方式对基本的剪切/复制/粘贴/撤消使用与 Windows (X/C/V/Z) 相同的字母键,但结合使用不同的命令 (⌘) 修饰键。evt.metaKey
在大多数情况下,如果 Mac 用户也可以使用他们的控制键和快捷方式的命令键,这并没有什么坏处,因此最简单的解决方案是检查两者。下面是上一个答案中的代码,修改为执行此操作:
document.addEventListener('keydown', (ev) => {
if (ev.keyCode === 67 && (ev.ctrlKey || ev.metaKey)) { // Copy shortcut
console.log(ev);
ev.preventDefault(); // block default action of browser
}
});
在 Windows 系统上,您可能永远不会看到 true 的键盘事件,因为据我所知,任何使用 Win 键 (⊞) 的按键(理论上映射到 )都会在 Web 浏览器有机会查看之前被 Windows 拦截。metaKey
metaKey
如果你想探索更多关于键事件和修饰键的信息,我在这里整理了一个快速的 CodePen:https://codepen.io/kshetline/pen/MWmKrPM?editors=1010
上一个:函数有没有像*接口*这样的概念?
下一个:流与可观察对象
评论
Ctrl + C
vi(1)
emacs(1)
vi
Ctrl + C