main.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const { app, BrowserWindow } = require('electron')
  2. function createWindow () {
  3. const mainWindow = new BrowserWindow({
  4. width: 800,
  5. height: 600
  6. })
  7. mainWindow.webContents.session.on('select-hid-device', (event, details, callback) => {
  8. // Add events to handle devices being added or removed before the callback on
  9. // `select-hid-device` is called.
  10. mainWindow.webContents.session.on('hid-device-added', (event, device) => {
  11. console.log('hid-device-added FIRED WITH', device)
  12. // Optionally update details.deviceList
  13. })
  14. mainWindow.webContents.session.on('hid-device-removed', (event, device) => {
  15. console.log('hid-device-removed FIRED WITH', device)
  16. // Optionally update details.deviceList
  17. })
  18. event.preventDefault()
  19. if (details.deviceList && details.deviceList.length > 0) {
  20. callback(details.deviceList[0].deviceId)
  21. }
  22. })
  23. mainWindow.webContents.session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => {
  24. if (permission === 'hid' && details.securityOrigin === 'file:///') {
  25. return true
  26. }
  27. })
  28. mainWindow.webContents.session.setDevicePermissionHandler((details) => {
  29. if (details.deviceType === 'hid' && details.origin === 'file://') {
  30. return true
  31. }
  32. })
  33. mainWindow.loadFile('index.html')
  34. }
  35. app.whenReady().then(() => {
  36. createWindow()
  37. app.on('activate', function () {
  38. if (BrowserWindow.getAllWindows().length === 0) createWindow()
  39. })
  40. })
  41. app.on('window-all-closed', function () {
  42. if (process.platform !== 'darwin') app.quit()
  43. })