character_editor 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  /*
2
- Icon font
2
+ Icon font
3
3
  */
4
4
  @font-face {
5
5
  font-family: 'RedactorFont';
@@ -7,7 +7,7 @@
7
7
  }
8
8
  @font-face {
9
9
  font-family: 'RedactorFont';
10
- src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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AAAAFAAEADAAAAAIAAgAAgAAACDmHv/9//8AAAAg5gD//f///+EaAgADAAEAAAAAAAAAAAABAAH//wAPAAEAAAABAACLSUTLXw889QALBAAAAAAAzwh6egAAAADPCHp6////twQBA7cAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAD/////BAEAAQAAAAAAAAAAAAAAAAAAACEAAAAAAgAAAAQAAAAEAAAABAAAAAQAANsEAAAABAAA2gQAAAAEAAASBAAAkgQA//8EAAAABAAAAAQAAAAEAAEkBAAAAAQAAAAEAABJBAAAAAQAANsEAABKBAAASgQAAJIEAAAABAAAAAQAASUEAABJBAAAhQQAAAAEAAAABAAAAAQAAAAAAFAAACEAAAAAAA4ArgABAAAAAAABABgAAAABAAAAAAACAA4AagABAAAAAAADABgALgABAAAAAAAEABgAeAABAAAAAAAFABYAGAABAAAAAAAGAAwARgABAAAAAAAKACgAkAADAAEECQABABgAAAADAAEECQACAA4AagADAAEECQADABgALgADAAEECQAEABgAeAADAAEECQAFABYAGAADAAEECQAGABgAUgADAAEECQAKACgAkABSAGUAZABhAGMAdABvAHIARgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMAAuADAAUgBlAGQAYQBjAHQAbwByAEYAbwBuAHRSZWRhY3RvckZvbnQAUgBlAGQAYQBjAHQAbwByAEYAbwBuAHQAUgBlAGcAdQBsAGEAcgBSAGUAZABhAGMAdABvAHIARgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff');
10
+ src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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) format('woff');
11
11
  font-weight: normal;
12
12
  font-style: normal;
13
13
  }
@@ -26,7 +26,7 @@
26
26
  background: transparent;
27
27
  }
28
28
  /*
29
- BOX
29
+ BOX
30
30
  */
31
31
  .redactor_box {
32
32
  position: relative;
@@ -41,7 +41,6 @@
41
41
  }
