summaryrefslogtreecommitdiff
path: root/src/client/app/common/keycode.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-09-18 05:35:06 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-09-18 05:35:06 +0900
commit31ce3aa31296a1809cabc02f1ed6c92b328f5b3e (patch)
treeffb15463ddcaad74c4e17076640cd9bf9082ab2d /src/client/app/common/keycode.ts
parentMerge branch 'develop' of https://github.com/syuilo/misskey into develop (diff)
downloadsharkey-31ce3aa31296a1809cabc02f1ed6c92b328f5b3e.tar.gz
sharkey-31ce3aa31296a1809cabc02f1ed6c92b328f5b3e.tar.bz2
sharkey-31ce3aa31296a1809cabc02f1ed6c92b328f5b3e.zip
キーボードショートカットを強化するなど
Diffstat (limited to 'src/client/app/common/keycode.ts')
-rw-r--r--src/client/app/common/keycode.ts139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/client/app/common/keycode.ts b/src/client/app/common/keycode.ts
new file mode 100644
index 0000000000..c5ea6cb484
--- /dev/null
+++ b/src/client/app/common/keycode.ts
@@ -0,0 +1,139 @@
+export default searchInput => {
+ // Keyboard Events
+ if (searchInput && typeof searchInput === 'object') {
+ const hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode;
+ if (hasKeyCode) {
+ searchInput = hasKeyCode;
+ }
+ }
+
+ // Numbers
+ // if (typeof searchInput === 'number') {
+ // return names[searchInput]
+ // }
+
+ // Everything else (cast to string)
+ const search = String(searchInput);
+
+ // check codes
+ const foundNamedKeyCodes = codes[search.toLowerCase()];
+ if (foundNamedKeyCodes) {
+ return foundNamedKeyCodes;
+ }
+
+ // check aliases
+ const foundNamedKeyAliases = aliases[search.toLowerCase()];
+ if (foundNamedKeyAliases) {
+ return foundNamedKeyAliases;
+ }
+
+ // weird character?
+ if (search.length === 1) {
+ return search.charCodeAt(0);
+ }
+
+ return undefined;
+};
+
+/**
+ * Get by name
+ *
+ * exports.code['enter'] // => 13
+ */
+
+export const codes = {
+ 'backspace': 8,
+ 'tab': 9,
+ 'enter': 13,
+ 'shift': 16,
+ 'ctrl': 17,
+ 'alt': 18,
+ 'pause/break': 19,
+ 'caps lock': 20,
+ 'esc': 27,
+ 'space': 32,
+ 'page up': 33,
+ 'page down': 34,
+ 'end': 35,
+ 'home': 36,
+ 'left': 37,
+ 'up': 38,
+ 'right': 39,
+ 'down': 40,
+ // 'add': 43,
+ 'insert': 45,
+ 'delete': 46,
+ 'command': 91,
+ 'left command': 91,
+ 'right command': 93,
+ 'numpad *': 106,
+ // 'numpad +': 107,
+ 'numpad +': 43,
+ 'numpad add': 43, // as a trick
+ 'numpad -': 109,
+ 'numpad .': 110,
+ 'numpad /': 111,
+ 'num lock': 144,
+ 'scroll lock': 145,
+ 'my computer': 182,
+ 'my calculator': 183,
+ ';': 186,
+ '=': 187,
+ ',': 188,
+ '-': 189,
+ '.': 190,
+ '/': 191,
+ '`': 192,
+ '[': 219,
+ '\\': 220,
+ ']': 221,
+ "'": 222
+};
+
+// Helper aliases
+
+export const aliases = {
+ 'windows': 91,
+ '⇧': 16,
+ '⌥': 18,
+ '⌃': 17,
+ '⌘': 91,
+ 'ctl': 17,
+ 'control': 17,
+ 'option': 18,
+ 'pause': 19,
+ 'break': 19,
+ 'caps': 20,
+ 'return': 13,
+ 'escape': 27,
+ 'spc': 32,
+ 'pgup': 33,
+ 'pgdn': 34,
+ 'ins': 45,
+ 'del': 46,
+ 'cmd': 91
+};
+
+/*!
+* Programatically add the following
+*/
+
+// lower case chars
+for (let i = 97; i < 123; i++) {
+ codes[String.fromCharCode(i)] = i - 32;
+}
+
+// numbers
+for (let i = 48; i < 58; i++) {
+ codes[i - 48] = i;
+}
+
+// function keys
+for (let i = 1; i < 13; i++) {
+ codes['f' + i] = i + 111;
+}
+
+// numpad keys
+for (let i = 0; i < 10; i++) {
+ codes['numpad ' + i] = i + 96;
+}