Mercurial > hg > rlgwebd
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; |