42
42
  .redactor_box textarea {
43
43
  position: relative;
44
- z-index: 1004;
45
44
  display: block;
46
45
  overflow: auto;
47
46
  margin: 0;
@@ -59,8 +58,20 @@
59
58
  .redactor_box textarea:focus {
60
59
  outline: none;
61
60
  }
61
+ .redactor_box,
62
+ .redactor_box textarea {
63
+ z-index: auto !important;
64
+ }
65
+ .redactor_box_fullscreen {
66
+ z-index: 99 !important;
67
+ }
68
+ #redactor_modal_overlay,
69
+ #redactor_modal,
70
+ .redactor_dropdown {
71
+ z-index: 100 !important;
72
+ }
62
73
  /*
63
- AIR
74
+ AIR
64
75
 
65
76
  */
66
77
  body .redactor_air {
@@ -68,18 +79,16 @@ body .redactor_air {
68
79
  z-index: 502;
69
80
  }
70
81
  /*
71
- FULLSCREEN
82
+ FULLSCREEN
72
83
  */
73
84
  body .redactor_box_fullscreen {
74
85
  position: fixed;
75
86
  top: 0;
76
87
  left: 0;
77
- z-index: 49000;
78
- overflow: hidden;
79
88
  width: 100%;
80
89
  }
81
90
  /*
82
- LINK TOOLTIP
91
+ LINK TOOLTIP
83
92
  */
84
93
  .redactor-link-tooltip {
85
94
  position: absolute;
@@ -104,7 +113,7 @@ body .redactor_box_fullscreen {
104
113
  color: #fff;
105
114
  }
106
115
  /*
107
- IMAGE BOX
116
+ IMAGE BOX
108
117
  */
109
118
  #redactor-image-box img {
110
119
  width: 100%;
@@ -125,12 +134,8 @@ body .redactor_box_fullscreen {
125
134
  .redactor_editor:focus {
126
135
  outline: none;
127
136
  }
128
- .redactor_editor .redactor_placeholder {
129
- color: #999 !important;
130
- display: block !important;
131
- }
132
137
  /*
133
- TOOLBAR
138
+ TOOLBAR
134
139
  */
135
140
  .redactor_toolbar {
136
141
  position: relative;
@@ -349,8 +354,11 @@ body .redactor_air .redactor_toolbar {
349
354
  .re-aligncenter:before {
350
355
  content: "\e61e";
351
356
  }
357
+ .re-gallery:before {
358
+ content: "\e61f";
359
+ }
352
360
  /*
353
- Toolbar classes
361
+ Toolbar classes
354
362
  */
355
363
  .redactor_format_blockquote {
356
364
  padding-left: 10px;
@@ -400,7 +408,7 @@ body .redactor_air .redactor_toolbar {
400
408
  font-size: .85em;
401
409
  }
402
410
  /*
403
- Typewriter
411
+ Typewriter
404
412
  */
405
413
  .redactor_editor.redactor-editor-typewriter {
406
414
  background: #f5f5f5 !important;
@@ -441,7 +449,7 @@ body .redactor_air .redactor_toolbar {
441
449
  text-decoration: underline !important;
442
450
  }
443
451
  /*
444
- WYM
452
+ WYM
445
453
  */
446
454
  .redactor_editor.redactor_editor_wym {
447
455
  padding: 10px 7px 0 7px !important;
@@ -466,13 +474,14 @@ body .redactor_air .redactor_toolbar {
466
474
  padding: 10px !important;
467
475
  border: 1px solid #e4e4e4 !important;
468
476
  background-color: #fff !important;
477
+ z-index: 0;
469
478
  }
470
479
  .redactor_editor.redactor_editor_wym blockquote:before {
471
480
  content: '';
472
481
  }
473
482
  .redactor_editor.redactor_editor_wym img {
474
483
  position: relative;
475
- z-index: 2;
484
+ z-index: 1;
476
485
  }
477
486
  .redactor_editor.redactor_editor_wym div {
478
487
  border: 1px dotted #aaa !important;
@@ -492,13 +501,12 @@ body .redactor_air .redactor_toolbar {
492
501
  border: none !important;
493
502
  }
494
503
  /*
495
- DROPDOWN
504
+ DROPDOWN
496
505
  */
497
506
  .redactor_dropdown {
498
507
  position: absolute;
499
508
  top: 28px;
500
509
  left: 0;
501
- z-index: 2004;
502
510
  padding: 10px;
503
511
  width: 200px;
504
512
  background-color: #fff;
@@ -529,13 +537,12 @@ body .redactor_air .redactor_toolbar {
529
537
  text-decoration: none;
530
538
  }
531
539
  /*
532
- MODAL
540
+ MODAL
533
541
  */
534
542
  #redactor_modal_overlay {
535
543
  position: fixed;
536
544
  top: 0;
537
545
  left: 0;
538
- z-index: 50000;
539
546
  margin: auto;
540
547
  width: 100%;
541
548
  height: 100%;
@@ -548,7 +555,6 @@ body .redactor_air .redactor_toolbar {
548
555
  position: fixed;
549
556
  top: 50%;
550
557
  left: 50%;
551
- z-index: 50001;
552
558
  padding: 0;
553
559
  background: #fff;
554
560
  color: #000;
@@ -672,6 +678,9 @@ body .redactor_air .redactor_toolbar {
672
678
  color: #999 !important;
673
679
  text-decoration: none !important;
674
680
  }
681
+ .redactor_modal_btn_hidden {
682
+ display: none;
683
+ }
675
684
  #redactor_modal footer button {
676
685
  position: relative;
677
686
  width: 100%;
@@ -1,6 +1,185 @@
1
+
2
+ .redactor_editor div,
3
+ .redactor_editor p,
4
+ .redactor_editor ul,
5
+ .redactor_editor ol,
6
+ .redactor_editor table,
7
+ .redactor_editor dl,
8
+ .redactor_editor blockquote,
9
+ .redactor_editor pre,
10
+ .redactor_editor h1,
11
+ .redactor_editor h2,
12
+ .redactor_editor h3,
13
+ .redactor_editor h4,
14
+ .redactor_editor h5,
15
+ .redactor_editor h6 {
16
+ font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;
17
+ }
18
+ .redactor_editor code,
19
+ .redactor_editor pre {
20
+ font-family: Menlo, Monaco, monospace, sans-serif;
21
+ }
22
+ .redactor_editor div,
23
+ .redactor_editor p,
24
+ .redactor_editor ul,
25
+ .redactor_editor ol,
26
+ .redactor_editor table,
27
+ .redactor_editor dl,
28
+ .redactor_editor blockquote,
29
+ .redactor_editor pre {
30
+ font-size: 14px;
31
+ line-height: 1.6em;
32
+ }
33
+ .redactor_editor a {
34
+ color: #15c !important;
35
+ text-decoration: underline !important;
36
+ }
37
+ .redactor_editor .redactor_placeholder {
38
+ color: #999 !important;
39
+ display: block !important;
40
+ }
1
41
  /*
2
- BEFORE TOOLBAR
42
+ TYPOGRAPHY
43
+ */
44
+ .redactor_editor object,
45
+ .redactor_editor embed,
46
+ .redactor_editor video,
47
+ .redactor_editor img {
48
+ max-width: 100%;
49
+ width: auto;
50
+ }
51
+ .redactor_editor video,
52
+ .redactor_editor img {
53
+ height: auto;
54
+ }
55
+ .redactor_editor div,
56
+ .redactor_editor p,
57
+ .redactor_editor ul,
58
+ .redactor_editor ol,
59
+ .redactor_editor table,
60
+ .redactor_editor dl,
61
+ .redactor_editor blockquote,
62
+ .redactor_editor pre {
63
+ margin: 0;
64
+ margin-bottom: 10px !important;
65
+ border: none;
66
+ background: none !important;
67
+ box-shadow: none !important;
68
+ }
69
+ .redactor_editor iframe,
70
+ .redactor_editor object,
71
+ .redactor_editor hr {
72
+ margin-bottom: 15px !important;
73
+ }
74
+ .redactor_editor blockquote {
75
+ margin-left: 1.5em !important;
76
+ padding-left: 0 !important;
77
+ color: #777;
78
+ font-style: italic !important;
79
+ }
80
+ .redactor_editor ul,
81
+ .redactor_editor ol {
82
+ padding-left: 2em !important;
83
+ }
84
+ .redactor_editor ul ul,
85
+ .redactor_editor ol ol,
86
+ .redactor_editor ul ol,
87
+ .redactor_editor ol ul {
88
+ margin: 2px !important;
89
+ padding: 0 !important;
90
+ padding-left: 2em !important;
91
+ border: none;
92
+ }
93
+ .redactor_editor dl dt {
94
+ font-weight: bold;
95
+ }
96
+ .redactor_editor dd {
97
+ margin-left: 1em;
98
+ }
99
+ .redactor_editor table {
100
+ border-collapse: collapse;
101
+ font-size: 1em !important;
102
+ }
103
+ .redactor_editor table td {
104
+ padding: 5px !important;
105
+ border: 1px solid #ddd;
106
+ vertical-align: top;
107
+ }
108
+ .redactor_editor table thead td {
109
+ border-bottom: 2px solid #000 !important;
110
+ font-weight: bold !important;
111
+ }
112
+ .redactor_editor code {
113
+ background-color: #d8d7d7 !important;
114
+ }
115
+ .redactor_editor pre {
116
+ overflow: auto;
117
+ padding: 1em !important;
118
+ border: 1px solid #ddd !important;
119
+ border-radius: 3px !important;
120
+ background: #f8f8f8 !important;
121
+ white-space: pre;
122
+ font-size: 90% !important;
123
+ }
124
+ .redactor_editor hr {
125
+ display: block;
126
+ height: 1px;
127
+ border: 0;
128
+ border-top: 1px solid #ccc;
129
+ }
130
+ /*
131
+ HEADERS
3
132
  */
133
+ .redactor_editor h1,
134
+ .redactor_editor h2,
135
+ .redactor_editor h3,
136
+ .redactor_editor h4,
137
+ .redactor_editor h5,
138
+ .redactor_editor h6 {
139
+ margin-top: 0 !important;
140
+ padding: 0 !important;
141
+ background: none;
142
+ color: #000;
143
+ font-weight: bold;
144
+ }
145
+ .redactor_editor h1 {
146
+ font-size: 36px !important;
147
+ line-height: 1.111em !important;
148
+ margin-bottom: .15em !important;
149
+ }
150
+ .redactor_editor h2 {
151
+ font-size: 30px !important;
152
+ line-height: 1.111em !important;
153
+ margin-bottom: .25em !important;
154
+ }
155
+ .redactor_editor h3 {
156
+ font-size: 24px !important;
157
+ line-height: 1.333em !important;
158
+ margin-bottom: .2em !important;
159
+ }
160
+ .redactor_editor h4 {
161
+ font-size: 18px !important;
162
+ line-height: 1.5em !important;
163
+ margin-bottom: .2em !important;
164
+ }
165
+ .redactor_editor h5 {
166
+ font-size: 1em !important;
167
+ line-height: 1.6em !important;
168
+ margin-bottom: .25em !important;
169
+ }
170
+ .redactor_editor h6 {
171
+ font-size: .8em !important;
172
+ line-height: 1.6em !important;
173
+ text-transform: uppercase;
174
+ margin-bottom: .3em !important;
175
+ }
176
+
177
+
178
+
179
+
180
+ /* Previous version
181
+ BEFORE TOOLBAR
182
+ *
4
183
 
5
184
  .redactor_editor div,
6
185
  .redactor_editor p,
@@ -40,7 +219,7 @@
40
219
 
41
220
  /*
42
221
  HEADERS
43
- */
222
+ /
44
223
  .redactor_editor h1,
45
224
  .redactor_editor h2,
46
225
  .redactor_editor h3,
@@ -87,7 +266,7 @@
87
266
 
88
267
  /*
89
268
  TYPOGRAPHY
90
- */
269
+ /
91
270
  .redactor_editor object,
92
271
  .redactor_editor embed,
93
272
  .redactor_editor video,
@@ -173,4 +352,6 @@
173
352
  height: 1px;
174
353
  border: 0;
175
354
  border-top: 1px solid #ccc;
176
- }
355
+ }
356
+
357
+ */
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: character_editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kravets
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-20 00:00:00.000000000 Z
11
+ date: 2014-07-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: alex@slatestudio.com
@@ -33,13 +33,13 @@ files:
33
33
  - lib/character_editor/engine.rb
34
34
  - lib/character_editor/version.rb
35
35
  - vendor/assets/fonts/redactor-font.eot
36
- - vendor/assets/javascripts/keypress.js
36
+ - vendor/assets/javascripts/keypress.coffee
37
37
  - vendor/assets/javascripts/redactor.js
38
38
  - vendor/assets/stylesheets/redactor.css
39
39
  - vendor/assets/stylesheets/redactor_typography.scss
40
40
  homepage: https://github.com/slate-studio/character_editor
41
41
  licenses:
42
- - MIT but not for Redactor.js
42
+ - ''
43
43
  metadata: {}
44
44
  post_install_message:
45
45
  rdoc_options: []
@@ -57,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  version: '0'
58
58
  requirements: []
59
59
  rubyforge_project: nowarning
60
- rubygems_version: 2.2.1
60
+ rubygems_version: 2.2.2
61
61
  signing_key:
62
62
  specification_version: 4
63
63
  summary: Character WYSIWYG editor + Redactor.js
@@ -1,1063 +0,0 @@
1
- // Generated by CoffeeScript 1.6.3
2
- /*
3
- Copyright 2014 David Mauro
4
-
5
- Licensed under the Apache License, Version 2.0 (the "License");
6
- you may not use this file except in compliance with the License.
7
- You may obtain a copy of the License at
8
-
9
- http://www.apache.org/licenses/LICENSE-2.0
10
-
11
- Unless required by applicable law or agreed to in writing, software
12
- distributed under the License is distributed on an "AS IS" BASIS,
13
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- See the License for the specific language governing permissions and
15
- limitations under the License.
16
-
17
- Keypress is a robust keyboard input capturing Javascript utility
18
- focused on input for games.
19
-
20
- version 2.0.1
21
- */
22
-
23
-
24
- /*
25
- Combo options available and their defaults:
26
- keys : [] - An array of the keys pressed together to activate combo.
27
- count : 0 - The number of times a counting combo has been pressed. Reset on release.
28
- is_unordered : false - Unless this is set to true, the keys can be pressed down in any order.
29
- is_counting : false - Makes this a counting combo (see documentation).
30
- is_exclusive : false - This combo will replace other exclusive combos when true.
31
- is_solitary : false - This combo will only fire if ONLY it's keys are pressed down.
32
- is_sequence : false - Rather than a key combo, this is an ordered key sequence.
33
- prevent_default : false - Prevent default behavior for all component key keypresses.
34
- prevent_repeat : false - Prevent the combo from repeating when keydown is held.
35
- on_keydown : null - A function that is called when the combo is pressed.
36
- on_keyup : null - A function that is called when the combo is released.
37
- on_release : null - A function that is called when all keys in the combo are released.
38
- this : undefined - Defines the scope for your callback functions.
39
- */
40
-
41
-
42
- (function() {
43
- var Combo, _change_keycodes_by_browser, _compare_arrays, _compare_arrays_sorted, _convert_key_to_readable, _convert_to_shifted_key, _decide_meta_key, _factory_defaults, _filter_array, _is_array_in_array, _is_array_in_array_sorted, _key_is_valid, _keycode_alternate_names, _keycode_dictionary, _keycode_shifted_keys, _log_error, _metakey, _modifier_event_mapping, _modifier_keys, _validate_combo,
44
- __hasProp = {}.hasOwnProperty,
45
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
46
-
47
- _factory_defaults = {
48
- is_unordered: false,
49
- is_counting: false,
50
- is_exclusive: false,
51
- is_solitary: false,
52
- prevent_default: false,
53
- prevent_repeat: false
54
- };
55
-
56
- _modifier_keys = ["meta", "alt", "option", "ctrl", "shift", "cmd"];
57
-
58
- _metakey = "ctrl";
59
-
60
- window.keypress = {};
61
-
62
- keypress.debug = false;
63
-
64
- Combo = (function() {
65
- function Combo(dictionary) {
66
- var property, value;
67
- for (property in dictionary) {
68
- if (!__hasProp.call(dictionary, property)) continue;
69
- value = dictionary[property];
70
- if (value !== false) {
71
- this[property] = value;
72
- }
73
- }
74
- this.keys = this.keys || [];
75
- this.count = this.count || 0;
76
- }
77
-
78
- Combo.prototype.allows_key_repeat = function() {
79
- return !this.prevent_repeat && typeof this.on_keydown === "function";
80
- };
81
-
82
- Combo.prototype.reset = function() {
83
- this.count = 0;
84
- return this.keyup_fired = null;
85
- };
86
-
87
- return Combo;
88
-
89
- })();
90
-
91
- keypress.Listener = (function() {
92
- function Listener(element, defaults) {
93
- var attach_handler, property, value,
94
- _this = this;
95
- this.should_suppress_event_defaults = false;
96
- this.should_force_event_defaults = false;
97
- this.sequence_delay = 800;
98
- this._registered_combos = [];
99
- this._keys_down = [];
100
- this._active_combos = [];
101
- this._sequence = [];
102
- this._sequence_timer = null;
103
- this._prevent_capture = false;
104
- this._defaults = defaults || {};
105
- for (property in _factory_defaults) {
106
- if (!__hasProp.call(_factory_defaults, property)) continue;
107
- value = _factory_defaults[property];
108
- this._defaults[property] = this._defaults[property] || value;
109
- }
110
- element = element || document.body;
111
- attach_handler = function(target, event, handler) {
112
- if (target.addEventListener) {
113
- return target.addEventListener(event, handler);
114
- } else if (target.attachEvent) {
115
- return target.attachEvent("on" + event, handler);
116
- }
117
- };
118
- attach_handler(element, "keydown", function(e) {
119
- e = e || window.event;
120
- _this._receive_input(e, true);
121
- return _this._bug_catcher(e);
122
- });
123
- attach_handler(element, "keyup", function(e) {
124
- e = e || window.event;
125
- return _this._receive_input(e, false);
126
- });
127
- attach_handler(window, "blur", function() {
128
- var key, _i, _len, _ref;
129
- _ref = _this._keys_down;
130
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
131
- key = _ref[_i];
132
- _this._key_up(key, {});
133
- }
134
- return _this._keys_down = [];
135
- });
136
- }
137
-
138
- Listener.prototype._bug_catcher = function(e) {
139
- var _ref;
140
- if (_metakey === "cmd" && __indexOf.call(this._keys_down, "cmd") >= 0 && ((_ref = _convert_key_to_readable(e.keyCode)) !== "cmd" && _ref !== "shift" && _ref !== "alt" && _ref !== "caps" && _ref !== "tab")) {
141
- return this._receive_input(e, false);
142
- }
143
- };
144
-
145
- Listener.prototype._cmd_bug_check = function(combo_keys) {
146
- if (_metakey === "cmd" && __indexOf.call(this._keys_down, "cmd") >= 0 && __indexOf.call(combo_keys, "cmd") < 0) {
147
- return false;
148
- }
149
- return true;
150
- };
151
-
152
- Listener.prototype._prevent_default = function(e, should_prevent) {
153
- if ((should_prevent || this.should_suppress_event_defaults) && !this.should_force_event_defaults) {
154
- if (e.preventDefault) {
155
- e.preventDefault();
156
- } else {
157
- e.returnValue = false;
158
- }
159
- if (e.stopPropagation) {
160
- return e.stopPropagation();
161
- }
162
- }
163
- };
164
-
165
- Listener.prototype._get_active_combos = function(key) {
166
- var active_combos, keys_down,
167
- _this = this;
168
- active_combos = [];
169
- keys_down = _filter_array(this._keys_down, function(down_key) {
170
- return down_key !== key;
171
- });
172
- keys_down.push(key);
173
- this._match_combo_arrays(keys_down, function(match) {
174
- if (_this._cmd_bug_check(match.keys)) {
175
- return active_combos.push(match);
176
- }
177
- });
178
- this._fuzzy_match_combo_arrays(keys_down, function(match) {
179
- if (__indexOf.call(active_combos, match) >= 0) {
180
- return;
181
- }
182
- if (!(match.is_solitary || !_this._cmd_bug_check(match.keys))) {
183
- return active_combos.push(match);
184
- }
185
- });
186
- return active_combos;
187
- };
188
-
189
- Listener.prototype._get_potential_combos = function(key) {
190
- var combo, potentials, _i, _len, _ref;
191
- potentials = [];
192
- _ref = this._registered_combos;
193
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
194
- combo = _ref[_i];
195
- if (combo.is_sequence) {
196
- continue;
197
- }
198
- if (__indexOf.call(combo.keys, key) >= 0 && this._cmd_bug_check(combo.keys)) {
199
- potentials.push(combo);
200
- }
201
- }
202
- return potentials;
203
- };
204
-
205
- Listener.prototype._add_to_active_combos = function(combo) {
206
- var active_combo, active_key, active_keys, already_replaced, combo_key, i, should_prepend, should_replace, _i, _j, _k, _len, _len1, _ref, _ref1;
207
- should_replace = false;
208
- should_prepend = true;
209
- already_replaced = false;
210
- if (__indexOf.call(this._active_combos, combo) >= 0) {
211
- return true;
212
- } else if (this._active_combos.length) {
213
- for (i = _i = 0, _ref = this._active_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
214
- active_combo = this._active_combos[i];
215
- if (!(active_combo && active_combo.is_exclusive && combo.is_exclusive)) {
216
- continue;
217
- }
218
- active_keys = active_combo.keys;
219
- if (!should_replace) {
220
- for (_j = 0, _len = active_keys.length; _j < _len; _j++) {
221
- active_key = active_keys[_j];
222
- should_replace = true;
223
- if (__indexOf.call(combo.keys, active_key) < 0) {
224
- should_replace = false;
225
- break;
226
- }
227
- }
228
- }
229
- if (should_prepend && !should_replace) {
230
- _ref1 = combo.keys;
231
- for (_k = 0, _len1 = _ref1.length; _k < _len1; _k++) {
232
- combo_key = _ref1[_k];
233
- should_prepend = false;
234
- if (__indexOf.call(active_keys, combo_key) < 0) {
235
- should_prepend = true;
236
- break;
237
- }
238
- }
239
- }
240
- if (should_replace) {
241
- if (already_replaced) {
242
- active_combo = this._active_combos.splice(i, 1)[0];
243
- if (active_combo != null) {
244
- active_combo.reset();
245
- }
246
- } else {
247
- active_combo = this._active_combos.splice(i, 1, combo)[0];
248
- if (active_combo != null) {
249
- active_combo.reset();
250
- }
251
- already_replaced = true;
252
- }
253
- should_prepend = false;
254
- }
255
- }
256
- }
257
- if (should_prepend) {
258
- this._active_combos.unshift(combo);
259
- }
260
- return should_replace || should_prepend;
261
- };
262
-
263
- Listener.prototype._remove_from_active_combos = function(combo) {
264
- var active_combo, i, _i, _ref;
265
- for (i = _i = 0, _ref = this._active_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
266
- active_combo = this._active_combos[i];
267
- if (active_combo === combo) {
268
- combo = this._active_combos.splice(i, 1)[0];
269
- combo.reset();
270
- break;
271
- }
272
- }
273
- };
274
-
275
- Listener.prototype._get_possible_sequences = function() {
276
- var combo, i, j, match, matches, sequence, _i, _j, _k, _len, _ref, _ref1, _ref2;
277
- matches = [];
278
- _ref = this._registered_combos;
279
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
280
- combo = _ref[_i];
281
- for (j = _j = 1, _ref1 = this._sequence.length; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 1 <= _ref1 ? ++_j : --_j) {
282
- sequence = this._sequence.slice(-j);
283
- if (!combo.is_sequence) {
284
- continue;
285
- }
286
- if (__indexOf.call(combo.keys, "shift") < 0) {
287
- sequence = _filter_array(sequence, function(key) {
288
- return key !== "shift";
289
- });
290
- if (!sequence.length) {
291
- continue;
292
- }
293
- }
294
- for (i = _k = 0, _ref2 = sequence.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
295
- if (combo.keys[i] === sequence[i]) {
296
- match = true;
297
- } else {
298
- match = false;
299
- break;
300
- }
301
- }
302
- if (match) {
303
- matches.push(combo);
304
- }
305
- }
306
- }
307
- return matches;
308
- };
309
-
310
- Listener.prototype._add_key_to_sequence = function(key, e) {
311
- var combo, sequence_combos, _i, _len;
312
- this._sequence.push(key);
313
- sequence_combos = this._get_possible_sequences();
314
- if (sequence_combos.length) {
315
- for (_i = 0, _len = sequence_combos.length; _i < _len; _i++) {
316
- combo = sequence_combos[_i];
317
- this._prevent_default(e, combo.prevent_default);
318
- }
319
- if (this._sequence_timer) {
320
- clearTimeout(this._sequence_timer);
321
- }
322
- if (this.sequence_delay > -1) {
323
- this._sequence_timer = setTimeout(function() {
324
- return this._sequence = [];
325
- }, this.sequence_delay);
326
- }
327
- } else {
328
- this._sequence = [];
329
- }
330
- };
331
-
332
- Listener.prototype._get_sequence = function(key) {
333
- var combo, i, j, match, seq_key, sequence, _i, _j, _k, _len, _ref, _ref1, _ref2;
334
- _ref = this._registered_combos;
335
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
336
- combo = _ref[_i];
337
- if (!combo.is_sequence) {
338
- continue;
339
- }
340
- for (j = _j = 1, _ref1 = this._sequence.length; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 1 <= _ref1 ? ++_j : --_j) {
341
- sequence = (_filter_array(this._sequence, function(seq_key) {
342
- if (__indexOf.call(combo.keys, "shift") >= 0) {
343
- return true;
344
- }
345
- return seq_key !== "shift";
346
- })).slice(-j);
347
- if (combo.keys.length !== sequence.length) {
348
- continue;
349
- }
350
- for (i = _k = 0, _ref2 = sequence.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
351
- seq_key = sequence[i];
352
- if (__indexOf.call(combo.keys, "shift") < 0 ? seq_key === "shift" : void 0) {
353
- continue;
354
- }
355
- if (key === "shift" && __indexOf.call(combo.keys, "shift") < 0) {
356
- continue;
357
- }
358
- if (combo.keys[i] === seq_key) {
359
- match = true;
360
- } else {
361
- match = false;
362
- break;
363
- }
364
- }
365
- }
366
- if (match) {
367
- return combo;
368
- }
369
- }
370
- return false;
371
- };
372
-
373
- Listener.prototype._receive_input = function(e, is_keydown) {
374
- var key;
375
- if (this._prevent_capture) {
376
- if (this._keys_down.length) {
377
- this._keys_down = [];
378
- }
379
- return;
380
- }
381
- key = _convert_key_to_readable(e.keyCode);
382
- if (!is_keydown && !this._keys_down.length && (key === "alt" || key === _metakey)) {
383
- return;
384
- }
385
- if (!key) {
386
- return;
387
- }
388
- if (is_keydown) {
389
- return this._key_down(key, e);
390
- } else {
391
- return this._key_up(key, e);
392
- }
393
- };
394
-
395
- Listener.prototype._fire = function(event, combo, key_event, is_autorepeat) {
396
- if (typeof combo["on_" + event] === "function") {
397
- this._prevent_default(key_event, combo["on_" + event].call(combo["this"], key_event, combo.count, is_autorepeat) !== true);
398
- }
399
- if (event === "release") {
400
- combo.count = 0;
401
- }
402
- if (event === "keyup") {
403
- return combo.keyup_fired = true;
404
- }
405
- };
406
-
407
- Listener.prototype._match_combo_arrays = function(potential_match, match_handler) {
408
- var source_combo, _i, _len, _ref;
409
- _ref = this._registered_combos;
410
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
411
- source_combo = _ref[_i];
412
- if ((!source_combo.is_unordered && _compare_arrays_sorted(potential_match, source_combo.keys)) || (source_combo.is_unordered && _compare_arrays(potential_match, source_combo.keys))) {
413
- match_handler(source_combo);
414
- }
415
- }
416
- };
417
-
418
- Listener.prototype._fuzzy_match_combo_arrays = function(potential_match, match_handler) {
419
- var source_combo, _i, _len, _ref;
420
- _ref = this._registered_combos;
421
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
422
- source_combo = _ref[_i];
423
- if ((!source_combo.is_unordered && _is_array_in_array_sorted(source_combo.keys, potential_match)) || (source_combo.is_unordered && _is_array_in_array(source_combo.keys, potential_match))) {
424
- match_handler(source_combo);
425
- }
426
- }
427
- };
428
-
429
- Listener.prototype._keys_remain = function(combo) {
430
- var key, keys_remain, _i, _len, _ref;
431
- _ref = combo.keys;
432
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
433
- key = _ref[_i];
434
- if (__indexOf.call(this._keys_down, key) >= 0) {
435
- keys_remain = true;
436
- break;
437
- }
438
- }
439
- return keys_remain;
440
- };
441
-
442
- Listener.prototype._key_down = function(key, e) {
443
- var combo, combos, event_mod, i, mod, potential, potential_combos, sequence_combo, shifted_key, _i, _j, _k, _len, _len1, _ref;
444
- shifted_key = _convert_to_shifted_key(key, e);
445
- if (shifted_key) {
446
- key = shifted_key;
447
- }
448
- this._add_key_to_sequence(key, e);
449
- sequence_combo = this._get_sequence(key);
450
- if (sequence_combo) {
451
- this._fire("keydown", sequence_combo, e);
452
- }
453
- for (mod in _modifier_event_mapping) {
454
- event_mod = _modifier_event_mapping[mod];
455
- if (!e[event_mod]) {
456
- continue;
457
- }
458
- if (mod === key || __indexOf.call(this._keys_down, mod) >= 0) {
459
- continue;
460
- }
461
- this._keys_down.push(mod);
462
- }
463
- for (mod in _modifier_event_mapping) {
464
- event_mod = _modifier_event_mapping[mod];
465
- if (mod === key) {
466
- continue;
467
- }
468
- if (__indexOf.call(this._keys_down, mod) >= 0 && !e[event_mod]) {
469
- if (mod === "cmd" && _metakey !== "cmd") {
470
- continue;
471
- }
472
- for (i = _i = 0, _ref = this._keys_down.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
473
- if (this._keys_down[i] === mod) {
474
- this._keys_down.splice(i, 1);
475
- }
476
- }
477
- }
478
- }
479
- combos = this._get_active_combos(key);
480
- potential_combos = this._get_potential_combos(key);
481
- for (_j = 0, _len = combos.length; _j < _len; _j++) {
482
- combo = combos[_j];
483
- this._handle_combo_down(combo, potential_combos, key, e);
484
- }
485
- if (potential_combos.length) {
486
- for (_k = 0, _len1 = potential_combos.length; _k < _len1; _k++) {
487
- potential = potential_combos[_k];
488
- this._prevent_default(e, potential.prevent_default);
489
- }
490
- }
491
- if (__indexOf.call(this._keys_down, key) < 0) {
492
- this._keys_down.push(key);
493
- }
494
- };
495
-
496
- Listener.prototype._handle_combo_down = function(combo, potential_combos, key, e) {
497
- var is_autorepeat, is_other_exclusive, potential_combo, result, _i, _len;
498
- if (__indexOf.call(combo.keys, key) < 0) {
499
- return false;
500
- }
501
- this._prevent_default(e, combo && combo.prevent_default);
502
- is_autorepeat = false;
503
- if (__indexOf.call(this._keys_down, key) >= 0) {
504
- is_autorepeat = true;
505
- if (!combo.allows_key_repeat()) {
506
- return false;
507
- }
508
- }
509
- result = this._add_to_active_combos(combo, key);
510
- combo.keyup_fired = false;
511
- is_other_exclusive = false;
512
- if (combo.is_exclusive) {
513
- for (_i = 0, _len = potential_combos.length; _i < _len; _i++) {
514
- potential_combo = potential_combos[_i];
515
- if (potential_combo.is_exclusive && potential_combo.keys.length > combo.keys.length) {
516
- is_other_exclusive = true;
517
- break;
518
- }
519
- }
520
- }
521
- if (!is_other_exclusive) {
522
- if (combo.is_counting && typeof combo.on_keydown === "function") {
523
- combo.count += 1;
524
- }
525
- if (result) {
526
- return this._fire("keydown", combo, e, is_autorepeat);
527
- }
528
- }
529
- };
530
-
531
- Listener.prototype._key_up = function(key, e) {
532
- var active_combo, active_combos_length, combo, combos, i, sequence_combo, shifted_key, unshifted_key, _i, _j, _k, _l, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
533
- unshifted_key = key;
534
- shifted_key = _convert_to_shifted_key(key, e);
535
- if (shifted_key) {
536
- key = shifted_key;
537
- }
538
- shifted_key = _keycode_shifted_keys[unshifted_key];
539
- if (e.shiftKey) {
540
- if (!(shifted_key && __indexOf.call(this._keys_down, shifted_key) >= 0)) {
541
- key = unshifted_key;
542
- }
543
- } else {
544
- if (!(unshifted_key && __indexOf.call(this._keys_down, unshifted_key) >= 0)) {
545
- key = shifted_key;
546
- }
547
- }
548
- sequence_combo = this._get_sequence(key);
549
- if (sequence_combo) {
550
- this._fire("keyup", sequence_combo, e);
551
- }
552
- if (__indexOf.call(this._keys_down, key) < 0) {
553
- return false;
554
- }
555
- for (i = _i = 0, _ref = this._keys_down.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
556
- if ((_ref1 = this._keys_down[i]) === key || _ref1 === shifted_key || _ref1 === unshifted_key) {
557
- this._keys_down.splice(i, 1);
558
- break;
559
- }
560
- }
561
- active_combos_length = this._active_combos.length;
562
- combos = [];
563
- _ref2 = this._active_combos;
564
- for (_j = 0, _len = _ref2.length; _j < _len; _j++) {
565
- active_combo = _ref2[_j];
566
- if (__indexOf.call(active_combo.keys, key) >= 0) {
567
- combos.push(active_combo);
568
- }
569
- }
570
- for (_k = 0, _len1 = combos.length; _k < _len1; _k++) {
571
- combo = combos[_k];
572
- this._handle_combo_up(combo, e, key);
573
- }
574
- if (active_combos_length > 1) {
575
- _ref3 = this._active_combos;
576
- for (_l = 0, _len2 = _ref3.length; _l < _len2; _l++) {
577
- active_combo = _ref3[_l];
578
- if (active_combo === void 0 || __indexOf.call(combos, active_combo) >= 0) {
579
- continue;
580
- }
581
- if (!this._keys_remain(active_combo)) {
582
- this._remove_from_active_combos(active_combo);
583
- }
584
- }
585
- }
586
- };
587
-
588
- Listener.prototype._handle_combo_up = function(combo, e, key) {
589
- var keys_down, keys_remaining;
590
- this._prevent_default(e, combo && combo.prevent_default);
591
- keys_remaining = this._keys_remain(combo);
592
- if (!combo.keyup_fired) {
593
- keys_down = this._keys_down.slice();
594
- keys_down.push(key);
595
- if (!combo.is_solitary || _compare_arrays(keys_down, combo.keys)) {
596
- this._fire("keyup", combo, e);
597
- if (combo.is_counting && typeof combo.on_keyup === "function" && typeof combo.on_keydown !== "function") {
598
- combo.count += 1;
599
- }
600
- }
601
- }
602
- if (!keys_remaining) {
603
- this._fire("release", combo, e);
604
- this._remove_from_active_combos(combo);
605
- }
606
- };
607
-
608
- Listener.prototype.simple_combo = function(keys, callback) {
609
- return this.register_combo({
610
- keys: keys,
611
- on_keydown: callback
612
- });
613
- };
614
-
615
- Listener.prototype.counting_combo = function(keys, count_callback) {
616
- return this.register_combo({
617
- keys: keys,
618
- is_counting: true,
619
- is_unordered: false,
620
- on_keydown: count_callback
621
- });
622
- };
623
-
624
- Listener.prototype.sequence_combo = function(keys, callback) {
625
- return this.register_combo({
626
- keys: keys,
627
- on_keydown: callback,
628
- is_sequence: true
629
- });
630
- };
631
-
632
- Listener.prototype.register_combo = function(combo_dictionary) {
633
- var combo, property, value, _ref;
634
- if (typeof combo_dictionary["keys"] === "string") {
635
- combo_dictionary["keys"] = combo_dictionary["keys"].split(" ");
636
- }
637
- _ref = this._defaults;
638
- for (property in _ref) {
639
- if (!__hasProp.call(_ref, property)) continue;
640
- value = _ref[property];
641
- if (combo_dictionary[property] === void 0) {
642
- combo_dictionary[property] = value;
643
- }
644
- }
645
- combo = new Combo(combo_dictionary);
646
- if (_validate_combo(combo)) {
647
- this._registered_combos.push(combo);
648
- return true;
649
- }
650
- };
651
-
652
- Listener.prototype.register_many = function(combo_array) {
653
- var combo, _i, _len, _results;
654
- _results = [];
655
- for (_i = 0, _len = combo_array.length; _i < _len; _i++) {
656
- combo = combo_array[_i];
657
- _results.push(this.register_combo(combo));
658
- }
659
- return _results;
660
- };
661
-
662
- Listener.prototype.unregister_combo = function(keys_or_combo) {
663
- var combo, unregister_combo, _i, _len, _ref,
664
- _this = this;
665
- if (!keys_or_combo) {
666
- return false;
667
- }
668
- unregister_combo = function(combo) {
669
- var i, _i, _ref, _results;
670
- _results = [];
671
- for (i = _i = 0, _ref = _this._registered_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
672
- if (combo === _this._registered_combos[i]) {
673
- _this._registered_combos.splice(i, 1);
674
- break;
675
- } else {
676
- _results.push(void 0);
677
- }
678
- }
679
- return _results;
680
- };
681
- if (keys_or_combo.keys) {
682
- return unregister_combo(keys_or_combo);
683
- } else {
684
- _ref = this._registered_combos;
685
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
686
- combo = _ref[_i];
687
- if (!combo) {
688
- continue;
689
- }
690
- }
691
- if (typeof keys_or_combo === "string") {
692
- keys_or_combo = keys_or_combo.split(" ");
693
- }
694
- if ((combo.is_unordered && _compare_arrays(keys_or_combo, combo.keys)) || (!combo.is_unordered && _compare_arrays_sorted(keys_or_combo, combo.keys))) {
695
- return unregister_combo(combo);
696
- }
697
- }
698
- };
699
-
700
- Listener.prototype.unregister_many = function(combo_array) {
701
- var combo, _i, _len, _results;
702
- _results = [];
703
- for (_i = 0, _len = combo_array.length; _i < _len; _i++) {
704
- combo = combo_array[_i];
705
- _results.push(this.unregister_combo(combo));
706
- }
707
- return _results;
708
- };
709
-
710
- Listener.prototype.get_registered_combos = function() {
711
- return this._registered_combos;
712
- };
713
-
714
- Listener.prototype.reset = function() {
715
- return this._registered_combos = [];
716
- };
717
-
718
- Listener.prototype.listen = function() {
719
- return this._prevent_capture = false;
720
- };
721
-
722
- Listener.prototype.stop_listening = function() {
723
- return this._prevent_capture = true;
724
- };
725
-
726
- Listener.prototype.get_meta_key = function() {
727
- return _metakey;
728
- };
729
-
730
- return Listener;
731
-
732
- })();
733
-
734
- _decide_meta_key = function() {
735
- if (navigator.userAgent.indexOf("Mac OS X") !== -1) {
736
- _metakey = "cmd";
737
- }
738
- };
739
-
740
- _change_keycodes_by_browser = function() {
741
- if (navigator.userAgent.indexOf("Opera") !== -1) {
742
- _keycode_dictionary["17"] = "cmd";
743
- }
744
- };
745
-
746
- _convert_key_to_readable = function(k) {
747
- return _keycode_dictionary[k];
748
- };
749
-
750
- _filter_array = function(array, callback) {
751
- var element;
752
- if (array.filter) {
753
- return array.filter(callback);
754
- } else {
755
- return (function() {
756
- var _i, _len, _results;
757
- _results = [];
758
- for (_i = 0, _len = array.length; _i < _len; _i++) {
759
- element = array[_i];
760
- if (callback(element)) {
761
- _results.push(element);
762
- }
763
- }
764
- return _results;
765
- })();
766
- }
767
- };
768
-
769
- _compare_arrays = function(a1, a2) {
770
- var item, _i, _len;
771
- if (a1.length !== a2.length) {
772
- return false;
773
- }
774
- for (_i = 0, _len = a1.length; _i < _len; _i++) {
775
- item = a1[_i];
776
- if (__indexOf.call(a2, item) >= 0) {
777
- continue;
778
- }
779
- return false;
780
- }
781
- return true;
782
- };
783
-
784
- _compare_arrays_sorted = function(a1, a2) {
785
- var i, _i, _ref;
786
- if (a1.length !== a2.length) {
787
- return false;
788
- }
789
- for (i = _i = 0, _ref = a1.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
790
- if (a1[i] !== a2[i]) {
791
- return false;
792
- }
793
- }
794
- return true;
795
- };
796
-
797
- _is_array_in_array = function(a1, a2) {
798
- var item, _i, _len;
799
- for (_i = 0, _len = a1.length; _i < _len; _i++) {
800
- item = a1[_i];
801
- if (__indexOf.call(a2, item) < 0) {
802
- return false;
803
- }
804
- }
805
- return true;
806
- };
807
-
808
- _is_array_in_array_sorted = function(a1, a2) {
809
- var index, item, prev, _i, _len;
810
- prev = 0;
811
- for (_i = 0, _len = a1.length; _i < _len; _i++) {
812
- item = a1[_i];
813
- index = a2.indexOf(item);
814
- if (index >= prev) {
815
- prev = index;
816
- } else {
817
- return false;
818
- }
819
- }
820
- return true;
821
- };
822
-
823
- _log_error = function() {
824
- if (keypress.debug) {
825
- return console.log.apply(console, arguments);
826
- }
827
- };
828
-
829
- _key_is_valid = function(key) {
830
- var valid, valid_key, _;
831
- valid = false;
832
- for (_ in _keycode_dictionary) {
833
- valid_key = _keycode_dictionary[_];
834
- if (key === valid_key) {
835
- valid = true;
836
- break;
837
- }
838
- }
839
- if (!valid) {
840
- for (_ in _keycode_shifted_keys) {
841
- valid_key = _keycode_shifted_keys[_];
842
- if (key === valid_key) {
843
- valid = true;
844
- break;
845
- }
846
- }
847
- }
848
- return valid;
849
- };
850
-
851
- _validate_combo = function(combo) {
852
- var alt_name, i, key, mod_key, non_modifier_keys, property, validated, value, _i, _j, _k, _len, _len1, _ref, _ref1;
853
- validated = true;
854
- if (!combo.keys.length) {
855
- _log_error("You're trying to bind a combo with no keys:", combo);
856
- }
857
- for (i = _i = 0, _ref = combo.keys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
858
- key = combo.keys[i];
859
- alt_name = _keycode_alternate_names[key];
860
- if (alt_name) {
861
- key = combo.keys[i] = alt_name;
862
- }
863
- if (key === "meta") {
864
- combo.keys.splice(i, 1, _metakey);
865
- }
866
- if (key === "cmd") {
867
- _log_error("Warning: use the \"meta\" key rather than \"cmd\" for Windows compatibility");
868
- }
869
- }
870
- _ref1 = combo.keys;
871
- for (_j = 0, _len = _ref1.length; _j < _len; _j++) {
872
- key = _ref1[_j];
873
- if (!_key_is_valid(key)) {
874
- _log_error("Do not recognize the key \"" + key + "\"");
875
- validated = false;
876
- }
877
- }
878
- if (__indexOf.call(combo.keys, "meta") >= 0 || __indexOf.call(combo.keys, "cmd") >= 0) {
879
- non_modifier_keys = combo.keys.slice();
880
- for (_k = 0, _len1 = _modifier_keys.length; _k < _len1; _k++) {
881
- mod_key = _modifier_keys[_k];
882
- if ((i = non_modifier_keys.indexOf(mod_key)) > -1) {
883
- non_modifier_keys.splice(i, 1);
884
- }
885
- }
886
- if (non_modifier_keys.length > 1) {
887
- _log_error("META and CMD key combos cannot have more than 1 non-modifier keys", combo, non_modifier_keys);
888
- validated = false;
889
- }
890
- }
891
- for (property in combo) {
892
- value = combo[property];
893
- if (_factory_defaults[property] === "undefined") {
894
- _log_error("The property " + property + " is not a valid combo property. Your combo has still been registered.");
895
- }
896
- }
897
- return validated;
898
- };
899
-
900
- _convert_to_shifted_key = function(key, e) {
901
- var k;
902
- if (!e.shiftKey) {
903
- return false;
904
- }
905
- k = _keycode_shifted_keys[key];
906
- if (k != null) {
907
- return k;
908
- }
909
- return false;
910
- };
911
-
912
- _modifier_event_mapping = {
913
- "cmd": "metaKey",
914
- "ctrl": "ctrlKey",
915
- "shift": "shiftKey",
916
- "alt": "altKey"
917
- };
918
-
919
- _keycode_alternate_names = {
920
- "escape": "esc",
921
- "control": "ctrl",
922
- "command": "cmd",
923
- "break": "pause",
924
- "windows": "cmd",
925
- "option": "alt",
926
- "caps_lock": "caps",
927
- "apostrophe": "\'",
928
- "semicolon": ";",
929
- "tilde": "~",
930
- "accent": "`",
931
- "scroll_lock": "scroll",
932
- "num_lock": "num"
933
- };
934
-
935
- _keycode_shifted_keys = {
936
- "/": "?",
937
- ".": ">",
938
- ",": "<",
939
- "\'": "\"",
940
- ";": ":",
941
- "[": "{",
942
- "]": "}",
943
- "\\": "|",
944
- "`": "~",
945
- "=": "+",
946
- "-": "_",
947
- "1": "!",
948
- "2": "@",
949
- "3": "#",
950
- "4": "$",
951
- "5": "%",
952
- "6": "^",
953
- "7": "&",
954
- "8": "*",
955
- "9": "(",
956
- "0": ")"
957
- };
958
-
959
- _keycode_dictionary = {
960
- 0: "\\",
961
- 8: "backspace",
962
- 9: "tab",
963
- 12: "num",
964
- 13: "enter",
965
- 16: "shift",
966
- 17: "ctrl",
967
- 18: "alt",
968
- 19: "pause",
969
- 20: "caps",
970
- 27: "esc",
971
- 32: "space",
972
- 33: "pageup",
973
- 34: "pagedown",
974
- 35: "end",
975
- 36: "home",
976
- 37: "left",
977
- 38: "up",
978
- 39: "right",
979
- 40: "down",
980
- 44: "print",
981
- 45: "insert",
982
- 46: "delete",
983
- 48: "0",
984
- 49: "1",
985
- 50: "2",
986
- 51: "3",
987
- 52: "4",
988
- 53: "5",
989
- 54: "6",
990
- 55: "7",
991
- 56: "8",
992
- 57: "9",
993
- 65: "a",
994
- 66: "b",
995
- 67: "c",
996
- 68: "d",
997
- 69: "e",
998
- 70: "f",
999
- 71: "g",
1000
- 72: "h",
1001
- 73: "i",
1002
- 74: "j",
1003
- 75: "k",
1004
- 76: "l",
1005
- 77: "m",
1006
- 78: "n",
1007
- 79: "o",
1008
- 80: "p",
1009
- 81: "q",
1010
- 82: "r",
1011
- 83: "s",
1012
- 84: "t",
1013
- 85: "u",
1014
- 86: "v",
1015
- 87: "w",
1016
- 88: "x",
1017
- 89: "y",
1018
- 90: "z",
1019
- 91: "cmd",
1020
- 92: "cmd",
1021
- 93: "cmd",
1022
- 96: "num_0",
1023
- 97: "num_1",
1024
- 98: "num_2",
1025
- 99: "num_3",
1026
- 100: "num_4",
1027
- 101: "num_5",
1028
- 102: "num_6",
1029
- 103: "num_7",
1030
- 104: "num_8",
1031
- 105: "num_9",
1032
- 106: "num_multiply",
1033
- 107: "num_add",
1034
- 108: "num_enter",
1035
- 109: "num_subtract",
1036
- 110: "num_decimal",
1037
- 111: "num_divide",
1038
- 124: "print",
1039
- 144: "num",
1040
- 145: "scroll",
1041
- 186: ";",
1042
- 187: "=",
1043
- 188: ",",
1044
- 189: "-",
1045
- 190: ".",
1046
- 191: "/",
1047
- 192: "`",
1048
- 219: "[",
1049
- 220: "\\",
1050
- 221: "]",
1051
- 222: "\'",
1052
- 223: "`",
1053
- 224: "cmd",
1054
- 225: "alt",
1055
- 57392: "ctrl",
1056
- 63289: "num"
1057
- };
1058
-
1059
- _decide_meta_key();
1060
-
1061
- _change_keycodes_by_browser();
1062
-
1063
- }).call(this);