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; |
