| module.exports = function KeycodesServiceFactory(KeycodesAndroid, KeycodesJS) { |
| var service = {} |
| |
| var a = KeycodesAndroid |
| var j = KeycodesJS |
| var androidMap = [ |
| [j.ENTER, a.KEYCODE_ENTER], |
| [j.SPACE, a.KEYCODE_SPACE], |
| [j.DELETE, a.KEYCODE_DEL], |
| [j.ESCAPE, a.KEYCODE_ESCAPE], |
| [j.BACKSPACE, a.KEYCODE_DEL], |
| [j.TAB, a.KEYCODE_TAB], |
| [j.SHIFT, a.KEYCODE_SHIFT_LEFT], |
| [j.CAPS_LOCK, a.KEYCODE_CAPS_LOCK], |
| [j.SLASH, a.KEYCODE_SLASH], |
| [j.BACKSLASH, a.KEYCODE_BACKSLASH], |
| [j.COMMA, a.KEYCODE_COMMA], |
| [j.PERIOD, a.KEYCODE_PERIOD], |
| [j.SEMICOLON, a.KEYCODE_SEMICOLON], |
| [j.PAGE_UP, a.KEYCODE_PAGE_UP], |
| [j.PAGE_DOWN, a.KEYCODE_PAGE_DOWN], |
| // [j.LEFT_WINDOW, a.KEYCODE_RO], |
| // [j.SELECT_KEY, a.KEYCODE_KANA], |
| [j.HOME, a.KEYCODE_MOVE_HOME], |
| [j.END, a.KEYCODE_MOVE_END], |
| [j.UP, a.KEYCODE_DPAD_UP], |
| [j.DOWN, a.KEYCODE_DPAD_DOWN], |
| [j.LEFT, a.KEYCODE_DPAD_LEFT], |
| [j.RIGHT, a.KEYCODE_DPAD_RIGHT], |
| [j.F3, a.KEYCODE_POWER], |
| [j.F7, a.KEYCODE_MEDIA_PREVIOUS], |
| [j.F8, a.KEYCODE_MEDIA_PLAY_PAUSE], |
| [j.F9, a.KEYCODE_MEDIA_NEXT], |
| [j.F10, a.KEYCODE_VOLUME_MUTE], |
| [j.F11, a.KEYCODE_VOLUME_DOWN], |
| [j.F12, a.KEYCODE_VOLUME_UP], |
| [j.NUMPAD_0, a.KEYCODE_NUMPAD_0], |
| [j.NUMPAD_1, a.KEYCODE_NUMPAD_1], |
| [j.NUMPAD_2, a.KEYCODE_NUMPAD_2], |
| [j.NUMPAD_3, a.KEYCODE_NUMPAD_3], |
| [j.NUMPAD_4, a.KEYCODE_NUMPAD_4], |
| [j.NUMPAD_5, a.KEYCODE_NUMPAD_5], |
| [j.NUMPAD_6, a.KEYCODE_NUMPAD_6], |
| [j.NUMPAD_7, a.KEYCODE_NUMPAD_7], |
| [j.NUMPAD_8, a.KEYCODE_NUMPAD_8], |
| [j.NUMPAD_9, a.KEYCODE_NUMPAD_9], |
| [j.MULTIPLY, a.KEYCODE_NUMPAD_MULTIPLY], |
| [j.ADD, a.KEYCODE_NUMPAD_ADD], |
| [j.SUBTRACT, a.KEYCODE_NUMPAD_SUBTRACT], |
| [j.DECIMAL_POINT, a.KEYCODE_NUMPAD_DOT], |
| [j.DIVIDE, a.KEYCODE_NUMPAD_DIVIDE], |
| [j.EQUAL_SIGN, a.KEYCODE_EQUALS], |
| [j.DASH, a.KEYCODE_MINUS], |
| [j.GRAVE_ACCENT, a.KEYCODE_GRAVE], |
| [j.OPEN_BRACKET, a.KEYCODE_LEFT_BRACKET], |
| [j.CLOSE_BRACKET, a.KEYCODE_RIGHT_BRACKET], |
| [j.SINGLE_QUOTE, a.KEYCODE_APOSTROPHE] |
| ] |
| |
| service.mapToDevice = function(keyCode) { |
| return service.mapToAndroid(keyCode) |
| } |
| |
| service.mapToAndroid = function(key) { |
| // All special keys |
| for (var i = 0; i < androidMap.length; ++i) { |
| if (androidMap[i][0] === key) { |
| return androidMap[i][1] |
| } |
| } |
| // Range of numbers and letters |
| if (key >= j['0'] && key <= j['9']) { |
| return key - 41 // 0-9 range |
| } |
| else if (key >= j.A && key <= j.Z) { |
| return key - 36 // a-z range |
| } |
| // Key not mapped |
| return -1 |
| } |
| |
| return service |
| } |