перехват события клика и отмена клика
Я использую электрон, делаю макрос, отслеживаю нажатие правой мышки, после чего происходит нажатие на кнопку "5" и клик левой мышки и снова нажатие на кнопку "q", но мне нужно что бы по итогу нажатие правой мышки отменилось после обнаружение моим макросом, можно ли это как то реализовать?
const robot = require("robotjs") const keys = require('global-keys') const keyStream = new keys.KeyStream() keyStream.on('data', state => { console.log(state); // array of ascii codes if(state[0]===2){ robot.keyToggle('5', 'down') robot.setKeyboardDelay(1) robot.keyToggle('5', 'up') robot.mouseToggle("down"); robot.setMouseDelay(1) robot.mouseToggle("up"); robot.mouseToggle("down"); robot.setMouseDelay(1) robot.mouseToggle("up"); robot.keyToggle('q', 'down') robot.setKeyboardDelay(1) robot.keyToggle('q', 'up') } }) и если это возможно, подскажите как :blink: , или тыкните меня носом в статью, заранее спасибо |
abadon, насколько я понимаю, JS он и в Node.JS - JS... :)
Значит и события там реализованы одинаково. Т.ч. про отмену всплытия событий ты можешь почитать тут https://learn.javascript.ru/event-bu...enie-vsplytiya |
abadon, сколько ни читаю про события в Ноде, там нет упоминаний о том как прекратить вызов обработчиков, навешанных на событие...
https://js-node.ru/site/article?id=22 https://nodejsdev.ru/doc/event-emitter/ :( В Ноде даже нет понятия о "всплытии" события, т.к. нет собственно "родителей", это чисто браузерная фишка... |
abadon,
:) наугад ... if(state[0]===2){ keyStream.removeAllListeners(['data']); или let on = true; keyStream.on('data', state => { console.log(state); // array of ascii codes if(state[0]===2 && on){ on = false; |
да вы правы js он и в nodejs - js но с некоторыми задачами нужно заморочится, я пробовал стандартными способами как в браузере отлавливать события, и все бы хорошо, да вот только за пределами моей программы, скажем на рабочем столе события не отлавливались, поэтому пришлось находить модуль для глобального отлова событий, и информации про это очень мало
|
Рони, 1 вариант отключает полностью отлов событий, но это для моей программы, я еще задумался над тем что даже если найти способ заблокировать правый клик, то все равно не факт что он будет блокироватся глобально, допустим у меня открыт браузер и моя программа, я кликнул правой мышкой, но браузер то так же отслеживает события и он покажет мне контекстное меню, и тут вопрос в том а кто первее перехватит событие, моя программа или браузер, так как если моя программа отловит событие после того как отловит браузер то это уже бесполезно, вобщем задачка очень сложная, я предполагаю что еще нужно сделать так что бы именно моя программа первая могла получить события а только потом все остальные программы, если что я использую еще electron
|
я хз че там афтор хотел, но я понял, что он хочет отлавливать клик на уровне ОС, т.е. пропускать или не пропускать клик в зависимости от кейса, тогда:
https://wilix-team.github.io/iohook/...ickpropagation |
Спасибо
|
Часовой пояс GMT +3, время: 02:34. |