ariaNgKeyboardService.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').factory('ariaNgKeyboardService', ['$window', function ($window) {
  4. var platform = '';
  5. if ($window.navigator && $window.navigator.userAgentData && $window.navigator.userAgentData.platform) {
  6. platform = $window.navigator.userAgentData.platform;
  7. } else if ($window.navigator && $window.navigator.platform) {
  8. platform = $window.navigator.platform;
  9. }
  10. var isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(platform);
  11. var isModifierKeyPressed = function (event) {
  12. if (isMacLike) {
  13. return event.metaKey;
  14. } else {
  15. return event.ctrlKey;
  16. }
  17. };
  18. var getKeyCode = function (event) {
  19. return event.keyCode || event.which || event.charCode;
  20. };
  21. return {
  22. isMacKeyboardLike: function () {
  23. return isMacLike;
  24. },
  25. isCtrlAPressed: function (event) {
  26. return (isModifierKeyPressed(event) && (event.code === 'KeyA' || getKeyCode(event) === 65)); // Ctrl+A / Command+A
  27. },
  28. isCtrlFPressed: function (event) {
  29. return (isModifierKeyPressed(event) && (event.code === 'KeyF' || getKeyCode(event) === 70)); // Ctrl+F / Command+F
  30. },
  31. isCtrlNPressed: function (event) {
  32. return (isModifierKeyPressed(event) && (event.code === 'KeyN' || getKeyCode(event) === 78)); // Ctrl+N / Command+N
  33. },
  34. isCtrlEnterPressed: function (event) {
  35. return (isModifierKeyPressed(event) && (event.code === 'Enter' || getKeyCode(event) === 13)); // Ctrl+Enter / Command+Return
  36. },
  37. isBackspacePressed: function (event) {
  38. return (event.code === 'Backspace' || getKeyCode(event) === 8); // Backspace
  39. },
  40. isDeletePressed: function (event) {
  41. return (event.code === 'Delete' || getKeyCode(event) === 46); // Delete
  42. }
  43. };
  44. }]);
  45. }());