PHP: (function($) { $.KeyLib = function() { this.version = '0.0.0'; var keyChar = { 8:'Blackspace', 9:"Tab", 13:"Enter", 16:"Shift", 17:"Ctrl", 18:"Alt", 19:"Pause|Break", 27:"Esc", 33:"Page Up", 34:"Page Down", 35:"End", 36:"Home", 37:"←", 38:"↑", 39:"→", 40:"↓", 45:"Insert", 46:"Delete", 91:"Left Window", 92:"Right Window", 93:"Select Key", 112:"F1", 113:"F2", 114:"F3", 115:"F4", 116:"F5", 117:"F6", 118:"F7", 119:"F8", 120:"F9", 121:"F10", 122:"F11", 123:"F12", 144:"Num Lock", 145:"Scroll Lock" }; var keycount = -1; var keyval = []; var countdown = { 'ok' : 0, 'error' : 0, 'all' : 0 }; var countpress = { 'ok' : 0, 'error' : 0, 'all' : 0 }; function TagOne(tag){ $(tag).on("keypress", function(e) { ++countpress.all;key[e.handleObj.type + countpress.all] = e; if (((typeof(keyChar[e.keyCode]) === 'undefined' || e.originalEvent.keyCode === e.originalEvent.charCode) || (typeof(e.charCode) === 'undefined') || e.handleObj.guid === 2 ) && (e.charCode = e.which) && ( (e.which > 16))) { ++keycount; keyval[keycount] = { 'type' : 'press', 'comb' : false, 'chars' : String.fromCharCode(e.charCode) }; $("#t1").text($("#t1").text() + e.handleObj.type + ' - ' + keyval[keycount].chars + ' - ' + e.charCode + ' - ' + e.timeStamp + "\r\n"); ++countpress.ok; } else ++countpress.error; }); $(tag).on("keydown", function(e) { ++countdown.all;key[e.handleObj.type + countdown.all] = e; if (e.which === e.keyCode && typeof(keyChar[e.keyCode]) !== 'undefined') { ++keycount; keyval[keycount] = { 'type' : 'down', 'comb' : false, 'key' : e.keyCode, 'chars' : keyChar[e.keyCode] }; $("#t1").text($("#t1").text() + e.handleObj.type + ' - ' + keyval[keycount].chars + ' - ' + e.timeStamp + "\r\n"); ++countdown.ok; } else ++countdown.error; }); }; this.start = function (tag) { tag = tag || 'html'; TagOne(tag); }; }})(jQuery);
Firefox 8.01 Каждое нажатие капс-лока записывается, как двойное: keydown - Caps Lock - 20 keydown - Caps Lock - 20 Opera 11.60 Не записывает [p-z], "'[]{(&%$#!.-\ Когда нажимаю капс-лок несколько раз подряд, в лог пишется Первое нажатие (включение капс-лока): keydown - Caps Lock - 20 Второе: keydown - Caps Lock - 20 keydown - Caps Lock - 20 Третье: keydown - Caps Lock - 20 keydown - Caps Lock - 20 keydown - Caps Lock - 20 Четвертое: keydown - Caps Lock - 20 keydown - Shift - 16 keydown - Caps Lock - 20 Пятое: keydown - Caps Lock - 20 и т.д.
Исправлено, недосмотр при упрощении кода тестирования. //Исправлено - -Opera CKW v1 Firefox 8.01, Opera 11.60 - *nix - не Подтверждено, какая OS? Caps Lock В данных версиях записывается нормально.
Не вижу актуального, это только код для теста. Кейлоггер для паблика, как доделаю возможности, которые предполагались изначально - тогда будет актуально. Если возникнут баги даже в малопопулярных браузерах - тоже буду исправлять. UDP: Win XP SP3 под VirtualBox 4.1.6 Caps Lock v1 подтверждаю, к тому же данный инцидент прослеживается во всех браузерах.//Клавиша убрана.
1. Клавиша Caps Lock убрана за ненадобностью. Для перехват значений она не нужна - простое полноценное отображение в *win так просто не исправишь. 2. Live заменил на on.