first commit
This commit is contained in:
commit
439ef7515d
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
*.log
|
||||||
77
app.js
Normal file
77
app.js
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
const { exec } = require("child_process");
|
||||||
|
const keys = require('./keys')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
var ding, savedLog = [], log = []
|
||||||
|
|
||||||
|
function emptyLog(i = 0){
|
||||||
|
for(var i=0; i<256; i++){
|
||||||
|
log[i] = 0
|
||||||
|
savedLog[i] = {
|
||||||
|
key: keys[i],
|
||||||
|
count: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onPress(data){
|
||||||
|
data = data.split(' ')
|
||||||
|
if(data[1] == 'press'){
|
||||||
|
keyCode = data[data.length-2]
|
||||||
|
|
||||||
|
//console.log(`${keys[keyCode]} (${keyCode}): ${log[keyCode]}`)
|
||||||
|
|
||||||
|
log[keyCode] += 1;
|
||||||
|
|
||||||
|
if(typeof keys[keyCode] == 'undefined' || keys[keyCode].split(' ')[0] == '[unknown'){
|
||||||
|
console.log(`unknown key pressed: ${keys[keyCode]} (${keyCode})`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startLog(){
|
||||||
|
saveLog()
|
||||||
|
ding = exec("xinput test 10")
|
||||||
|
ding.stdout.on('data', onPress);
|
||||||
|
ding.on('close', startLog)
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveLog(){
|
||||||
|
var total = 0, data = { date: new Date().getTime(), log: []};
|
||||||
|
console.log('Curent numbers')
|
||||||
|
for(var i=0; i<log.length; i++){
|
||||||
|
// create data structure to save
|
||||||
|
savedLog[i].count += log[i]
|
||||||
|
data.log[i].count = {
|
||||||
|
key: keys[i],
|
||||||
|
count: savedLog[i].count
|
||||||
|
}
|
||||||
|
|
||||||
|
// print data to console
|
||||||
|
if(log[i] == 0) continue;
|
||||||
|
total += log[i]
|
||||||
|
console.log(`${keys[i]}: ${log[i]} (${i})`)
|
||||||
|
}
|
||||||
|
fs.writeFile(`${__dirname}/keystrokes${d.getFullYear()}-${d.getMonth()}-${d.getDate()}.log`, JSON.stringify(data), (err) => {
|
||||||
|
if(err) return console.error(err)
|
||||||
|
})
|
||||||
|
console.log(`total keypresses: ${total}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
function readLog(){
|
||||||
|
var d = new Date()
|
||||||
|
fs.readFile(`${__dirname}/keystrokes${d.getFullYear()}-${d.getMonth()}-${d.getDate()}.log`, function(err, json){
|
||||||
|
if(err) return console.error(err)
|
||||||
|
|
||||||
|
savedLog = JSON.parse(json).log
|
||||||
|
console.log(savedLog)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
emptyLog()
|
||||||
|
readLog()
|
||||||
|
startLog()
|
||||||
|
|
||||||
|
setInterval(function(){
|
||||||
|
ding.kill('SIGTERM')
|
||||||
|
}, 60*60*1000)
|
||||||
114
keys.js
Normal file
114
keys.js
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
module.exports = [
|
||||||
|
'[unknown 0]',
|
||||||
|
'[unknown 1]',
|
||||||
|
'[unknown 2]',
|
||||||
|
'[unknown 3]',
|
||||||
|
'[unknown 4]',
|
||||||
|
'[unknown 5]',
|
||||||
|
'[unknown 6]',
|
||||||
|
'[unknown 7]',
|
||||||
|
'[unknown 8]',
|
||||||
|
'[esc]',
|
||||||
|
'1','2','3','4','5','6','7','8','9','0','-','=','[backspace]',
|
||||||
|
'[tab]','q','w','e','r','t','y','u','i','o','p','[',']',
|
||||||
|
'[enter]',
|
||||||
|
'[left ctrl]',
|
||||||
|
'a','s','d','f','g','h','j','k','l',';','\'',
|
||||||
|
'`',
|
||||||
|
'[left shift]',
|
||||||
|
'\\',
|
||||||
|
'z','x','c','v','b','n','m',',','.','/','[right shift]',
|
||||||
|
'*',
|
||||||
|
'[alt]',
|
||||||
|
'[space bar]',
|
||||||
|
'[capslock]',
|
||||||
|
|
||||||
|
'[F1]','[F2]','[F3]','[F4]','[F5]','[F6]','[F7]','[F8]','[F9]','[F10]',
|
||||||
|
|
||||||
|
'[numlock]',
|
||||||
|
'[compose key]',
|
||||||
|
|
||||||
|
'[num 7]','[num 8]','[num 9]','[num -]',
|
||||||
|
'[num 4]', '[num 5]', '[num 6]','[num +]',
|
||||||
|
'[num 1]','[num 2]','[num 3]',
|
||||||
|
'[num 0]',
|
||||||
|
|
||||||
|
'[num .]',
|
||||||
|
'[unknown 10]',
|
||||||
|
'[unknown 11]',
|
||||||
|
'[unknown 12]',
|
||||||
|
'[F11]',
|
||||||
|
'[F12]',
|
||||||
|
'[unknown 13]',
|
||||||
|
'[unknown 14]',
|
||||||
|
'[unknown 15]',
|
||||||
|
'[unknown 16]',
|
||||||
|
'[unknown 17]',
|
||||||
|
'[unknown 18]',
|
||||||
|
'[unknown 19]',
|
||||||
|
'[num enter]',
|
||||||
|
'[right ctrl]',
|
||||||
|
'[num /]',
|
||||||
|
'[prt sc]',
|
||||||
|
'[alt gr]',
|
||||||
|
'[unknown 23]',
|
||||||
|
'[home]',
|
||||||
|
'[arrow up]',
|
||||||
|
'[page up]',
|
||||||
|
'[arrow left]',
|
||||||
|
'[arrow right]',
|
||||||
|
'[end]',
|
||||||
|
'[arrow down]',
|
||||||
|
'[page down]',
|
||||||
|
'[ins]',
|
||||||
|
'[del]',
|
||||||
|
'[unknown 33]',
|
||||||
|
'[unknown 34]',
|
||||||
|
'[unknown 35]',
|
||||||
|
'[unknown 36]',
|
||||||
|
'[unknown 37]',
|
||||||
|
'[unknown 38]',
|
||||||
|
'[unknown 39]',
|
||||||
|
'[pause]',
|
||||||
|
'[unknown 41]',
|
||||||
|
'[unknown 42]',
|
||||||
|
'[unknown 43]',
|
||||||
|
'[unknown 44]',
|
||||||
|
'[unknown 45]',
|
||||||
|
'[supper key]',
|
||||||
|
'[unknown 47]',
|
||||||
|
'[right mouse click key]',
|
||||||
|
'[unknown 49]',
|
||||||
|
'[unknown 50]',
|
||||||
|
'[unknown 51]',
|
||||||
|
'[unknown 52]',
|
||||||
|
'[unknown 53]',
|
||||||
|
'[unknown 54]',
|
||||||
|
'[unknown 55]',
|
||||||
|
'[unknown 56]',
|
||||||
|
'[unknown 57]',
|
||||||
|
'[unknown 58]',
|
||||||
|
'[unknown 59]',
|
||||||
|
'[unknown 60]',
|
||||||
|
'[unknown 61]',
|
||||||
|
'[unknown 62]',
|
||||||
|
'[unknown 63]',
|
||||||
|
'[unknown 64]',
|
||||||
|
'[unknown 65]',
|
||||||
|
'[unknown 66]',
|
||||||
|
'[unknown 67]',
|
||||||
|
'[unknown 68]',
|
||||||
|
'[unknown 69]',
|
||||||
|
'[unknown 70]',
|
||||||
|
'[unknown 71]',
|
||||||
|
'[unknown 72]',
|
||||||
|
'[unknown 73]',
|
||||||
|
'[unknown 74]',
|
||||||
|
'[unknown 75]',
|
||||||
|
'[unknown 76]',
|
||||||
|
'[unknown 77]',
|
||||||
|
'[unknown 78]',
|
||||||
|
'[unknown 79]',
|
||||||
|
]
|
||||||
|
|
||||||
|
// pause, supper key, fn, right click key
|
||||||
Reference in New Issue
Block a user