I'm working on a simple keylogger of sorts that records the users keystrokes using javascript which I could use for various applications. I have an a main class that has an object that's basically a list of sub objects that correspond to various keys on the keyboard. each entry contains an ID for the key and a Boolean that represents whether or not its being pressed. I also have an init function within the class which is called immediately after everything loads. and that init class basically runs though the input object and compares it to any keyboard events to see if any of the IDs match. I'm able to reference the object at the top of the init function but when I try to reference the input object within the event function, it returns undefined. I have absolutely no idea why that is and I would greatly appreciate some assistance.
function Controls() {
this.input = {
A: {ID: 65, active: false},
B: {ID: 66, active: false},
C: {ID: 67, active: false},
D: {ID: 68, active: false},
E: {ID: 69, active: false},
F: {ID: 70, active: false},
G: {ID: 71, active: false},
H: {ID: 72, active: false},
I: {ID: 73, active: false},
J: {ID: 74, active: false},
K: {ID: 75, active: false},
L: {ID: 76, active: false},
M: {ID: 77, active: false},
N: {ID: 78, active: false},
O: {ID: 79, active: false},
P: {ID: 80, active: false},
Q: {ID: 81, active: false},
R: {ID: 82, active: false},
S: {ID: 83, active: false},
T: {ID: 84, active: false},
U: {ID: 85, active: false},
V: {ID: 86, active: false},
W: {ID: 87, active: false},
X: {ID: 88, active: false},
Y: {ID: 89, active: false},
Z: {ID: 90, active: false},
ZERO: {ID: 48, active: false},
ONE: {ID: 49, active: false},
TWO: {ID: 50, active: false},
THREE: {ID: 51, active: false},
FOUR: {ID: 52, active: false},
FIVE: {ID: 53, active: false},
SIX: {ID: 54, active: false},
SEVEN: {ID: 55, active: false},
EIGHT: {ID: 56, active: false},
NINE: {ID: 57, active: false},
GRAVE: {ID: 192, active: false},
DASH: {ID: 189, active: false},
EQUALS: {ID: 187, active: false},
OPENBRAKET: {ID: 219, active: false},
CLOSEBRACKET: {ID: 221, active: false},
BACKSLASH: {ID: 220, active: false},
SEMICOLON: {ID: 186, active: false},
QUOTE: {ID: 222, active: false},
COMMA: {ID: 188, active: false},
PERIOD: {ID: 190, active: false},
FORWARDSLASH: {ID: 191, active: false},
F1: {ID: 112, active: false},
F2: {ID: 113, active: false},
F3: {ID: 114, active: false},
F4: {ID: 115, active: false},
F5: {ID: 116, active: false},
F6: {ID: 117, active: false},
F7: {ID: 118, active: false},
F8: {ID: 119, active: false},
F9: {ID: 120, active: false},
F10: {ID: 121, active: false},
F11: {ID: 122, active: false},
F12: {ID: 123, active: false},
ESCAPE: {ID: 27, active: false},
INSERT: {ID: 45, active: false},
DELETE: {ID: 46, active: false},
BACKSPACE: {ID: 8, active: false},
TAB: {ID: 9, active: false},
CAPSLOCK: {ID: 20, active: false},
SHIFT: {ID: 16, active: false},
CONTROL: {ID: 17, active: false},
WINDOWSKEY: {ID: 91, active: false},
ALT: {ID: 18, active: false},
ENTER: {ID: 13, active: false},
WINDOWSMENU: {ID: 93, active: false},
UPARROW: {ID: 38, active: false},
LEFTARROW: {ID: 37, active: false},
DOWNARROW: {ID: 40, active: false},
RIGHTARROW: {ID: 39, active: false},
SPACEBAR: {ID: 32, active: false}
}
this.init = function() {
document.onkeydown = function() {
var event = window.event;
console.log(this.input);
for (i in this.input) {
if (this.input[i].ID.toString() == event.keyCode) {
this.input[i].active = true;
}
}
}
document.onkeyup = function() {
var event = window.event;
for (i in this.input) {
if (this.input[i].ID.toString() == event.keyCode) {
this.input[i].active = false;
}
}
}
}
}