Index: wp-admin/js/edit-comments.dev.js
===================================================================
--- wp-admin/js/edit-comments.dev.js	(revision 20998)
+++ wp-admin/js/edit-comments.dev.js	(working copy)
@@ -593,10 +593,10 @@
 
 		$.table_hotkeys(
 			$('table.widefat'),
-			['a', 'u', 's', 'd', 'r', 'q', 'z', ['e', edit_comment], ['shift+x', toggle_all],
-			['shift+a', make_bulk('approve')], ['shift+s', make_bulk('spam')],
-			['shift+d', make_bulk('delete')], ['shift+t', make_bulk('trash')],
-			['shift+z', make_bulk('untrash')], ['shift+u', make_bulk('unapprove')]],
+			['a', 'u', 's', 'd', 'r', 'q', 'z', ['e', edit_comment], ['shift_x', toggle_all],
+			['shift_a', make_bulk('approve')], ['shift_s', make_bulk('spam')],
+			['shift_d', make_bulk('delete')], ['shift_t', make_bulk('trash')],
+			['shift_z', make_bulk('untrash')], ['shift_u', make_bulk('unapprove')]],
 			{ highlight_first: adminCommentsL10n.hotkeys_highlight_first, highlight_last: adminCommentsL10n.hotkeys_highlight_last,
 			prev_page_link_cb: make_hotkeys_redirect('prev'), next_page_link_cb: make_hotkeys_redirect('next') }
 		);
Index: wp-includes/js/jquery/jquery.hotkeys.dev.js
===================================================================
--- wp-includes/js/jquery/jquery.hotkeys.dev.js	(revision 20998)
+++ wp-includes/js/jquery/jquery.hotkeys.dev.js	(working copy)
@@ -1,128 +1,106 @@
-/******************************************************************************************************************************
+/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
 
- * @ Original idea by by Binny V A, Original version: 2.00.A 
- * @ http://www.openjs.com/scripts/events/keyboard_shortcuts/
- * @ Original License : BSD
- 
- * @ jQuery Plugin by Tzury Bar Yochay 
-        mail: tzury.by@gmail.com
-        blog: evalinux.wordpress.com
-        face: facebook.com/profile.php?id=513676303
-        
-        (c) Copyrights 2007
-        
- * @ jQuery Plugin version Beta (0.0.2)
- * @ License: jQuery-License.
- 
-TODO:
-    add queue support (as in gmail) e.g. 'x' then 'y', etc.
-    add mouse + mouse wheel events.
+(function(jQuery){
 
-USAGE:
-    $.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');});
-    $.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});>
-    $.hotkeys.remove('Ctrl+c'); 
-    $.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'}); 
-    
-******************************************************************************************************************************/
-(function (jQuery){
-    this.version = '(beta)(0.0.3)';
-	this.all = {};
-    this.special_keys = {
-        27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock', 
-        144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup', 
-        34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3', 
-        115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'};
-        
-    this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", 
-        "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", 
-        ".":">",  "/":"?",  "\\":"|" };
-        
-    this.add = function(combi, options, callback) {
-        if (jQuery.isFunction(options)){
-            callback = options;
-            options = {};
-        }
-        var opt = {},
-            defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0]},
-            that = this;
-        opt = jQuery.extend( opt , defaults, options || {} );
-        combi = combi.toLowerCase();        
-        
-        // inspect if keystroke matches
-        var inspector = function(event) {
-            event = jQuery.event.fix(event); // jQuery event normalization.
-            var element = event.target;
-            // @ TextNode -> nodeType == 3
-            element = (element.nodeType==3) ? element.parentNode : element;
-            
-            if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
-                var target = jQuery(element);
-                if( target.is("input") || target.is("textarea")){
-                    return;
-                }
-            }
-            var code = event.which,
-                type = event.type,
-                character = String.fromCharCode(code).toLowerCase(),
-                special = that.special_keys[code],
-                shift = event.shiftKey,
-                ctrl = event.ctrlKey,
-                alt= event.altKey,
-                meta = event.metaKey,
-                propagate = true, // default behaivour
-                mapPoint = null;
-            
-            // in opera + safari, the event.target is unpredictable.
-            // for example: 'keydown' might be associated with HtmlBodyElement 
-            // or the element where you last clicked with your mouse.
-            if (jQuery.browser.opera || jQuery.browser.safari){
-                while (!that.all[element] && element.parentNode){
-                    element = element.parentNode;
-                }
-            }
-            var cbMap = that.all[element].events[type].callbackMap;
-            if(!shift && !ctrl && !alt && !meta) { // No Modifiers
-                mapPoint = cbMap[special] ||  cbMap[character]
+	jQuery.hotkeys = {
+		version: "0.8+",
+
+		specialKeys: {
+			8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
+			20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
+			37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
+			96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
+			104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
+			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: "numlock", 145: "scroll", 188: ",", 190: ".",
+			191: "/", 224: "meta"
+		},
+
+		shiftNums: {
+			"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
+			"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
+			".": ">",  "/": "?",  "\\": "|"
+		}
+	};
+
+	function keyHandler( handleObj ) {
+
+		var origHandler = handleObj.handler,
+			//use namespace as keys so it works with event delegation as well
+			//will also allow removing listeners of a specific key combination
+			//and support data objects
+			keys = (handleObj.namespace || "").toLowerCase().split(" ");
+			keys = jQuery.map(keys, function(key) { return key.split("."); });
+
+		//no need to modify handler if no keys specified
+		if (keys.length === 1 && (keys[0] === "" || keys[0] === "autocomplete")) {
+			return;
+		}
+
+		handleObj.handler = function( event ) {
+			// Don't fire in text-accepting inputs that we didn't directly bind to
+			// important to note that $.fn.prop is only available on jquery 1.6+
+			if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
+				event.target.type === "text" || jQuery(event.target).prop('contenteditable') == 'true' )) {
+				return;
 			}
-            // deals with combinaitons (alt|ctrl|shift+anything)
-            else{
-                var modif = '';
-                if(alt) modif +='alt+';
-                if(ctrl) modif+= 'ctrl+';
-                if(shift) modif += 'shift+';
-                if(meta) modif += 'meta+';
-                // modifiers + special keys or modifiers + characters or modifiers + shift characters
-                mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]]
-            }
-            if (mapPoint){
-                mapPoint.cb(event);
-                if(!mapPoint.propagate) {
-                    event.stopPropagation();
-                    event.preventDefault();
-                    return false;
-                }
-            }
-		};        
-        // first hook for this element
-        if (!this.all[opt.target]){
-            this.all[opt.target] = {events:{}};
-        }
-        if (!this.all[opt.target].events[opt.type]){
-            this.all[opt.target].events[opt.type] = {callbackMap: {}}
-            jQuery.event.add(opt.target, opt.type, inspector);
-        }        
-        this.all[opt.target].events[opt.type].callbackMap[combi] =  {cb: callback, propagate:opt.propagate};                
-        return jQuery;
-	};    
-    this.remove = function(exp, opt) {
-        opt = opt || {};
-        target = opt.target || jQuery('html')[0];
-        type = opt.type || 'keydown';
-		exp = exp.toLowerCase();        
-        delete this.all[target].events[type].callbackMap[exp]        
-        return jQuery;
-	};
-    jQuery.hotkeys = this;
-    return jQuery;    
-})(jQuery);
\ No newline at end of file
+
+			// Keypress represents characters, not special keys
+			var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
+				character = String.fromCharCode( event.which ).toLowerCase(),
+				key, modif = "", possible = {};
+
+			// check combinations (alt|ctrl|shift+anything)
+			if ( event.altKey && special !== "alt" ) {
+				modif += "alt_";
+			}
+
+			if ( event.ctrlKey && special !== "ctrl" ) {
+				modif += "ctrl_";
+			}
+
+			// TODO: Need to make sure this works consistently across platforms
+			if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
+				modif += "meta_";
+			}
+
+			if ( event.shiftKey && special !== "shift" ) {
+				modif += "shift_";
+			}
+
+			if ( special ) {
+				possible[ modif + special ] = true;
+
+			} else {
+				possible[ modif + character ] = true;
+				possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
+
+				// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
+				if ( modif === "shift_" ) {
+					possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
+				}
+			}
+
+			for ( var i = 0, l = keys.length; i < l; i++ ) {
+				if ( possible[ keys[i] ] ) {
+					return origHandler.apply( this, arguments );
+				}
+			}
+		};
+	}
+
+	jQuery.each([ "keydown", "keyup", "keypress" ], function() {
+		jQuery.event.special[ this ] = { add: keyHandler };
+	});
+
+})( jQuery );
Index: wp-includes/js/jquery/jquery.table-hotkeys.dev.js
===================================================================
--- wp-includes/js/jquery/jquery.table-hotkeys.dev.js	(revision 20998)
+++ wp-includes/js/jquery/jquery.table-hotkeys.dev.js	(working copy)
@@ -74,26 +74,27 @@
 			set_current_row(first_row);
 		else if (opts.highlight_last)
 			set_current_row(get_last_row());
