1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-19 19:38:00 +01:00

Fix key event stringification letter-case issue for non-keypress events. Closes issue #258.

This commit is contained in:
Kris Maglione
2011-02-18 20:59:16 -05:00
parent 11c39de46b
commit ce23dd079d
2 changed files with 24 additions and 12 deletions

View File

@@ -387,19 +387,24 @@ var Events = Module("events", {
this._key_code = {}; this._key_code = {};
for (let list in values(this._keyTable)) for (let list in values(this._keyTable))
for (let v in values(list)) for (let v in values(list)) {
if (v.length == 1)
v = v.toLowerCase();
this._key_key[v.toLowerCase()] = v; this._key_key[v.toLowerCase()] = v;
}
for (let [k, v] in Iterator(KeyEvent)) { for (let [k, v] in Iterator(KeyEvent)) {
k = k.substr(7).toLowerCase(); k = k.substr(7).toLowerCase();
let names = [k.replace(/(^|_)(.)/g, function (m, n1, n2) n2.toUpperCase()) let names = [k.replace(/(^|_)(.)/g, function (m, n1, n2) n2.toUpperCase())
.replace(/^NUMPAD/, "k")]; .replace(/^NUMPAD/, "k")];
if (names[0].length == 1)
names[0] = names[0].toLowerCase();
if (k in this._keyTable) if (k in this._keyTable)
names = this._keyTable[k]; names = this._keyTable[k];
this._code_key[v] = names[0]; this._code_key[v] = names[0];
for (let [, name] in Iterator(names)) { for (let [, name] in Iterator(names)) {
if (name.length == 1)
name = name.toLowerCase();
this._key_key[name.toLowerCase()] = name; this._key_key[name.toLowerCase()] = name;
this._key_code[name.toLowerCase()] = v; this._key_code[name.toLowerCase()] = v;
} }
@@ -1185,6 +1190,9 @@ var Events = Module("events", {
else if (!event.isMacro && !event.noremap && events.shouldPass(event)) else if (!event.isMacro && !event.noremap && events.shouldPass(event))
ignore = true; ignore = true;
events.dbg("ON KEYPRESS " + key + " ignore: " + ignore,
event.originalTarget instanceof Element ? event.originalTarget : String(event.originalTarget));
if (ignore) if (ignore)
return null; return null;
@@ -1231,17 +1239,20 @@ var Events = Module("events", {
}, },
keyup: function onKeyUp(event) { keyup: function onKeyUp(event) {
// Prevent certain sites from transferring focus to an input box this.keyEvents.push(event);
// before we get a chance to process our key bindings on the
// "keypress" event.
if (modes.main == modes.PASS_THROUGH || let pass = modes.main == modes.PASS_THROUGH ||
modes.main == modes.QUOTE modes.main == modes.QUOTE
&& modes.getStack(1).main !== modes.PASS_THROUGH && modes.getStack(1).main !== modes.PASS_THROUGH
&& !events.shouldPass(event) || && !this.shouldPass(event) ||
!modes.passThrough && events.shouldPass(event)) !modes.passThrough && this.shouldPass(event);
this.keyEvents.push(event);
else if (!Events.isInputElement(dactyl.focusedElement)) events.dbg("ON " + event.type.toUpperCase() + " " + this.toString(event) + " pass: " + pass);
// Prevents certain sites from transferring focus to an input box
// before we get a chance to process our key bindings on the
// "keypress" event.
if (!pass && !Events.isInputElement(dactyl.focusedElement))
event.stopPropagation(); event.stopPropagation();
}, },
keydown: function onKeyDown(event) { keydown: function onKeyDown(event) {

View File

@@ -125,8 +125,8 @@ var Modes = Module("modes", {
}); });
this.addMode("EMBED", { this.addMode("EMBED", {
input: true,
description: "Active when an <embed> or <object> element is focused", description: "Active when an <embed> or <object> element is focused",
input: true,
ownsFocus: true, ownsFocus: true,
passthrough: true passthrough: true
}); });
@@ -135,6 +135,7 @@ var Modes = Module("modes", {
description: "All keys but <C-v> are ignored by " + config.appName, description: "All keys but <C-v> are ignored by " + config.appName,
bases: [this.BASE], bases: [this.BASE],
hidden: true, hidden: true,
input: true,
passthrough: true passthrough: true
}); });
this.addMode("QUOTE", { this.addMode("QUOTE", {