Значение электронной вставки из буфера обмена - PullRequest
2 голосов
/ 02 апреля 2019

Я играю с небольшим электронным приложением, чтобы создать простой метод копирования / вставки.

Я зарегистрировал горячую клавишу, используя globalShortcut:

globalShortcut.register(mod + '+' + key, () => { 
 clipboard.writeText(content);
 // Paste content to any input field/app
});

Возможно ли сейчас перейти в блокнот и нажать зарегистрированный модификатор, чтобы вставить содержимое?

Пример: Приложение загружает, регистрирует ярлык, который устанавливает буфер обмена с желаемым текстом.

Затем они переходят в форму, куда они хотят вставить этот контент, и нажимают на ключ, который вставляет его для них?

Это, по сути, способ, позволяющий персоналу устанавливать общие ярлыки / фрагменты текста с любыми комбинациями клавиш, которые они хотят. Поэтому, если они заполняют отчет 123, они могут просто нажать свою клавишу «Ctrl + Shift + R», которая вставляет содержимое, связанное с этой горячей клавишей.

Как я могу это сделать или симулировать Ctrl V, чтобы вызвать его?

Я испробовал как RobotJS (не поддерживает глобальные ярлыки), так и версию Java (предпочтительно не использовать в любом случае).

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Это сработало для меня, используя следующий код:

const { app, globalShortcut } = require('electron')
const robot = require('robotjs')

app.on('ready', () => {
    globalShortcut.register('Control+Shift+R', () => {

        console.log('Control+Shift+R is pressed')

        // simulate CTRL+V / CMD+V
        setTimeout(() => {
            robot.keyTap('v', process.platform==='darwin' ? 'command' : 'control')
        }, 150)
    })
})

app.on('will-quit', () => {
    globalShortcut.unregisterAll()
})

«Хитрость» здесь в том, чтобы задержать моделируемое нажатие клавиши на определенный интервал , чтобы распутать фактическое,физическое нажатие клавиши и имитация.С более короткими интервалами я часто видел появление буквы "v".

Вам нужно будет решить, стоит ли переходить на более длительную задержку (менее удобная для пользователя из-за долгого "ожидания", но вряд ли перепутает ключи)или более короткая задержка (быстрый ответ, более вероятный неверный результат из-за перепутывания нажатий клавиш).

Если мы говорим о слишком повторяющихся работах или больших фрагментах текста, это, вероятно, все равно сэкономит время.

0 голосов
/ 04 апреля 2019

Это связано с отсутствием меню приложения с привязками клавиш к родному буферу обмена. Это можно установить, создавая собственные комбинации клавиш, которые называются ускорителями.

Чтобы выполнить копирование / вставку, необходимо использовать content.paste () или content.copy (), эти методы выполняют команду редактирования вставить или скопировать на веб-странице.

Таким образом, вы можете установить ускоритель, который будет вызывать команду редактирования, такую ​​как копирование или вставка.

Пример:

const { app, globalShortcut } = require('electron')

app.on('ready', () => {
  // Register a 'CommandOrControl+Y' shortcut listener.
  globalShortcut.register('CommandOrControl+C', () => {
    // Do stuff when Y and either Command/Control is pressed.
    contents.copy()
  })

})

содержание документа

ускорители документов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...