comparison shterm.js @ 70:d7eb63cd7a16

Try to get some compatibility for keys. I'd thought using the DOM_VK_ names was a good idea. Symbolic names ought to be more portable than opaque numeric constants. Foolish me, expecting things to be sane. Keys now work with FF15 and Chrome 17.
author John "Elwin" Edwards <elwin@sdf.org>
date Thu, 21 Jun 2012 09:43:52 -0700
parents 7a50b4412fea
children a497ecd116d9
comparison
equal deleted inserted replaced
69:0c16f07135dd 70:d7eb63cd7a16
211 } 211 }
212 212
213 function sendkey(ev) { 213 function sendkey(ev) {
214 var keynum = ev.keyCode; 214 var keynum = ev.keyCode;
215 var code; 215 var code;
216 if (keynum >= ev.DOM_VK_A && keynum <= ev.DOM_VK_Z) { 216 if (keynum >= 65 && keynum <= 90) {
217 /* Letters. This assumes the codes are 65-90. */ 217 /* Letters. */
218 if (ev.ctrlKey) 218 if (ev.ctrlKey)
219 keynum -= 64; 219 keynum -= 64;
220 else if (!ev.shiftKey) 220 else if (!ev.shiftKey)
221 keynum += 32; 221 keynum += 32;
222 code = keynum.toString(16); 222 code = keynum.toString(16);
223 if (code.length < 2) 223 if (code.length < 2)
224 code = "0" + code; 224 code = "0" + code;
225 } 225 }
226 else if (keynum >= ev.DOM_VK_0 && keynum <= ev.DOM_VK_9) { 226 else if (keynum >= 48 && keynum <= 57) {
227 /* The number row. */ 227 /* The number row. */
228 if (ev.shiftKey) { 228 if (ev.shiftKey) {
229 code = numShifts[keynum - 48].toString(16); 229 code = numShifts[keynum - 48].toString(16);
230 } 230 }
231 else { 231 else {
236 if (ev.shiftKey) 236 if (ev.shiftKey)
237 code = keyHexCodes[keynum][1]; 237 code = keyHexCodes[keynum][1];
238 else 238 else
239 code = keyHexCodes[keynum][0]; 239 code = keyHexCodes[keynum][0];
240 } 240 }
241 else if (keynum == ev.DOM_VK_SHIFT || keynum == ev.DOM_VK_CONTROL || 241 else if (keynum >= 16 && keynum <= 20) {
242 keynum == ev.DOM_VK_ALT || keynum == ev.DOM_VK_CAPS_LOCK) {
243 return; 242 return;
244 } 243 }
245 else { 244 else {
246 debug(1, "Ignoring keycode " + keynum); 245 debug(1, "Ignoring keycode " + keynum);
247 return; 246 return;
296 keystr = c.charCodeAt(0).toString(16); 295 keystr = c.charCodeAt(0).toString(16);
297 } 296 }
298 else 297 else
299 return; 298 return;
300 //writeData("Sending " + keystr); 299 //writeData("Sending " + keystr);
301 var formdata = {"t": "d", "n": nsend++, "d": code}; 300 var formdata = {"t": "d", "n": nsend++, "d": keystr};
302 var datareq = new XMLHttpRequest(); 301 var datareq = new XMLHttpRequest();
303 datareq.onreadystatechange = postResponseHandler; 302 datareq.onreadystatechange = postResponseHandler;
304 datareq.open('POST', '/feed', true); 303 datareq.open('POST', '/feed', true);
305 datareq.send(JSON.stringify(formdata)); 304 datareq.send(JSON.stringify(formdata));
306 return; 305 return;