// example code
function logKeyDown(evt) {
var
keyCode = evt.keyCode,
value = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
}[keyCode] || keyCode;
console.log("logKeyDown : ", value);
}
var keyEventHandler = logKeyDown.throttle(1000);
// UI helper code
function registerKeyLogger() {
elmRegister.disabled = true;
elmDeregister.disabled = false;
window.addEventListener("keydown", keyEventHandler, false);
console.log('\n');
console.log('+++ keylogger registered +++');
console.log('+++ press any key - inspect log +++');
}
function deregisterKeyLogger() {
elmRegister.disabled = false;
elmDeregister.disabled = true;
window.removeEventListener("keydown", keyEventHandler);
console.log('\n');
console.log('+++ key-logger has been deregistered +++');
}
var
elmRegister = document.getElementById('register-key-logger'),
elmDeregister = document.getElementById('deregister-key-logger');
if (elmRegister && elmDeregister) {
elmRegister.disabled = false;
elmRegister.addEventListener('click', registerKeyLogger);
elmDeregister.addEventListener('click', deregisterKeyLogger);
}
.as-console-wrapper { max-height: 100%!important; top: 40px; }
<script>(function(b,w,p,h){h=h.prototype;var q=function(a){return"function"==typeof a&&"function"==typeof a.call&&"function"==typeof a.apply},x=b.isFinite,y=b.parseInt,k=b.setTimeout,r=b.clearTimeout,z=q(p.now)&&p.now||function(){return(new p).getTime()},t=w.max,v=function(a){return x(a=y(a,10))&&a||0};h.throttle=function(a,u,d){d=null!=d&&d||null;a=t(v(a),0)||200;u=!!u;var e=this,l,c,f,g,b,m,n=function(){f=g;e.apply(b,m)};return q(e)&&function(){r(l);b=d||this;m=arguments;g=z();f?(c=g-f,u?c>=a&&n():l=k(n,t(a-c,0))):n()}||e};h.debounce=function(a,b,d){d=null!=d&&d||null;a=t(v(a),0)||100;b=!!b;var e=this,l,c,f,g,h=function(){c=null},m=function(){c=null;e.apply(f,g)},n=function(){l=k(h,a);e.apply(f,g)};c=null;return q(e)&&function(){f=d||this;g=arguments;c?(r(l),r(c),c=k(m,a)):c=b?k(n,0):k(m,a)}||e}})(window||global||this,Math,Date,Function);</script>
<button id="register-key-logger" disabled="disabled">register key logger</button>
<button id="deregister-key-logger" disabled="disabled">deregister key logger</button>