-		$.hotkeys.add(opts.prev_key, opts.hotkeys_opts, function() {return adjacent_row_callback('prev')});
-		$.hotkeys.add(opts.next_key, opts.hotkeys_opts, function() {return adjacent_row_callback('next')});
-		$.hotkeys.add(opts.mark_key, opts.hotkeys_opts, check);
+		$(document).bind('keypress.' + opts.prev_key, function() {return adjacent_row_callback('prev')});
+		$(document).bind('keypress.' + opts.next_key, function() {return adjacent_row_callback('next')});
+		$(document).bind('keypress.' + opts.mark_key, check);
 		$.each(keys, function() {
 			var callback, key;
 			
 			if ($.isFunction(this[1])) {
 				callback = this[1];
 				key = this[0];
-				$.hotkeys.add(key, opts.hotkeys_opts, function(event) { return callback(event, $.table_hotkeys.current_row); });
+				$(document).bind('keypress.' + key, function(event) { return callback(event, $.table_hotkeys.current_row); });
 			} else {
 				key = this;
-				$.hotkeys.add(key, opts.hotkeys_opts, make_key_callback('.'+opts.class_prefix+key));
+				$(document).bind('keypress.' + key, make_key_callback('.'+opts.class_prefix+key));
 			}
 		});
 
 	};
 	$.table_hotkeys.current_row = null;
-	$.table_hotkeys.defaults = {cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current',
-		destructive_suffix: 'destructive', hotkeys_opts: {disableInInput: true, type: 'keypress'},
+	$.table_hotkeys.defaults = {
+		cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current', destructive_suffix: 'destructive',
 		checkbox_expr: ':checkbox', next_key: 'j', prev_key: 'k', mark_key: 'x',
-		start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false};
+		start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false
+	};
 })(jQuery);
