first commit
This commit is contained in:
133
lib/js/jquery.capslockstate.js
Executable file
133
lib/js/jquery.capslockstate.js
Executable file
@@ -0,0 +1,133 @@
|
||||
/*!
|
||||
* jQuery capslockstate plugin v1.2.1
|
||||
* https://github.com/nosilleg/capslockstate-jquery-plugin/
|
||||
*
|
||||
* Copyright 2012 Jason Ellison
|
||||
* Released under the MIT license
|
||||
* https://github.com/nosilleg/capslockstate-jquery-plugin/blob/master/MIT-LICENSE.txt
|
||||
*
|
||||
* Date: Sun Feb 3 2013 21:34:00 GMT
|
||||
*/
|
||||
(function($) {
|
||||
|
||||
var capsLockState = "unknown";
|
||||
|
||||
var methods = {
|
||||
init : function(options) {
|
||||
|
||||
// Create some defaults, extending them with any options that were provided
|
||||
var settings = $.extend({
|
||||
// No defaults, because there are no options
|
||||
}, options);
|
||||
|
||||
// Some systems will always return uppercase characters if Caps Lock is on.
|
||||
var capsLockForcedUppercase = /MacPPC|MacIntel/.test(window.navigator.platform) === true;
|
||||
|
||||
var helpers = {
|
||||
isCapslockOn : function(event) {
|
||||
|
||||
var shiftOn = false;
|
||||
if (event.shiftKey) { // determines whether or not the shift key was held
|
||||
shiftOn = event.shiftKey; // stores shiftOn as true or false
|
||||
} else if (event.modifiers) { // determines whether or not shift, alt or ctrl were held
|
||||
shiftOn = !!(event.modifiers & 4);
|
||||
}
|
||||
|
||||
var keyString = String.fromCharCode(event.which); // logs which key was pressed
|
||||
if (keyString.toUpperCase() === keyString.toLowerCase()) {
|
||||
// We can't determine the state for these keys
|
||||
} else if (keyString.toUpperCase() === keyString) {
|
||||
if (capsLockForcedUppercase === true && shiftOn) {
|
||||
// We can't determine the state for these keys
|
||||
} else {
|
||||
capsLockState = !shiftOn;
|
||||
}
|
||||
} else if (keyString.toLowerCase() === keyString) {
|
||||
capsLockState = shiftOn;
|
||||
}
|
||||
|
||||
return capsLockState;
|
||||
|
||||
},
|
||||
|
||||
isCapslockKey : function(event) {
|
||||
|
||||
var keyCode = event.which; // logs which key was pressed
|
||||
if (keyCode === 20) {
|
||||
if (capsLockState !== "unknown") {
|
||||
capsLockState = !capsLockState;
|
||||
}
|
||||
}
|
||||
|
||||
return capsLockState;
|
||||
|
||||
},
|
||||
|
||||
hasStateChange : function(previousState, currentState) {
|
||||
|
||||
if (previousState !== currentState) {
|
||||
$('body').trigger("capsChanged");
|
||||
|
||||
if (currentState === true) {
|
||||
$('body').trigger("capsOn");
|
||||
} else if (currentState === false) {
|
||||
$('body').trigger("capsOff");
|
||||
} else if (currentState === "unknown") {
|
||||
$('body').trigger("capsUnknown");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Check all keys
|
||||
$('body').bind("keypress.capslockstate", function(event) {
|
||||
var previousState = capsLockState;
|
||||
capsLockState = helpers.isCapslockOn(event);
|
||||
helpers.hasStateChange(previousState, capsLockState);
|
||||
});
|
||||
|
||||
// Check if key was Caps Lock key
|
||||
$('body').bind("keydown.capslockstate", function(event) {
|
||||
var previousState = capsLockState;
|
||||
capsLockState = helpers.isCapslockKey(event);
|
||||
helpers.hasStateChange(previousState, capsLockState);
|
||||
});
|
||||
|
||||
// If the window loses focus then we no longer know the state
|
||||
$(window).bind("focus.capslockstate", function() {
|
||||
var previousState = capsLockState;
|
||||
capsLockState = "unknown";
|
||||
helpers.hasStateChange(previousState, capsLockState);
|
||||
});
|
||||
|
||||
// Trigger events on initial load of plugin
|
||||
helpers.hasStateChange(null, "unknown");
|
||||
|
||||
// Maintain chainability
|
||||
return this.each(function() {});
|
||||
|
||||
},
|
||||
state : function() {
|
||||
return capsLockState;
|
||||
},
|
||||
destroy : function() {
|
||||
return this.each(function() {
|
||||
$('body').unbind('.capslockstate');
|
||||
$(window).unbind('.capslockstate');
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
jQuery.fn.capslockstate = function(method) {
|
||||
|
||||
// Method calling logic
|
||||
if (methods[method]) {
|
||||
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
} else if (typeof method === 'object' || !method) {
|
||||
return methods.init.apply(this, arguments);
|
||||
} else {
|
||||
$.error('Method ' + method + ' does not exist on jQuery.capslockstate');
|
||||
}
|
||||
|
||||
};
|
||||
})(jQuery);
|
Reference in New Issue
Block a user