MCPcopy
hub / github.com/autoNumeric/autoNumeric / character

Method character

src/AutoNumericHelper.js:361–442  ·  view source on GitHub ↗

* Return the character from the event key code. * If the KeyboardEvent does not represent a printable character, then the key name is used (ie. 'Meta', 'Shift', 'F1', etc.) * @example character(50) => '2' * * @param {KeyboardEvent} event * @returns {string}

(event)

Source from the content-addressed store, hash-verified

359 * @returns {string}
360 */
361 static character(event) {
362 let result;
363 if (event.key === 'Unidentified' || event.key === void(0) || this.isSeleniumBot()) {
364 //XXX The selenium geckodriver does not understand `event.key`, hence when using it, we need to rely on the old deprecated `keyCode` attribute, cf. upstream issue https://github.com/mozilla/geckodriver/issues/440
365 // Use the old deprecated keyCode property, if the new `key` one is not supported
366 const keyCode = this.keyCodeNumber(event);
367 if (keyCode === 229) { // Android Chrome returns the same keycode number 229 for all keys pressed
368 return AutoNumericEnum.keyName.AndroidDefault;
369 }
370
371 const potentialResult = AutoNumericEnum.fromCharCodeKeyCode[keyCode];
372 if (!AutoNumericHelper.isUndefinedOrNullOrEmpty(potentialResult)) {
373 // Since `String.fromCharCode` do not return named keys for some keys ('Escape' and 'Enter' for instance), we convert the characters to the key names
374 result = potentialResult;
375 } else {
376 result = String.fromCharCode(keyCode);
377 }
378 } else {
379 switch (event.key) {
380 // Manages all the special cases for obsolete browsers that return the non-standard names
381 case 'Add':
382 result = AutoNumericEnum.keyName.NumpadPlus;
383 break;
384 case 'Apps':
385 result = AutoNumericEnum.keyName.ContextMenu;
386 break;
387 case 'Crsel':
388 result = AutoNumericEnum.keyName.CrSel;
389 break;
390 case 'Decimal':
391 if (event.char) {
392 // this fixes #602
393 result = event.char;
394 } else {
395 result = AutoNumericEnum.keyName.NumpadDot;
396 }
397 break;
398 case 'Del':
399 result = AutoNumericEnum.keyName.Delete;
400 break;
401 case 'Divide':
402 result = AutoNumericEnum.keyName.NumpadSlash;
403 break;
404 case 'Down':
405 result = AutoNumericEnum.keyName.DownArrow;
406 break;
407 case 'Esc':
408 result = AutoNumericEnum.keyName.Esc;
409 break;
410 case 'Exsel':
411 result = AutoNumericEnum.keyName.ExSel;
412 break;
413 case 'Left':
414 result = AutoNumericEnum.keyName.LeftArrow;
415 break;
416 case 'Meta':
417 case 'Super':
418 result = AutoNumericEnum.keyName.OSLeft;

Callers 3

_onKeydownGlobalMethod · 0.80
_onKeyupGlobalMethod · 0.80
_updateEventKeyInfoMethod · 0.80

Calls 3

isSeleniumBotMethod · 0.95
keyCodeNumberMethod · 0.95

Tested by

no test coverage detected