js 简单制作键盘模拟

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>模拟键盘功能测试</title>
</head>
<style>
html,body,div,input,textarea{font-family:Verdana,Tahoma,Segoe,sans-serif;font-size:14px}body{background:#333;color:#ddd;height:98%;margin:0 auto;padding:0}a:link{color:#9fcdff;text-decoration:none}a:hover{color:#fff}a:visited,a:active{color:#53a5ff}#page-wrap{display:block;width:90%;margin:0 auto;text-align:center;height:98%;min-height:350px}h1,h2,h3,h4{color:#ddd;text-align:center}h2{margin:5px;font-size:130%;cursor:pointer;text-transform:capitalize}#nav{display:block;width:auto;text-align:center;margin:20px auto 0;line-height:45px}#nav a{text-align:center;background:#000;color:#fff;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;padding:10px;white-space:nowrap}#nav a.git{background:#006}#nav a.play{background:#060}#nav a.issue{background:#600}#nav a:hover,#nav a.current{background:#555}#switcher,#wrap{width:260px;margin:10px auto}#switcher a{margin:0 auto}#wrap{margin-top:30px}#console{width:90%;list-style-type:none;margin:0 auto;padding:0}#console li{text-align:center}#console .keyboard{color:#ec7600}#console .event{color:#facd22}#console .accepted{color:#8ac763}#console .ignored{color:red}#console .content{color:RoyalBlue}.block{width:270px;display:inline-block;height:170px;padding-left:30px;padding-bottom:30px;text-align:center;vertical-align:top;position:relative}.block2{margin:0 auto;text-align:center}textarea,input{width:260px;background:#333;color:#ddd;border:#777 1px solid;padding:5px 0}.hiddenInput{display:inline-block;width:240px}.code{display:none}.attn{color:#c00}#nav-demo .block{height:250px;padding:0}#nav-demo input,#nav-demo textarea{margin:2px}#showcode{display:none;background:#222;overflow:auto;width:100%;margin:0 auto;border:#555 1px solid;z-index:1}#showcode pre{padding:0 10px;text-align:left}.oldie #page-wrap{width:900px}.oldie .block{float:left;display:inherit}.oldie #showcode{width:850px}.clear{clear:both}.alignRight{text-align:right}#info{margin:220px auto 0;width:720px}#info ul{width:350px;float:left;padding-right:50px}#info div.nav{width:280px;float:left;padding-top:20px}#info button{width:90px;height:25px;border:#555 1px solid;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;margin:1px}#info button:hover{background:#aaa}.up,.left,.right,.down{color:#fff;background:#1e5799;border:#2671c4 1px solid}#info .up:hover,#info .left:hover,#info .right:hover,#info .down:hover{color:#000;background:#2ab0ed}#info .key{font-weight:700;color:#59b4d4}#info .enter{background:#f58400}.underline{text-decoration:underline}#mobile #wrap{height:200px}#mobile #switcher{max-width:920px;width:auto;margin:0 auto}#mobile #switcher .swatch{width:180px;height:80px;display:inline-block;margin:0}.oldie #switcher .ui-body{float:left;clear:none!important}#mobile #switcher fieldset{text-align:center;white-space:nowrap;margin:0;height:20px}#mobile #switcher input{visibility:hidden}#mobile .ui-icon-radio-on,#mobile .ui-icon-radio-off{display:none}#mobile #switcher .ui-btn-active{box-shadow:0 1px 5px rgba(255,255,255,.7)}#mobile #switcher .ui-controlgroup-label{display:block;margin:0 0 15px;width:auto}#mobile #switcher .ui-btn-inner{padding:0}#mobile #switcher .ui-radio,#mobile #switcher .ui-radio label{font-size:10px;width:20px;height:20px;margin:0;display:inline-block}#mobile #switcher .ui-btn-text{position:relative;top:2px;left:5px;width:10px}#footer{height:150px}#footer2 div{margin:220px auto;width:650px;text-align:center}#tooltip{width:250px;color:#ddd;background:#444;border:1px solid #777;padding:8px;display:none;opacity:.9;filter:alpha(opacity=90);text-align:center;border-radius:1em;-moz-border-radius:1em;-webkit-border-radius:1em}#tooltip .close{display:none}

.ui-keyboard{padding:.3em;position:absolute;left:0;top:0;z-index:16000}.ui-keyboard-has-focus{z-index:16001}.ui-keyboard div{font-size:1.1em}.ui-keyboard-button{height:2em;width:2em;min-width:1em;margin:.1em;cursor:pointer;overflow:hidden;line-height:2em;-moz-user-focus:ignore}.ui-keyboard-button span{padding:0;margin:0;white-space:nowrap;display:inline-block}.ui-keyboard-button-endrow{clear:left}.ui-keyboard-widekey{min-width:4em;width:auto}.ui-keyboard-space{width:15em}.ui-keyboard-space span,.ui-keyboard-empty span{font:0/0 a;text-shadow:none;color:transparent}.ui-keyboard-preview-wrapper{text-align:center}.ui-keyboard-preview{text-align:left;margin:0 0 3px;display:inline;width:99%}.ui-keyboard-keyset{text-align:center;white-space:nowrap}.ui-keyboard-input{text-align:left}.ui-keyboard-input-current{-moz-box-shadow:1px 1px 10px #00f;-webkit-box-shadow:1px 1px 10px #00f;box-shadow:1px 1px 10px #00f}.ui-keyboard-placeholder{color:#888}.ui-keyboard-nokeyboard{color:#888;border-color:#888}.ui-keyboard-button.disabled{opacity:.5;filter:alpha(opacity=50)}.ui-keyboard-spacer{display:inline-block;width:1px;height:0}.ui-keyboard-button.ui-keyboard-combo.ui-state-default{border-color:#ffaf0f}button.ui-keyboard-accept.ui-keyboard-valid-input{border-color:#0c0;background:#080;color:#fff}button.ui-keyboard-accept.ui-keyboard-valid-input:hover{background:#0a0}button.ui-keyboard-accept.ui-keyboard-invalid-input{border-color:#c00;background:#800;color:#fff}button.ui-keyboard-accept.ui-keyboard-invalid-input:hover{background:#a00}.ui-bar .ui-keyboard-button{width:3em;display:inline-block}.ui-bar .ui-keyboard-widekey{width:5.5em}.ui-bar .ui-keyboard-space{width:15em}.ui-bar .ui-keyboard-space span{visibility:hidden}.ui-bar .ui-keyboard-keyset{line-height:.5em}.ui-bar input.ui-input-text,.ui-bar textarea.ui-input-text{width:95%}.ui-bar .ui-btn-inner{height:2em;padding:.2em 0;margin:0}.ui-bar .ui-btn{margin:0;font-size:13px}@media all and (max-width:319px){.ui-keyboard div{font-size:9px}.ui-keyboard .ui-keyboard-input{font-size:12px}.ui-bar .ui-btn{margin:0;font-size:9px}.ui-bar .ui-keyboard-button{width:1.8em;height:2.5em}.ui-bar .ui-keyboard-widekey{width:4em}.ui-bar .ui-keyboard-space{width:8em}.ui-bar .ui-btn-inner{height:2.5em;padding:.3em 0}}@media all and (min-width:320px) and (max-width:479px){.ui-keyboard div{font-size:9px}.ui-keyboard .ui-keyboard-input{font-size:14px}.ui-bar .ui-btn{margin:0;font-size:11px}.ui-bar .ui-keyboard-button{width:1.8em;height:3em}.ui-bar .ui-keyboard-widekey{width:4.5em}.ui-bar .ui-keyboard-space{width:10em}.ui-bar .ui-btn-inner{height:3em;padding:.7em 0}}@media all and (min-width:480px) and (max-width:767px){.ui-keyboard div{font-size:13px}.ui-keyboard .ui-keyboard-input{font-size:14px}.ui-bar .ui-btn{margin:0;font-size:10px}.ui-bar .ui-keyboard-button{height:2.5em}.ui-bar .ui-btn-inner{height:2.5em;padding:.5em 0}}
</style>
<link href="http://code.jquery.com/ui/1.9.0/themes/ui-darkness/jquery-ui.css" rel="stylesheet">
<body>
<input id="keyboard" type="text" class="ui-keyboard-input ui-widget-content ui-corner-all" aria-haspopup="true" role="textbox">



</body>
<script src="https://lib.baomitu.com/jquery/1.9.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.0/jquery-ui.min.js"></script>
<!--jquery.keyboard.js-->
<script>

;(function($){"use strict";$.keyboard=function(el,options){var base=this,o;base.$el=$(el);base.el=el;base.$el.data("keyboard",base);base.init=function(){base.options=o=$.extend(true,{},$.keyboard.defaultOptions,options);base.shiftActive=base.altActive=base.metaActive=base.sets=base.capsLock=false;base.lastKeyset=[false,false,false];base.rows=['','-shift','-alt','-alt-shift'];$('<!--[if lte IE 8]><script>jQuery("body").addClass("oldie");</script><![endif]--><!--[if IE]>'+
'<script>jQuery("body").addClass("ie");</script><![endif]-->').appendTo('body').remove();base.msie=$('body').hasClass('oldie');base.allie=$('body').hasClass('ie');base.inPlaceholder=base.$el.attr('placeholder')||'';base.watermark=(typeof(document.createElement('input').placeholder)!=='undefined'&&base.inPlaceholder!=='');base.regex=$.keyboard.comboRegex;base.decimal=(/^\./.test(o.display.dec))?true:false;base.repeatTime=1000/(o.repeatRate||20);o.preventDoubleEventTime=o.preventDoubleEventTime||100;base.isOpen=false;base.wheel=$.isFunction($.fn.mousewheel);base.alwaysAllowed=[20,33,34,35,36,37,38,39,40,45,46];base.$keyboard=[];base.temp=$('<input style="position:absolute;left:-9999em;top:-9999em;" type="text" value="testing">').appendTo('body').caret(3,3);base.checkCaret=(o.lockInput||base.temp.hide().show().caret().start!==3)?true:false;base.temp.remove();base.lastCaret={start:0,end:0};base.temp=['',0,0];$.each('initialized beforeVisible visible hidden canceled accepted beforeClose'.split(' '),function(i,f){if($.isFunction(o[f])){base.$el.bind(f+'.keyboard',o[f]);}});if(o.alwaysOpen){o.stayOpen=true;}
$(document).bind('mousedown keyup touchstart checkkeyboard'.split(' ').join('.keyboard '),function(e){if(base.opening){return;}
base.escClose(e);if(e.target&&$(e.target).hasClass('ui-keyboard-input')){var kb=$(e.target).data('keyboard');if(kb===base&&kb.options.openOn){kb.focusOn();}}});base.$el.addClass('ui-keyboard-input '+o.css.input).attr({'aria-haspopup':'true','role':'textbox'});if(base.$el.is(':disabled')||(base.$el.attr('readonly')&&!base.$el.hasClass('ui-keyboard-lockedinput'))){base.$el.addClass('ui-keyboard-nokeyboard');}
if(o.openOn){base.$el.bind(o.openOn+'.keyboard',function(){base.focusOn();});}
if(!base.watermark&&base.$el.val()===''&&base.inPlaceholder!==''&&base.$el.attr('placeholder')!==''){base.$el.addClass('ui-keyboard-placeholder').val(base.inPlaceholder);}
base.$el.trigger('initialized.keyboard',[base,base.el]);if(o.alwaysOpen){base.reveal();}};base.setCurrent=function(){$('.ui-keyboard-has-focus').removeClass('ui-keyboard-has-focus');$('.ui-keyboard-input-current').removeClass('ui-keyboard-input-current');base.$el.addClass('ui-keyboard-input-current');base.$keyboard.addClass('ui-keyboard-has-focus');base.isCurrent(true);base.isOpen=true;};base.isCurrent=function(set){var cur=$.keyboard.currentKeyboard||false;if(set){cur=$.keyboard.currentKeyboard=base.el;}else if(set===false&&cur===base.el){cur=$.keyboard.currentKeyboard='';}
return cur===base.el;};base.isVisible=function(){if(!base.$keyboard.length){return false;}
return base.$keyboard.is(":visible");};base.focusOn=function(){if(base.$el.is(':visible')){setTimeout(function(){base.lastCaret=base.$el.caret();},20);}
if(!base.isVisible()){clearTimeout(base.timer);base.reveal();}
if(o.alwaysOpen){base.setCurrent();}};base.reveal=function(){base.opening=true;$('.ui-keyboard').not('.ui-keyboard-always-open').remove();if(base.$el.is(':disabled')||(base.$el.attr('readonly')&&!base.$el.hasClass('ui-keyboard-lockedinput'))){base.$el.addClass('ui-keyboard-nokeyboard');return;}else{base.$el.removeClass('ui-keyboard-nokeyboard');}
if(o.openOn){base.$el.unbind(o.openOn+'.keyboard');}
if(!base.$keyboard.length||$.contains(document.body,base.$keyboard[0])){base.startup();}
if(!base.watermark&&base.el.value===base.inPlaceholder){base.$el.removeClass('ui-keyboard-placeholder').val('');}
base.originalContent=base.$el.val();base.$preview.val(base.originalContent);if(o.acceptValid){base.checkValid();}
var p,s;base.position=o.position;base.position.of=base.position.of||base.$el.data('keyboardPosition')||base.$el;base.position.collision=base.position.collision||(o.usePreview?'fit fit':'flip flip');if(o.resetDefault){base.shiftActive=base.altActive=base.metaActive=false;base.showKeySet();}
base.$keyboard.css({position:'absolute',left:0,top:0});base.$el.trigger('beforeVisible.keyboard',[base,base.el]);base.setCurrent();base.$keyboard.show();if(o.usePreview&&base.msie){if(typeof base.width==='undefined'){base.$preview.hide();base.width=Math.ceil(base.$keyboard.width());base.$preview.show();}
base.$preview.width(base.width);}
if($.ui.position){base.$keyboard.position(base.position);}
base.checkDecimal();base.lineHeight=parseInt(base.$preview.css('lineHeight'),10)||parseInt(base.$preview.css('font-size'),10)+4;if(o.caretToEnd){s=base.originalContent.length;base.lastCaret={start:s,end:s};}
if(base.allie){s=base.lastCaret.start||base.originalContent.length;p={start:s,end:s};if(!base.lastCaret){base.lastCaret=p;}
if(base.lastCaret.end===0&&base.lastCaret.start>0){base.lastCaret.end=base.lastCaret.start;}
if(base.lastCaret.start<0){base.lastCaret=p;}}
setTimeout(function(){base.opening=false;if(o.initialFocus){base.$preview.focus().caret(base.lastCaret);}
base.$el.trigger('visible.keyboard',[base,base.el]);},10);return base;};base.startup=function(){if(!base.$keyboard.length){if(o.layout==="custom"){o.layoutHash='custom'+base.customHash();}
base.layout=o.layout==="custom"?o.layoutHash:o.layout;if(typeof $.keyboard.builtLayouts[base.layout]==='undefined'){if($.isFunction(o.create)){o.create(base);}
if(!base.$keyboard.length){base.buildKeyboard();}}
base.$keyboard=$.keyboard.builtLayouts[base.layout].$keyboard.clone();if(o.usePreview){base.$preview=base.$el.clone(false).removeAttr('id').removeClass('ui-keyboard-placeholder ui-keyboard-input').addClass('ui-keyboard-preview '+o.css.input).attr('tabindex','-1').show();$('<div />').addClass('ui-keyboard-preview-wrapper').append(base.$preview).prependTo(base.$keyboard);}else{base.$preview=base.$el;o.position.at=o.position.at2;}}
base.preview=base.$preview[0];base.$decBtn=base.$keyboard.find('.ui-keyboard-dec');if(o.enterNavigation||base.el.tagName==="TEXTAREA"){base.alwaysAllowed.push(13);}
if(o.lockInput){base.$preview.addClass('ui-keyboard-lockedinput').attr({'readonly':'readonly'});}
base.bindKeyboard();if(o.appendLocally){base.$el.after(base.$keyboard);}else{base.$keyboard.appendTo('body');}
base.bindKeys();$(window).bind('resize.keyboard',function(){if(base.isVisible()){base.$keyboard.position(base.position);}});};base.bindKeyboard=function(){var layout=$.keyboard.builtLayouts[base.layout];base.$preview.unbind('keypress keyup keydown mouseup touchend '.split(' ').join('.keyboard ')).bind('keypress.keyboard',function(e){var k=base.lastKey=String.fromCharCode(e.charCode||e.which);base.$lastKey=[];if(base.checkCaret){base.lastCaret=base.$preview.caret();}
base.capsLock=(((k>=65&&k<=90)&&!e.shiftKey)||((k>=97&&k<=122)&&e.shiftKey))?true:false;if(o.restrictInput){if((e.which===8||e.which===0)&&$.inArray(e.keyCode,base.alwaysAllowed)){return;}
if($.inArray(k,layout.acceptedKeys)===-1){e.preventDefault();}}else if((e.ctrlKey||e.metaKey)&&(e.which===97||e.which===99||e.which===118||(e.which>=120&&e.which<=122))){return;}
if(layout.hasMappedKeys){if(layout.mappedKeys.hasOwnProperty(k)){base.lastKey=layout.mappedKeys[k];base.insertText(base.lastKey);e.preventDefault();}}
base.checkMaxLength();}).bind('keyup.keyboard',function(e){switch(e.which){case 9:if(base.tab&&o.tabNavigation&&!o.lockInput){base.shiftActive=e.shiftKey;var notSwitching=$.keyboard.keyaction.tab(base);base.tab=false;if(!notSwitching){return false;}}else{e.preventDefault();}
break;case 27:base.close();return false;}
clearTimeout(base.throttled);base.throttled=setTimeout(function(){if(base.isVisible()){base.checkCombos();}},100);base.checkMaxLength();if($.isFunction(o.change)){o.change($.Event("change"),base,base.el);}
base.$el.trigger('change.keyboard',[base,base.el]);}).bind('keydown.keyboard',function(e){switch(e.which){case 9:if(o.tabNavigation){base.tab=true;return false;}else{base.tab=true;return false;}
break;case 13:$.keyboard.keyaction.enter(base,null,e);break;case 20:base.shiftActive=base.capsLock=!base.capsLock;base.showKeySet(this);break;case 86:if(e.ctrlKey||e.metaKey){if(o.preventPaste){e.preventDefault();return;}
base.checkCombos();}
break;}}).bind('mouseup.keyboard touchend.keyboard',function(){if(base.checkCaret){base.lastCaret=base.$preview.caret();}});base.$keyboard.bind('mousedown.keyboard click.keyboard touchstart.keyboard',function(e){e.stopPropagation();if(!base.isCurrent()){base.reveal();$(document).trigger('checkkeyboard.keyboard');}});if(o.preventPaste){base.$preview.bind('contextmenu.keyboard',function(e){e.preventDefault();});base.$el.bind('contextmenu.keyboard',function(e){e.preventDefault();});}};base.bindKeys=function(){var allEvents=(o.keyBinding+' repeater mouseenter mouseleave touchstart mousewheel '+
'mouseup click ').split(' ').join('.keyboard ')+('mouseleave mousedown touchstart '+
'touchend touchmove touchcancel ').split(' ').join('.kb ');base.$allKeys=base.$keyboard.find('button.ui-keyboard-button').unbind(allEvents).bind(o.keyBinding.split(' ').join('.keyboard ')+'.keyboard repeater.keyboard',function(e){if(!base.$keyboard.is(":visible")){return false;}
var txt,$this=$(this),action=$this.attr('data-action').split(':')[0],timer=new Date().getTime();if(timer-(base.lastEventTime||0)<o.preventDoubleEventTime){return;}
base.lastEventTime=timer;base.$preview.focus();base.$lastKey=$this;base.lastKey=$this.attr('data-curtxt');if(base.checkCaret){base.$preview.caret(base.lastCaret);}
if(action.match('meta')){action='meta';}
if($.keyboard.keyaction.hasOwnProperty(action)&&$(this).hasClass('ui-keyboard-actionkey')){if($.keyboard.keyaction[action](base,this,e)===false){return false;}}else if(typeof action!=='undefined'){txt=base.lastKey=(base.wheel&&!$(this).hasClass('ui-keyboard-actionkey'))?base.lastKey:action;base.insertText(txt);if(!base.capsLock&&!o.stickyShift&&!e.shiftKey){base.shiftActive=false;base.showKeySet(this);}}
base.$preview.focus().caret(base.lastCaret);base.checkCombos();base.checkMaxLength();if($.isFunction(o.change)){o.change($.Event("change"),base,base.el);}
base.$el.trigger('change.keyboard',[base,base.el]);e.preventDefault();}).bind('mouseenter.keyboard mouseleave.keyboard touchstart.keyboard',function(e){if(!base.isCurrent()){return;}
var $this=$(this),txt=$this.data('layers')||base.getLayers($this);$this.data('layers',txt=$.grep(txt,function(v,k){return $.inArray(v,txt)===k;}));if((e.type==='mouseenter'||e.type==='touchstart')&&base.el.type!=='password'&&!$this.hasClass(o.css.buttonDisabled)){$this.addClass(o.css.buttonHover).attr('title',function(i,t){return(base.wheel&&t===''&&base.sets&&txt.length>1&&e.type!=='touchstart')?o.wheelMessage:t;});}
if(e.type==='mouseleave'){$this.data({'curtxt':$this.data('original'),'curnum':0});$this.removeClass((base.el.type==='password')?'':o.css.buttonHover).attr('title',function(i,t){return(t===o.wheelMessage)?'':t;}).find('span').text($this.data('original'));}}).bind('mousewheel.keyboard',function(e,delta){if(base.wheel){var n,txt,$this=$(this);txt=$this.data('layers')||base.getLayers($this);if(txt.length>1){n=$this.data('curnum')+(delta>0)?-1:1;if(n>txt.length-1){n=0;}
if(n<0){n=txt.length-1;}}else{n=0;}
$this.data({'curnum':n,'layers':txt,'curtxt':txt[n]});$this.find('span').text(txt[n]);return false;}}).bind('mouseup.keyboard mouseleave.kb touchend.kb touchmove.kb touchcancel.kb',function(e){if(/(mouseleave|touchend|touchcancel)/.test(e.type)){$(this).removeClass(o.css.buttonHover);}else{if(base.isVisible()&&base.isCurrent()){base.$preview.focus();}
if(base.checkCaret){base.$preview.caret(base.lastCaret);}}
base.mouseRepeat=[false,''];clearTimeout(base.repeater);return false;}).bind('click.keyboard',function(){return false;}).not('.ui-keyboard-actionkey').add('.ui-keyboard-tab, .ui-keyboard-bksp, .ui-keyboard-space, .ui-keyboard-enter',base.$keyboard).bind('mousedown.kb touchstart.kb',function(){if(o.repeatRate!==0){var key=$(this);base.mouseRepeat=[true,key];setTimeout(function(){if(base.mouseRepeat[0]&&base.mouseRepeat[1]===key){base.repeatKey(key);}},o.repeatDelay);}
return false;});};base.insertText=function(txt){var bksp,t,h,val=base.$preview.val(),pos=base.$preview.caret(),scrL=base.$preview.scrollLeft(),scrT=base.$preview.scrollTop(),len=val.length;if(pos.end<pos.start){pos.end=pos.start;}
if(pos.start>len){pos.end=pos.start=len;}
if(base.preview.tagName==='TEXTAREA'){if(base.msie&&val.substr(pos.start,1)==='\n'){pos.start+=1;pos.end+=1;}
h=(val.split('\n').length-1);base.preview.scrollTop=(h>0)?base.lineHeight*h:scrT;}
bksp=(txt==='bksp'&&pos.start===pos.end)?true:false;txt=(txt==='bksp')?'':txt;t=pos.start+(bksp?-1:txt.length);scrL+=parseInt(base.$preview.css('fontSize'),10)*(txt==='bksp'?-1:1);base.$preview.val(base.$preview.val().substr(0,pos.start-(bksp?1:0))+txt+
base.$preview.val().substr(pos.end)).caret(t,t).scrollLeft(scrL);base.lastCaret={start:t,end:t};};base.checkMaxLength=function(){var t,p=base.$preview.val();if(o.maxLength!==false&&p.length>o.maxLength){t=Math.min(base.$preview.caret().start,o.maxLength);base.$preview.val(p.substring(0,o.maxLength));base.$preview.caret(t,t);base.lastCaret={start:t,end:t};}
if(base.$decBtn.length){base.checkDecimal();}};base.repeatKey=function(key){key.trigger('repeater.keyboard');if(base.mouseRepeat[0]){base.repeater=setTimeout(function(){base.repeatKey(key);},base.repeatTime);}};base.showKeySet=function(el){var key='',toShow=(base.shiftActive?1:0)+(base.altActive?2:0);if(!base.shiftActive){base.capsLock=false;}
if(base.metaActive){key=(el&&el.name&&/meta/.test(el.name))?el.name:'';if(key===''){key=(base.metaActive===true)?'':base.metaActive;}else{base.metaActive=key;}
if((!o.stickyShift&&base.lastKeyset[2]!==base.metaActive)||((base.shiftActive||base.altActive)&&!base.$keyboard.find('.ui-keyboard-keyset-'+key+
base.rows[toShow]).length)){base.shiftActive=base.altActive=false;}}else if(!o.stickyShift&&base.lastKeyset[2]!==base.metaActive&&base.shiftActive){base.shiftActive=base.altActive=false;}
toShow=(base.shiftActive?1:0)+(base.altActive?2:0);key=(toShow===0&&!base.metaActive)?'-default':(key==='')?'':'-'+key;if(!base.$keyboard.find('.ui-keyboard-keyset'+key+base.rows[toShow]).length){base.shiftActive=base.lastKeyset[0];base.altActive=base.lastKeyset[1];base.metaActive=base.lastKeyset[2];return;}
base.$keyboard.find('.ui-keyboard-alt, .ui-keyboard-shift, .ui-keyboard-actionkey[class*=meta]').removeClass(o.css.buttonAction).end().find('.ui-keyboard-alt')[(base.altActive)?'addClass':'removeClass'](o.css.buttonAction).end().find('.ui-keyboard-shift')[(base.shiftActive)?'addClass':'removeClass'](o.css.buttonAction).end().find('.ui-keyboard-lock')[(base.capsLock)?'addClass':'removeClass'](o.css.buttonAction).end().find('.ui-keyboard-keyset').hide().end().find('.ui-keyboard-keyset'+key+base.rows[toShow]).show().end().find('.ui-keyboard-actionkey.ui-keyboard'+key).addClass(o.css.buttonAction);base.lastKeyset=[base.shiftActive,base.altActive,base.metaActive];};base.checkCombos=function(){if(!base.isVisible()){return base.$preview.val();}
var i,r,t,t2,val=base.$preview.val(),pos=base.$preview.caret(),layout=$.keyboard.builtLayouts[base.layout],len=val.length;if(pos.end<pos.start){pos.end=pos.start;}
if(pos.start>len){pos.end=pos.start=len;}
if(base.msie&&val.substr(pos.start,1)==='\n'){pos.start+=1;pos.end+=1;}
if(o.useCombos){if(base.msie){val=val.replace(base.regex,function(s,accent,letter){return(o.combos.hasOwnProperty(accent))?o.combos[accent][letter]||s:s;});}else if(base.$preview.length){t=pos.start-(pos.start-2>=0?2:0);base.$preview.caret(t,pos.end);t2=(base.$preview.caret().text||'').replace(base.regex,function(s,accent,letter){return(o.combos.hasOwnProperty(accent))?o.combos[accent][letter]||s:s;});base.$preview.val(base.$preview.caret().replace(t2));val=base.$preview.val();}}
if(o.restrictInput&&val!==''){t=val;r=layout.acceptedKeys.length;for(i=0;i<r;i++){if(t===''){continue;}
t2=layout.acceptedKeys[i];if(val.indexOf(t2)>=0){if(/[\[|\]|\\|\^|\$|\.|\||\?|\*|\+|\(|\)|\{|\}]/g.test(t2)){t2='\\'+t2;}
t=t.replace((new RegExp(t2,"g")),'');}}
if(t!==''){val=val.replace(t,'');}}
pos.start+=val.length-len;pos.end+=val.length-len;base.$preview.val(val);base.$preview.caret(pos.start,pos.end);base.preview.scrollTop=base.lineHeight*(val.substring(0,pos.start).split('\n').length-1);base.lastCaret={start:pos.start,end:pos.end};if(o.acceptValid){base.checkValid();}
return val;};base.checkValid=function(){var valid=true;if(o.validate&&typeof o.validate==="function"){valid=o.validate(base,base.$preview.val(),false);}
base.$keyboard.find('.ui-keyboard-accept')
[valid?'removeClass':'addClass']('ui-keyboard-invalid-input')
[valid?'addClass':'removeClass']('ui-keyboard-valid-input');};base.checkDecimal=function(){if((base.decimal&&/\./g.test(base.preview.value))||(!base.decimal&&/\,/g.test(base.preview.value))){base.$decBtn.attr({'disabled':'disabled','aria-disabled':'true'}).removeClass(o.css.buttonDefault+' '+o.css.buttonHover).addClass(o.css.buttonDisabled);}else{base.$decBtn.removeAttr('disabled').attr({'aria-disabled':'false'}).addClass(o.css.buttonDefault).removeClass(o.css.buttonDisabled);}};base.getLayers=function(el){var key,keys;key=el.attr('data-pos');keys=el.closest('.ui-keyboard').find('button[data-pos="'+key+'"]').map(function(){return $(this).find('> span').text();}).get();return keys;};base.switchInput=function(goToNext,isAccepted){if(typeof o.switchInput==="function"){o.switchInput(base,goToNext,isAccepted);}else{base.$keyboard.hide();var kb,stopped=false,all=$('button, input, textarea, a').filter(':visible'),indx=all.index(base.$el)+(goToNext?1:-1);base.$keyboard.show();if(indx>all.length-1){stopped=o.stopAtEnd;indx=0;}
if(indx<0){stopped=o.stopAtEnd;indx=all.length-1;}
if(!stopped){base.close(isAccepted);kb=all.eq(indx).data('keyboard');if(kb&&kb.options.openOn.length){kb.focusOn();}else{all.eq(indx).focus();}}}
return false;};base.close=function(accepted){if(base.isOpen){clearTimeout(base.throttled);var val=(accepted)?base.checkCombos():base.originalContent;if(accepted&&o.validate&&typeof(o.validate)==="function"&&!o.validate(base,val,true)){val=base.originalContent;accepted=false;if(o.cancelClose){return;}}
base.isCurrent(false);base.isOpen=false;base.$el.removeClass('ui-keyboard-input-current ui-keyboard-autoaccepted').addClass((accepted||false)?accepted===true?'':'ui-keyboard-autoaccepted':'').trigger((o.alwaysOpen)?'':'beforeClose.keyboard',[base,base.el,(accepted||false)]).val(val).scrollTop(base.el.scrollHeight).trigger(((accepted||false)?'accepted.keyboard':'canceled.keyboard'),[base,base.el]).trigger((o.alwaysOpen)?'inactive.keyboard':'hidden.keyboard',[base,base.el]).blur();base.$preview.val(val);if(o.openOn){base.timer=setTimeout(function(){base.$el.bind(o.openOn+'.keyboard',function(){base.focusOn();});if($(':focus')[0]===base.el){base.$el.blur();}},500);}
if(!o.alwaysOpen&&base.$keyboard){base.$keyboard.remove();base.$keyboard=[];}
if(!base.watermark&&base.el.value===''&&base.inPlaceholder!==''){base.$el.addClass('ui-keyboard-placeholder').val(base.inPlaceholder);}
base.$el.trigger('change');}
return!!accepted;};base.accept=function(){return base.close(true);};base.escClose=function(e){if(e&&e.type==='keyup'){return(e.which===27)?base.close():'';}
if(!base.isOpen){return;}
if(!base.isCurrent()&&base.isOpen||base.isOpen&&e.target!==base.el&&!o.stayOpen){if(base.allie){e.preventDefault();}
base.close(o.autoAccept?'true':false);}};base.keyBtn=$('<button />').attr({'role':'button','type':'button','aria-disabled':'false','tabindex':'-1'}).addClass('ui-keyboard-button');base.addKey=function(keyName,name,regKey){var t,keyType,m,map,nm,n=(regKey===true)?keyName:o.display[name]||keyName,kn=(regKey===true)?keyName.charCodeAt(0):keyName;if(/\(.+\)/.test(n)){map=n.replace(/\(([^()]+)\)/,'');m=n.match(/\(([^()]+)\)/)[1];n=map;nm=map.split(':');map=(nm[0]!==''&&nm.length>1)?nm[0]:map;$.keyboard.builtLayouts[base.layout].mappedKeys[m]=map;}
nm=n.split(':');if(nm[0]===''&&nm[1]===''){n=':';}
n=(nm[0]!==''&&nm.length>1)?$.trim(nm[0]):n;t=(nm.length>1)?$.trim(nm[1]).replace(/_/g," ")||'':'';keyType=(n.length>1)?' ui-keyboard-widekey':'';keyType+=(regKey)?'':' ui-keyboard-actionkey';return base.keyBtn.clone().attr({'data-value':n,'name':kn,'data-pos':base.temp[1]+','+base.temp[2],'title':t,'data-action':keyName,'data-original':n,'data-curtxt':n,'data-curnum':0}).addClass('ui-keyboard-'+kn+keyType+' '+o.css.buttonDefault).html('<span>'+n+'</span>').appendTo(base.temp[0]);};base.customHash=function(){var i,array,hash,character,layout=o.customLayout,arrays=[],merged=[];for(array in layout){if(layout.hasOwnProperty(array)){arrays.push(layout[array]);}}
merged=merged.concat.apply(merged,arrays).join(' ');if(Array.prototype.reduce){return merged.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a;},0);}
hash=0;if(merged.length===0){return hash;}
for(i=0;i<merged.length;i++){character=merged.charCodeAt(i);hash=((hash<<5)-hash)+character;hash=hash&hash;}
return hash;};base.buildKeyboard=function(){var t,action,row,newSet,isAction,currentSet,key,keys,margin,sets=0,layout=$.keyboard.builtLayouts[base.layout]={mappedKeys:{},acceptedKeys:[]},acceptedKeys=layout.acceptedKeys=[],container=$('<div />').addClass('ui-keyboard '+o.css.container+(o.alwaysOpen?' ui-keyboard-always-open':'')).attr({'role':'textbox'}).hide();if(o.layout==='custom'||!$.keyboard.layouts.hasOwnProperty(o.layout)){o.layout='custom';$.keyboard.layouts.custom=o.customLayout||{'default':['{cancel}']};}
$.each($.keyboard.layouts[o.layout],function(set,keySet){if(set!==""){sets++;newSet=$('<div />').attr('name',set).addClass('ui-keyboard-keyset ui-keyboard-keyset-'+set).appendTo(container)[(set==='default')?'show':'hide']();for(row=0;row<keySet.length;row++){currentSet=$.trim(keySet[row]).replace(/\{(\.?)[\s+]?:[\s+]?(\.?)\}/g,'{$1:$2}');keys=currentSet.split(/\s+/);for(key=0;key<keys.length;key++){base.temp=[newSet,row,key];isAction=false;if(keys[key].length===0){continue;}
if(/^\{\S+\}$/.test(keys[key])){action=keys[key].match(/^\{(\S+)\}$/)[1].toLowerCase();if(/\!\!/.test(action)){action=action.replace('!!','');isAction=true;}
if(/^sp:((\d+)?([\.|,]\d+)?)(em|px)?$/.test(action)){margin=parseFloat(action.replace(/,/,'.').match(/^sp:((\d+)?([\.|,]\d+)?)(em|px)?$/)[1]||0);$('<span>&nbsp;</span>').width((action.match('px')?margin+'px':(margin*2)+'em')).addClass('ui-keyboard-button ui-keyboard-spacer').appendTo(newSet);}
if(/^meta\d+\:?(\w+)?/.test(action)){base.addKey(action,action);continue;}
switch(action){case 'a':case 'accept':base.addKey('accept',action).addClass(o.css.buttonAction);break;case 'alt':case 'altgr':base.addKey('alt','alt');break;case 'b':case 'bksp':base.addKey('bksp',action);break;case 'c':case 'cancel':base.addKey('cancel',action).addClass(o.css.buttonAction);break;case 'combo':base.addKey('combo','combo').addClass(o.css.buttonAction);break;case 'dec':acceptedKeys.push((base.decimal)?'.':',');base.addKey('dec','dec');break;case 'e':case 'enter':base.addKey('enter',action).addClass(o.css.buttonAction);break;case 'empty':base.addKey('',' ').addClass(o.css.buttonDisabled).attr('aria-disabled',true);break;case 's':case 'shift':base.addKey('shift',action);break;case 'sign':acceptedKeys.push('-');base.addKey('sign','sign');break;case 'space':acceptedKeys.push(' ');base.addKey('space','space');break;case 't':case 'tab':base.addKey('tab',action);break;default:if($.keyboard.keyaction.hasOwnProperty(action)){base.addKey(action,action)[isAction?'addClass':'removeClass'](o.css.buttonAction);}}}else{t=keys[key];acceptedKeys.push(t===':'?t:t.split(':')[0]);base.addKey(t,t,true);}}
newSet.find('.ui-keyboard-button:last').after('<br class="ui-keyboard-button-endrow">');}}});if(sets>1){base.sets=true;}
layout.hasMappedKeys=!($.isEmptyObject(layout.mappedKeys));layout.$keyboard=container;return container;};base.destroy=function(){$(document).unbind('mousedown.keyboard keyup.keyboard touchstart.keyboard');if(base.$keyboard){base.$keyboard.remove();}
var unb=$.trim(o.openOn+' accepted beforeClose canceled change contextmenu hidden '+
'initialized keydown keypress keyup visible').split(' ').join('.keyboard ');base.$el.removeClass('ui-keyboard-input ui-keyboard-lockedinput ui-keyboard-placeholder '+
'ui-keyboard-notallowed ui-keyboard-always-open '+o.css.input).removeAttr('aria-haspopup').removeAttr('role').unbind(unb+'.keyboard').removeData('keyboard');};base.init();};$.keyboard.keyaction={accept:function(base){base.close(true);return false;},alt:function(base,el){base.altActive=!base.altActive;base.showKeySet(el);},bksp:function(base){base.insertText('bksp');},cancel:function(base){base.close();return false;},clear:function(base){base.$preview.val('');},combo:function(base){var c=!base.options.useCombos;base.options.useCombos=c;base.$keyboard.find('.ui-keyboard-combo').toggleClass(base.options.css.buttonAction,c);if(c){base.checkCombos();}
return false;},dec:function(base){base.insertText((base.decimal)?'.':',');},"default":function(base,el){base.shiftActive=base.altActive=base.metaActive=false;base.showKeySet(el);},enter:function(base,el,e){var tag=base.el.tagName,o=base.options;if(e.shiftKey){return(o.enterNavigation)?base.switchInput(!e[o.enterMod],true):base.close(true);}
if(o.enterNavigation&&(tag!=='TEXTAREA'||e[o.enterMod])){return base.switchInput(!e[o.enterMod],o.autoAccept?'true':false);}
if(tag==='TEXTAREA'&&$(e.target).closest('button').length){base.insertText(' \n');}},lock:function(base,el){base.lastKeyset[0]=base.shiftActive=base.capsLock=!base.capsLock;base.showKeySet(el);},left:function(base){var p=base.$preview.caret();if(p.start-1>=0){base.lastCaret={start:p.start-1,end:p.start-1};}},meta:function(base,el){base.metaActive=($(el).hasClass(base.options.css.buttonAction))?false:true;base.showKeySet(el);},next:function(base){base.switchInput(true,base.options.autoAccept);return false;},prev:function(base){base.switchInput(false,base.options.autoAccept);return false;},right:function(base){var p=base.$preview.caret();if(p.start+1<=base.$preview.val().length){base.lastCaret={start:p.start+1,end:p.start+1};}},shift:function(base,el){base.lastKeyset[0]=base.shiftActive=!base.shiftActive;base.showKeySet(el);},sign:function(base){if(/^\-?\d*\.?\d*$/.test(base.$preview.val())){base.$preview.val((base.$preview.val()*-1));}},space:function(base){base.insertText(' ');},tab:function(base){var tag=base.el.tagName,o=base.options;if(tag==='INPUT'){if(o.tabNavigation){return base.switchInput(!base.shiftActive,true);}else{return false;}}
base.insertText('\t');}};$.keyboard.builtLayouts={};$.keyboard.layouts={'alpha':{'default':['` 1 2 3 4 5 6 7 8 9 0 - = {bksp}','{tab} a b c d e f g h i j [ ] \\','k l m n o p q r s ; \' {enter}','{shift} t u v w x y z , . / {shift}','{accept} {space} {cancel}'],'shift':['~ ! @ # $ % ^ & * ( ) _ + {bksp}','{tab} A B C D E F G H I J { } |','K L M N O P Q R S : " {enter}','{shift} T U V W X Y Z < > ? {shift}','{accept} {space} {cancel}']},'qwerty':{'default':['` 1 2 3 4 5 6 7 8 9 0 - = {bksp}','{tab} q w e r t y u i o p [ ] \\','a s d f g h j k l ; \' {enter}','{shift} z x c v b n m , . / {shift}','{accept} {space} {cancel}'],'shift':['~ ! @ # $ % ^ & * ( ) _ + {bksp}','{tab} Q W E R T Y U I O P { } |','A S D F G H J K L : " {enter}','{shift} Z X C V B N M < > ? {shift}','{accept} {space} {cancel}']},'international':{'default':['` 1 2 3 4 5 6 7 8 9 0 - = {bksp}','{tab} q w e r t y u i o p [ ] \\','a s d f g h j k l ; \' {enter}','{shift} z x c v b n m , . / {shift}','{accept} {alt} {space} {alt} {cancel}'],'shift':['~ ! @ # $ % ^ & * ( ) _ + {bksp}','{tab} Q W E R T Y U I O P { } |','A S D F G H J K L : " {enter}','{shift} Z X C V B N M < > ? {shift}','{accept} {alt} {space} {alt} {cancel}'],'alt':['~ \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}','{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac','\u00e1 \u00df \u00f0 f g h j k \u00f8 \u00b6 \u00b4 {enter}','{shift} \u00e6 x \u00a9 v b \u00f1 \u00b5 \u00e7 > \u00bf {shift}','{accept} {alt} {space} {alt} {cancel}'],'alt-shift':['~ \u00b9 \u00b2 \u00b3 \u00a3 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00f7 {bksp}','{tab} \u00c4 \u00c5 \u00c9 \u00ae \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 \u00ab \u00bb \u00a6','\u00c4 \u00a7 \u00d0 F G H J K \u00d8 \u00b0 \u00a8 {enter}','{shift} \u00c6 X \u00a2 V B \u00d1 \u00b5 \u00c7 . \u00bf {shift}','{accept} {alt} {space} {alt} {cancel}']},'dvorak':{'default':['` 1 2 3 4 5 6 7 8 9 0 [ ] {bksp}','{tab} \' , . p y f g c r l / = \\','a o e u i d h t n s - {enter}','{shift} ; q j k x b m w v z {shift}','{accept} {space} {cancel}'],'shift':['~ ! @ # $ % ^ & * ( ) { } {bksp}','{tab} " < > P Y F G C R L ? + |','A O E U I D H T N S _ {enter}','{shift} : Q J K X B M W V Z {shift}','{accept} {space} {cancel}']},'num':{'default':['= ( ) {b}','{clear} / * -','7 8 9 +','4 5 6 {sign}','1 2 3 %','0 . {a} {c}']}};$.keyboard.defaultOptions={layout:'qwerty',customLayout:null,position:{of:null,my:'center top',at:'center top',at2:'center bottom'},usePreview:true,alwaysOpen:false,initialFocus:true,stayOpen:false,display:{'a':'\u2714:Accept (Shift-Enter)','accept':'Accept:Accept (Shift-Enter)','alt':'Alt:\u2325 AltGr','b':'\u232b:Backspace','bksp':'Bksp:Backspace','c':'\u2716:Cancel (Esc)','cancel':'Cancel:Cancel (Esc)','clear':'C:Clear','combo':'\u00f6:Toggle Combo Keys','dec':'.:Decimal','e':'\u23ce:Enter','empty':'\u00a0','enter':'Enter:Enter \u23ce','left':'\u2190','lock':'Lock:\u21ea Caps Lock','next':'Next \u21e8','prev':'\u21e6 Prev','right':'\u2192','s':'\u21e7:Shift','shift':'Shift:Shift','sign':'\u00b1:Change Sign','space':'&nbsp;:Space','t':'\u21e5:Tab','tab':'\u21e5 Tab:Tab'},wheelMessage:'Use mousewheel to see other keys',css:{input:'ui-widget-content ui-corner-all',container:'ui-widget-content ui-widget ui-corner-all ui-helper-clearfix',buttonDefault:'ui-state-default ui-corner-all',buttonHover:'ui-state-hover',buttonAction:'ui-state-active',buttonDisabled:'ui-state-disabled'},autoAccept:false,lockInput:false,restrictInput:false,acceptValid:false,cancelClose:true,tabNavigation:false,enterNavigation:false,enterMod:'altKey',stopAtEnd:true,appendLocally:false,stickyShift:true,preventPaste:false,caretToEnd:false,maxLength:false,repeatDelay:500,repeatRate:20,resetDefault:false,openOn:'focus',keyBinding:'mousedown touchstart',useCombos:true,combos:{'`':{a:"\u00e0",A:"\u00c0",e:"\u00e8",E:"\u00c8",i:"\u00ec",I:"\u00cc",o:"\u00f2",O:"\u00d2",u:"\u00f9",U:"\u00d9",y:"\u1ef3",Y:"\u1ef2"},"'":{a:"\u00e1",A:"\u00c1",e:"\u00e9",E:"\u00c9",i:"\u00ed",I:"\u00cd",o:"\u00f3",O:"\u00d3",u:"\u00fa",U:"\u00da",y:"\u00fd",Y:"\u00dd"},'"':{a:"\u00e4",A:"\u00c4",e:"\u00eb",E:"\u00cb",i:"\u00ef",I:"\u00cf",o:"\u00f6",O:"\u00d6",u:"\u00fc",U:"\u00dc",y:"\u00ff",Y:"\u0178"},'^':{a:"\u00e2",A:"\u00c2",e:"\u00ea",E:"\u00ca",i:"\u00ee",I:"\u00ce",o:"\u00f4",O:"\u00d4",u:"\u00fb",U:"\u00db",y:"\u0177",Y:"\u0176"},'~':{a:"\u00e3",A:"\u00c3",e:"\u1ebd",E:"\u1ebc",i:"\u0129",I:"\u0128",o:"\u00f5",O:"\u00d5",u:"\u0169",U:"\u0168",y:"\u1ef9",Y:"\u1ef8",n:"\u00f1",N:"\u00d1"}},validate:function(keyboard,value,isClosing){return true;}};$.keyboard.comboRegex=/([`\'~\^\"ao])([a-z])/mig;$.keyboard.currentKeyboard='';$.fn.keyboard=function(options){return this.each(function(){if(!$(this).data('keyboard')){(new $.keyboard(this,options));}});};$.fn.getkeyboard=function(){return this.data("keyboard");};})(jQuery);(function($,len,createRange,duplicate){"use strict";$.fn.caret=function(options,opt2){if(typeof this[0]==='undefined'||this.is(':hidden')||this.css('visibility')==='hidden'){return this;}
var s,start,e,end,selRange,range,stored_range,te,val,selection=document.selection,t=this[0],sTop=t.scrollTop,ss=typeof t.selectionStart!=='undefined';if(typeof options==='object'&&options.start&&options.end){start=options.start;end=options.end;}else if(typeof options==='number'&&typeof opt2==='number'){start=options;end=opt2;}
if(typeof start!=='undefined'){if(ss){t.selectionStart=start;t.selectionEnd=end;}else{selRange=t.createTextRange();selRange.collapse(true);selRange.moveStart('character',start);selRange.moveEnd('character',end-start);selRange.select();}
if(this.is(':visible')||this.css('visibility')!=='hidden'){this.focus();}
t.scrollTop=sTop;return this;}else{if(ss){s=t.selectionStart;e=t.selectionEnd;}else{if(t.tagName==='TEXTAREA'){val=this.val();range=selection[createRange]();stored_range=range[duplicate]();stored_range.moveToElementText(t);stored_range.setEndPoint('EndToEnd',range);s=stored_range.text.replace(/\r/g,'\n')[len];e=s+range.text.replace(/\r/g,'\n')[len];}else{val=this.val().replace(/\r/g,'\n');range=selection[createRange]()[duplicate]();range.moveEnd('character',val[len]);s=(range.text===''?val[len]:val.lastIndexOf(range.text));range=selection[createRange]()[duplicate]();range.moveStart('character',-val[len]);e=range.text[len];}}
te=(t.value||'').substring(s,e);return{start:s,end:e,text:te,replace:function(st){return t.value.substring(0,s)+st+t.value.substring(e,t.value[len]);}};}};})(jQuery,'length','createRange','duplicate');

</script>
<!--
jquery.mousewheel.js-->
<script>
(function($){var types=['DOMMouseScroll','mousewheel'];if($.event.fixHooks){for(var i=types.length;i;){$.event.fixHooks[types[--i]]=$.event.mouseHooks;}}
$.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var i=types.length;i;){this.addEventListener(types[--i],handler,false);}}else{this.onmousewheel=handler;}},teardown:function(){if(this.removeEventListener){for(var i=types.length;i;){this.removeEventListener(types[--i],handler,false);}}else{this.onmousewheel=null;}}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel");},unmousewheel:function(fn){return this.unbind("mousewheel",fn);}});function handler(event){var orgEvent=event||window.event,args=[].slice.call(arguments,1),delta=0,returnValue=true,deltaX=0,deltaY=0;event=$.event.fix(orgEvent);event.type="mousewheel";if(orgEvent.wheelDelta){delta=orgEvent.wheelDelta/120;}
if(orgEvent.detail){delta=-orgEvent.detail/3;}
deltaY=delta;if(orgEvent.axis!==undefined&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS){deltaY=0;deltaX=-1*delta;}
if(orgEvent.wheelDeltaY!==undefined){deltaY=orgEvent.wheelDeltaY/120;}
if(orgEvent.wheelDeltaX!==undefined){deltaX=-1*orgEvent.wheelDeltaX/120;}
args.unshift(event,delta,deltaX,deltaY);return($.event.dispatch||$.event.handle).apply(this,args);}})(jQuery);
</script>

<script>

$(function(){

$('#keyboard').keyboard();

});

</script>
</html>
posted @ 2019-05-15 09:46  web前端参天大圣  阅读(602)  评论(0编辑  收藏  举报