147 lines
3.1 KiB
JavaScript
147 lines
3.1 KiB
JavaScript
|
|
|||
|
var kb_status = '1';
|
|||
|
var kb_readStr = '';
|
|||
|
var kb_isstart = false;
|
|||
|
var kb_readfunc = '';
|
|||
|
function start_read(func) {
|
|||
|
kb_isstart = true;
|
|||
|
kb_readfunc = func;
|
|||
|
kb_status = '1';
|
|||
|
kb_readStr = '';
|
|||
|
}
|
|||
|
function stop_read() {
|
|||
|
kb_isstart = false;
|
|||
|
kb_readfunc = '';
|
|||
|
}
|
|||
|
function fromKeyCode(code) {
|
|||
|
if((code >= 48 && code <= 57) || (code >= 65 && code <= 90)) return String.fromCharCode(code);
|
|||
|
var keys = {186: ';', 188: ',', 189: '-', 190: '.', 191: '/', 222: "'", 219: '[', 221: ']', 187: '=',
|
|||
|
96:'Num 0', 97:'Num 1', 98:'Num 2', 99:'Num 3', 100:'Num 4', 101:'Num 5', 102:'Num 6', 103:'Num 7', 104:'Num 8', 105:'Num 9',
|
|||
|
111:'Num /', 106:'Num *', 109:'Num -', 111:'Num /', 107:'Num +',13:'[enter]',8:'[back]',110:'Num .'
|
|||
|
};
|
|||
|
if(keys[code]) return keys[code];
|
|||
|
return '*err*';
|
|||
|
}
|
|||
|
function hashCode(strKey)
|
|||
|
{
|
|||
|
var hash = 0;
|
|||
|
if(strKey != null && strKey != "")
|
|||
|
{
|
|||
|
for (var i = 0; i < strKey.length; i++)
|
|||
|
{
|
|||
|
hash = hash * 31 + strKey.charCodeAt(i);
|
|||
|
hash = intValue(hash);
|
|||
|
}
|
|||
|
}
|
|||
|
return hash;
|
|||
|
}
|
|||
|
|
|||
|
function intValue(num)
|
|||
|
{
|
|||
|
var MAX_VALUE = 0x7fffffff;
|
|||
|
var MIN_VALUE = -0x80000000;
|
|||
|
if(num > MAX_VALUE || num < MIN_VALUE)
|
|||
|
{
|
|||
|
return num &= 0xFFFFFFFF;
|
|||
|
}
|
|||
|
return num;
|
|||
|
}
|
|||
|
document.onkeydown = function() {
|
|||
|
if(!kb_isstart) return ;
|
|||
|
var code = event.keyCode;
|
|||
|
//[st]sduf87fjsdfysd78,526976123;
|
|||
|
if(code == 16) return ;
|
|||
|
kb_dealKey(fromKeyCode(code));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function kb_dealKey(c) {
|
|||
|
|
|||
|
if(kb_status == '1') { //<2F><>ʼ
|
|||
|
if(c == '[') {
|
|||
|
kb_status = '2';
|
|||
|
} else if(c == ';') { //IC<49><43>
|
|||
|
kb_status = '6';
|
|||
|
}
|
|||
|
else kb_readErr( 2);
|
|||
|
} else if(kb_status == '2') { //<2F><>ȡs
|
|||
|
if(c == 'S') kb_status = '3';
|
|||
|
else {
|
|||
|
kb_status = '1';
|
|||
|
kb_readErr(3);
|
|||
|
}
|
|||
|
} else if(kb_status == '3') { //<2F><>ȡt
|
|||
|
if(c == 'T') kb_status = '4';
|
|||
|
else {
|
|||
|
kb_status = '1';
|
|||
|
kb_readErr(4);
|
|||
|
}
|
|||
|
} else if(kb_status == '4') { //<2F><>ȡ]
|
|||
|
if(c == ']') {
|
|||
|
kb_status = '5';
|
|||
|
kb_readStr = '';
|
|||
|
} else {
|
|||
|
kb_status = '1';
|
|||
|
kb_readErr(5);
|
|||
|
}
|
|||
|
} else if(kb_status == '5') { //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
if(c == ';') {
|
|||
|
kb_status = '1';
|
|||
|
var a = kb_readStr.split(",");
|
|||
|
if(a.length == 2) {
|
|||
|
var s1 = a[0].toLowerCase();
|
|||
|
var hcode = a[1];
|
|||
|
if(hashCode(s1) == hcode) {
|
|||
|
kb_readContent(s1, 'qr');
|
|||
|
} else {
|
|||
|
//alert(s1+","+hcode+","+hashCode(s1));
|
|||
|
kb_readErr(6);
|
|||
|
}
|
|||
|
} else {
|
|||
|
kb_readErr(7);
|
|||
|
}
|
|||
|
|
|||
|
kb_readStr = '';
|
|||
|
} else {
|
|||
|
if(c == '*err*') {
|
|||
|
kb_status = '1';
|
|||
|
kb_readErr(8);
|
|||
|
} else {
|
|||
|
kb_readStr += c;
|
|||
|
}
|
|||
|
}
|
|||
|
} else if(kb_status == '6') { //IC<49><43><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
if(c == '/') {
|
|||
|
kb_status = '1';
|
|||
|
|
|||
|
var s1 = kb_readStr.toLowerCase();
|
|||
|
kb_readContent(s1, 'ic');
|
|||
|
|
|||
|
kb_readStr = '';
|
|||
|
} else {
|
|||
|
if(c >= '0' && c <= '9') {
|
|||
|
kb_readStr += c;
|
|||
|
} else {
|
|||
|
kb_status = '1';
|
|||
|
kb_readErr(8, 'ic');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//$("div1").innerHTML += kb_status+"<br />";
|
|||
|
}
|
|||
|
function kb_readErr(rs, type) {
|
|||
|
kb_status = '1';
|
|||
|
kb_readStr = '';
|
|||
|
|
|||
|
//alert(from+":<3A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"+rs);
|
|||
|
var tname = '<27><>ά<EFBFBD><CEAC>';
|
|||
|
if(type && type == 'ic') {
|
|||
|
tname = 'IC<49><43>';
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
function kb_readContent(str, type) {
|
|||
|
if(!kb_isstart) return ;
|
|||
|
try{kb_readfunc(type, str);} catch(e){}
|
|||
|
}
|