[CEP]注册快捷键

link: https://justintaylor.tv/hotkeys-in-cep/

问题

向Adobe CEP 扩展添加快捷键有点麻烦。因为是先将快捷方式发送到主机应用程序(AE、PPRO 等),如果主机不使用,再将它们发送到 CEP 面板。为了解决这个问题,Adobe 提供了一种方法来“注册”希望保留在您的应用程序中使用的某些组合键,方法是传递一个 JSON 字符串,其中详细列出了您想要的键盘快捷键。

const csi = new CSInterface();

const keyEvents = [{
    "keyCode": 90,
    "ctrlKey": false,
    "altKey": false,
    "shiftKey": false,
    "metaKey": true
}];

csi.registerKeyEventsInterest(JSON.stringify(keyEvents));

延伸

大量键盘快捷键以及跨平台的解决方案

const keyRegisterOverride = () => {
    const platform = navigator.platform.substring(0, 3);
    let maxKey;
    if (platform === 'Mac')
        maxKey = 126; // Mac Max Key Code
    else if (platform === 'Win')
        maxKey = 222; // HTML Max Key Code
    let allKeys = [];
    for (let k = 0; k <= maxKey; k++) {
        for (let j = 0; j <= 15; j++) {
            const guide = (j >>> 0).toString(2).padStart(4, '0');
            allKeys.push({
                keyCode: k,
                ctrlKey: guide[0] == 1,
                altKey: guide[1] == 1,
                shiftKey: guide[2] == 1,
                metaKey: guide[3] == 1
            });
        }
    }
    const csi = new CSInterface();
    const keyRes = csi.registerKeyEventsInterest(JSON.stringify(allKeys));
    console.log('Key Events Registered Completed: ' + keyRes);
};

file

注意事项

请注意,即使使用此方法,某些键盘快捷键也根本无法在 CEP 面板中使用,其中大部分都在 Mac 上,包括command/meta键