diff --git a/src/constants.ts b/src/constants.ts index d1b89ea..1aac189 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -18,7 +18,8 @@ export const IPC_COMMANDS = { MACHINE_RESTART: 'MACHINE_RESTART', MACHINE_STOP: 'MACHINE_STOP', MACHINE_RESET: 'MACHINE_RESET', - MACHINE_ALTF4: 'MACHINE_ALTF4', + MACHINE_ALT_F4: 'MACHINE_ALT_F4', + MACHINE_ALT_ENTER: 'MACHINE_ALT_ENTER', MACHINE_CTRL_ALT_DEL: 'MACHINE_CTRL_ALT_DEL', // Machine events MACHINE_STARTED: 'MACHINE_STARTED', diff --git a/src/main/menu.ts b/src/main/menu.ts index 8dbaeff..be7a1f4 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -111,6 +111,16 @@ async function createMenu({ isRunning } = { isRunning: false }) { click: () => send(IPC_COMMANDS.MACHINE_CTRL_ALT_DEL), enabled: isRunning }, + { + label: "Send Alt+F4", + click: () => send(IPC_COMMANDS.MACHINE_ALT_F4), + enabled: isRunning + }, + { + label: "Send Alt+Enter", + click: () => send(IPC_COMMANDS.MACHINE_ALT_ENTER), + enabled: isRunning + }, { type: "separator" }, diff --git a/src/renderer/emulator.tsx b/src/renderer/emulator.tsx index 3dc18e9..779a250 100644 --- a/src/renderer/emulator.tsx +++ b/src/renderer/emulator.tsx @@ -119,6 +119,32 @@ export class Emulator extends React.Component<{}, EmulatorState> { } }); + ipcRenderer.on(IPC_COMMANDS.MACHINE_ALT_F4, () => { + if (this.state.emulator && this.state.isRunning) { + this.state.emulator.keyboard_send_scancodes([ + 0x38, // alt + 0x3E, // f4 + + // break codes + 0x38 | 0x80, + 0x3E | 0x80 + ]); + } + }); + + ipcRenderer.on(IPC_COMMANDS.MACHINE_ALT_ENTER, () => { + if (this.state.emulator && this.state.isRunning) { + this.state.emulator.keyboard_send_scancodes([ + 0x38, // alt + 0, // enter + + // break codes + 0x38 | 0x80, + 0 | 0x80 + ]); + } + }); + ipcRenderer.on(IPC_COMMANDS.MACHINE_STOP, this.stopEmulator); ipcRenderer.on(IPC_COMMANDS.MACHINE_RESET, this.resetEmulator); ipcRenderer.on(IPC_COMMANDS.MACHINE_START, this.startEmulator);