Merge pull request #689 from ossman/keysym
Don't send Unicode as keysym
This commit is contained in:
commit
b85a13de69
|
@ -14,6 +14,7 @@
|
||||||
/* [module]
|
/* [module]
|
||||||
* import Util from "../core/util";
|
* import Util from "../core/util";
|
||||||
* import KeyTable from "../core/input/keysym";
|
* import KeyTable from "../core/input/keysym";
|
||||||
|
* import keysyms from "./keysymdef";
|
||||||
* import RFB from "../core/rfb";
|
* import RFB from "../core/rfb";
|
||||||
* import Display from "../core/display";
|
* import Display from "../core/display";
|
||||||
* import WebUtil from "./webutil";
|
* import WebUtil from "./webutil";
|
||||||
|
@ -1467,7 +1468,7 @@ var UI;
|
||||||
UI.rfb.sendKey(KeyTable.XK_BackSpace);
|
UI.rfb.sendKey(KeyTable.XK_BackSpace);
|
||||||
}
|
}
|
||||||
for (i = newLen - inputs; i < newLen; i++) {
|
for (i = newLen - inputs; i < newLen; i++) {
|
||||||
UI.rfb.sendKey(newValue.charCodeAt(i));
|
UI.rfb.sendKey(keysyms.fromUnicode(newValue.charCodeAt(i)).keysym);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Control the text content length in the keyboardinput element
|
// Control the text content length in the keyboardinput element
|
||||||
|
|
|
@ -10,7 +10,13 @@ var keysyms = (function(){
|
||||||
|
|
||||||
function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; }
|
function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; }
|
||||||
return {
|
return {
|
||||||
fromUnicode : function(u) { return lookup(codepoints[u]); },
|
fromUnicode : function(u) {
|
||||||
|
var keysym = codepoints[u];
|
||||||
|
if (keysym === undefined) {
|
||||||
|
keysym = 0x01000000 | u;
|
||||||
|
}
|
||||||
|
return lookup(keysym);
|
||||||
|
},
|
||||||
lookup : lookup
|
lookup : lookup
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -184,10 +184,7 @@ var KeyboardUtil = {};
|
||||||
codepoint = evt.keyCode;
|
codepoint = evt.keyCode;
|
||||||
}
|
}
|
||||||
if (codepoint) {
|
if (codepoint) {
|
||||||
var res = keysyms.fromUnicode(substituteCodepoint(codepoint));
|
return keysyms.fromUnicode(substituteCodepoint(codepoint));
|
||||||
if (res) {
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// we could check evt.key here.
|
// we could check evt.key here.
|
||||||
// Legal values are defined in http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list,
|
// Legal values are defined in http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list,
|
||||||
|
|
12
core/rfb.js
12
core/rfb.js
|
@ -320,15 +320,15 @@
|
||||||
|
|
||||||
// Send a key press. If 'down' is not specified then send a down key
|
// Send a key press. If 'down' is not specified then send a down key
|
||||||
// followed by an up key.
|
// followed by an up key.
|
||||||
sendKey: function (code, down) {
|
sendKey: function (keysym, down) {
|
||||||
if (this._rfb_connection_state !== 'connected' || this._view_only) { return false; }
|
if (this._rfb_connection_state !== 'connected' || this._view_only) { return false; }
|
||||||
if (typeof down !== 'undefined') {
|
if (typeof down !== 'undefined') {
|
||||||
Util.Info("Sending key code (" + (down ? "down" : "up") + "): " + code);
|
Util.Info("Sending keysym (" + (down ? "down" : "up") + "): " + keysym);
|
||||||
RFB.messages.keyEvent(this._sock, code, down ? 1 : 0);
|
RFB.messages.keyEvent(this._sock, keysym, down ? 1 : 0);
|
||||||
} else {
|
} else {
|
||||||
Util.Info("Sending key code (down + up): " + code);
|
Util.Info("Sending keysym (down + up): " + keysym);
|
||||||
RFB.messages.keyEvent(this._sock, code, 1);
|
RFB.messages.keyEvent(this._sock, keysym, 1);
|
||||||
RFB.messages.keyEvent(this._sock, code, 0);
|
RFB.messages.keyEvent(this._sock, keysym, 0);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
|
@ -38,9 +38,9 @@ describe('Helpers', function() {
|
||||||
it('should map characters which aren\'t in Latin1 *or* Windows-1252 to keysyms', function() {
|
it('should map characters which aren\'t in Latin1 *or* Windows-1252 to keysyms', function() {
|
||||||
expect(keysyms.fromUnicode('ŵ'.charCodeAt())).to.have.property('keysym', 0x1000175);
|
expect(keysyms.fromUnicode('ŵ'.charCodeAt())).to.have.property('keysym', 0x1000175);
|
||||||
});
|
});
|
||||||
it('should return undefined for unknown codepoints', function() {
|
it('should map unknown codepoints to the Unicode range', function() {
|
||||||
expect(keysyms.fromUnicode('\n'.charCodeAt())).to.be.undefined;
|
expect(keysyms.fromUnicode('\n'.charCodeAt())).to.have.property('keysym', 0x100000a);
|
||||||
expect(keysyms.fromUnicode('\u1F686'.charCodeAt())).to.be.undefined;
|
expect(keysyms.fromUnicode('\u{1F686}'.charCodeAt())).to.have.property('keysym', 0x101f686);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,13 @@ var out = "// This file describes mappings from Unicode codepoints to the keysym
|
||||||
"\n" +
|
"\n" +
|
||||||
" function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; }\n" +
|
" function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; }\n" +
|
||||||
" return {\n" +
|
" return {\n" +
|
||||||
" fromUnicode : function(u) { return lookup(codepoints[u]); },\n" +
|
" fromUnicode : function(u) {\n" +
|
||||||
|
" var keysym = codepoints[u];\n" +
|
||||||
|
" if (keysym === undefined) {\n" +
|
||||||
|
" keysym = 0x01000000 | u;\n" +
|
||||||
|
" }\n" +
|
||||||
|
" return lookup(keysym);\n" +
|
||||||
|
" },\n" +
|
||||||
" lookup : lookup\n" +
|
" lookup : lookup\n" +
|
||||||
" };\n" +
|
" };\n" +
|
||||||
"})();\n";
|
"})();\n";
|
||||||
|
|
Loading…
Reference in New Issue