웹 사이트의 데스크탑 인터페이스를 만드는 전자 응용 프로그램을 만들고 있습니다. 웹 사이트에서 이미 사용 가능한 모든 키 바인딩 테이블을 보여주는 Shift+?
같은 키 바인딩이 등록되어 있습니다.전자 메일에서 웹 콘텐트에 키 바인딩을 보내는 (에뮬레이트하는) 방법은 무엇입니까?
키 바인딩에 해당하는 작업의 앱 메뉴를 만들어야합니다. 기술적으로 사용자가 메뉴 항목을 클릭하면 웹 페이지에서 키 바인딩이 실행됩니다. 예 :
메뉴 →Shift+?
키 바인딩의 사용자를 누르
도움말가 → 트리거되는 웹 페이지
keypress
→ 웹 페이지에 등록 된 모든 키 바인딩의 테이블이 나타납니다 보여줍니다 감지
.
문제는 webContents
에 Shift+?
키 바인딩을 보낼 수 없다는 것입니다. 이 시도는 실패 :
webContents.sendInputEvent({type:'char', keyCode: 'Shift+?' });
webContents.sendInputEvent({type:'keydown', keyCode: 'Shift+?' });
webContents.sendInputEvent({type:'keyup', keyCode: 'Shift+?'});
어떻게 (a.k.a 웹 페이지에 키 바인딩 전송) 특정 키 바인딩을 기반으로 작업을 수행 할 수있는 웹 페이지를 강제 할 수 있습니까?
UPD : 몇 가지 세부 정보를 찾았습니다. 이벤트 순서는 keyDown
, char
, keyUp
이어야합니다.
function sendKeybinding(win, keyCode) {
win.webContents.sendInputEvent({ type: 'keyDown', keyCode });
win.webContents.sendInputEvent({ type: 'char', keyCode });
win.webContents.sendInputEvent({ type: 'keyUp', keyCode });
}
이 다음과 같을 수 사용하는 MenuItem
: ?
만 입력 할 수 있습니다 Shift+?
이있는 경우에는 해치가
{
label: 'Show Keymap',
accelerator: ['Shift+/', '?'],
click(menuItem, browserWindow) {
sendKeybinding(browserWindow, '?');
},
}
, 나는 전송 키 바인딩을위한 편리한 기능을 만든 Shift
을 누르면 실제적으로 두 개의 가속기 Shift+/
과 ?
가 있습니다.
그러나 나는 아직도 CmdOrControl+B
과 같은 키 바인딩을 입력하는 방법을 모른다.
당신은 argument 객체의'modifiers' 속성을 사용하여 ried를 작성 했습니까? 'modifiers = [];처럼. modifiers.push ('shift'); sendInputEvents ({type : 'keyDown', modifiers, keyCode})' – pergy