first commit

This commit is contained in:
Mats van Reenen 2020-07-29 10:21:15 +02:00
commit 439ef7515d
3 changed files with 193 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.log

77
app.js Normal file
View 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
View 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