jQuery Key Capture plugin

by amindunited

HTML

<textarea id="egArea">


</textarea>

CSS

#egArea {
    width: 600px;
    height:200px;
}

JavaScript

(function($){
        
    var defaults = {
        preventDefault : false,
        callback : null,
        keys : ['all']
    }
    
    
    var methods = {
        init : function( options ){
            var that = this;
            var data = $(that).data('keyCapture');
            
            if ( !data ) {
                $(this).data('keyCapture', options);
            } 
            else {
                console.log("else");
                console.log( data );
            }
            methods.addListeners(that);
        },
        addListeners : function(elm){
            $(elm).on('keydown', function(e){
                methods.keyDown(e);
            })
        },
        keyDown : function(e){
            var keyCode = methods.getKeyCodeValue(methods.getKeyCode(e), e.shiftKey);
            var data = $(e.target).data('keyCapture');
            var val = $.extend({}, e, {'keyCode':keyCode})

            if ( jQuery.inArray('all', data.keys ) >= 0) {
                if ( data.preventDefault ) {
                    e.preventDefault();
                }
                console.log("keyDown sees " + keyCode);
                data.callback.apply( $(this), val);
            }
            else if ( jQuery.inArray(keyCode, data.keys) >= 0 ) {
                if ( data.preventDefault ) {
                    e.preventDefault();
                }
                //var val = $.extend({}, e);
                //console.log(val);
                data.callback.apply( $(this), [val, arguments]);
            }
            else {
                console.log(keyCode + " is not a watsched key");
            }
            return $(this);
        },
         addKeys : function(elm, keys){
            var data = $(elm).data('keyCapture')
            for ( var i = 0; i < keys.length; i++ ){
                data.keys.push(keys[i]);
            }
        },    
        getKeyCode : function(e) {
            var keycode = null;
            if(window.event) {
               ...