gpt4 book ai didi

javascript - 如何检测 Node.js 中的键序列以执行某些操作

转载 作者:行者123 更新时间:2023-12-03 12:55:56 28 4
gpt4 key购买 nike

我有一个 RFID 阅读器,它会在扫描卡时发送一系列击键。我正在使用 iohook监听按键并在按键序列被按下时执行一些操作。

确切的顺序是这样的

2
1
5
9
4
5
8
1
0
5
5
enter

问题是我不知道如何检查这个序列。 在此序列之前和之后还有其他按键被按下。 我尝试将每个按键都添加到一个数组中,但后来我的数组变得非常大,我不知道在什么时候应该清除我的数组。

到目前为止,这是我的代码
const ioHook = require('iohook')
let keys_pressed = []

ioHook.on("keydown", event => {
keys_pressed.push(event)
console.log(keys_pressed)
})

ioHook.start()

最佳答案

假设您想在输入后立即检测正确的序列,您可以使用 keys_pressed数组始终具有相同的长度(这是您正在寻找的序列的长度) - 您不需要在内存中保留更多的元素。每次击键,删除最旧的元素并添加最新的元素,并查看最后按下的顺序是否与您要查找的顺序相同

const ioHook = require('iohook')

const predefinedSequence = ['2', '1', '5', '9', '4', '5', '8', '1', '0', '5', '5', 'enter']

const compareSequences = (seq1, seq2) => {
if (seq1.length !== seq2.length) return false
for (let i = 0; i < seq1.length; i++) {
if (seq1[i] !== seq2[i]) return false
}
return true
}

// create keys_pressed array of the same length as predefinedSequence
const keys_pressed = new Array(predefinedSequence.length)

ioHook.on("keydown", event => {
keys_pressed.shift() // remove the oldest item from the start of the array
keys_pressed.push(event) // push the newest item to the end
if (compareSequences(predefinedSequence, keys_pressed)) {
console.log('sequence detected')
}
})

ioHook.start()

关于javascript - 如何检测 Node.js 中的键序列以执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824487/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com