OLD | NEW |
1 <!-- | 1 <!-- |
2 -- Copyright 2013 The Chromium Authors. All rights reserved. | 2 -- Copyright 2013 The Chromium Authors. All rights reserved. |
3 -- Use of this source code is governed by a BSD-style license that can be | 3 -- Use of this source code is governed by a BSD-style license that can be |
4 -- found in the LICENSE file. | 4 -- found in the LICENSE file. |
5 --> | 5 --> |
6 | 6 |
7 <polymer-element name="kb-keyboard" on-key-over="keyOver" on-key-up="keyUp" | 7 <polymer-element name="kb-keyboard" on-key-over="keyOver" on-key-up="keyUp" |
8 on-key-down="keyDown" on-key-longpress="keyLongpress" on-pointerup="up" | 8 on-key-down="keyDown" on-key-longpress="keyLongpress" on-pointerup="up" |
9 on-pointerdown="down" on-enable-sel="enableSel" | 9 on-pointerdown="down" on-enable-sel="enableSel" |
10 on-enable-dbl="enableDbl" attributes="keyset layout rows"> | 10 on-enable-dbl="enableDbl" attributes="keyset layout rows"> |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 lastPressedKey: null, | 176 lastPressedKey: null, |
177 voiceInput_: null, | 177 voiceInput_: null, |
178 dblDetail_: null, | 178 dblDetail_: null, |
179 dblTimer_: null, | 179 dblTimer_: null, |
180 swipeHandler: null, | 180 swipeHandler: null, |
181 | 181 |
182 /** | 182 /** |
183 * Handles the state of the shift key. | 183 * Handles the state of the shift key. |
184 */ | 184 */ |
185 keysetChanged: function() { | 185 keysetChanged: function() { |
186 // TODO (rsadam): Generalize to avoid the need to hardcode upper. Add | 186 var keysetId = '#' + this.layout + '-' + this.keyset; |
187 // state attribute to shift key. | 187 var keyset = this.querySelector(keysetId); |
188 if (this.keyset == 'upper') { | 188 |
189 // Deals with the edge case where caps was triggered by a long press. | 189 // Unlocks the keyboard if the current keyset is not lockable. |
190 // Do not want to highlight the shift key in this case. | 190 if (!keyset.getAttribute('lockable')) |
191 if (!this.classList.contains('caps')) | 191 this.classList.remove('locked'); |
192 this.classList.add('highlight'); | 192 |
193 } else { | |
194 this.classList.remove('highlight'); | |
195 this.classList.remove('caps'); | |
196 } | |
197 }, | 193 }, |
198 | 194 |
199 ready: function() { | 195 ready: function() { |
200 this.voiceInput_ = new VoiceInput(this); | 196 this.voiceInput_ = new VoiceInput(this); |
201 this.swipeHandler = this.onSwipeUpdate.bind(this); | 197 this.swipeHandler = this.onSwipeUpdate.bind(this); |
202 }, | 198 }, |
203 | 199 |
204 /** | 200 /** |
205 * When double click/tap event is enabled, the second key-down and key-up | 201 * When double click/tap event is enabled, the second key-down and key-up |
206 * events on the same key should be skipped. Return true when the event | 202 * events on the same key should be skipped. Return true when the event |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 /** | 336 /** |
341 * Handles pointerup event. This is used for double tap/click events. | 337 * Handles pointerup event. This is used for double tap/click events. |
342 * @param {PointerEvent} event The pointerup event that bubbled to | 338 * @param {PointerEvent} event The pointerup event that bubbled to |
343 * kb-keyboard. | 339 * kb-keyboard. |
344 */ | 340 */ |
345 up: function(event) { | 341 up: function(event) { |
346 if (this.dblDetail_) { | 342 if (this.dblDetail_) { |
347 this.dblDetail_.clickCount++; | 343 this.dblDetail_.clickCount++; |
348 if (this.dblDetail_.clickCount == 2) { | 344 if (this.dblDetail_.clickCount == 2) { |
349 this.keyset = this.dblDetail_.toKeyset; | 345 this.keyset = this.dblDetail_.toKeyset; |
350 var keysetId = '#' + this.layout + '-' + this.keyset | 346 var keysetId = '#' + this.layout + '-' + this.keyset; |
351 this.querySelector(keysetId).nextKeyset = this.dblTimer_.nextKeyset; | 347 var keyset = this.querySelector(keysetId); |
| 348 keyset.nextKeyset = this.dblTimer_.nextKeyset; |
352 clearTimeout(this.dblTimer_); | 349 clearTimeout(this.dblTimer_); |
353 | 350 |
354 // Checks if shift is capitalized. | 351 // Checks if shift is capitalized. |
355 if (this.keyset == 'upper') { | 352 if (keyset.getAttribute('lockable')) |
356 this.classList.remove('highlight'); | 353 this.classList.add('locked'); |
357 this.classList.add('caps'); | |
358 } | |
359 | 354 |
360 this.dblDetail_ = null; | 355 this.dblDetail_ = null; |
361 } | 356 } |
362 } | 357 } |
363 | 358 |
364 // TODO(zyaozhujun): There are some edge cases to deal with later. | 359 // TODO(zyaozhujun): There are some edge cases to deal with later. |
365 // (for instance, what if a second finger trigger a down and up | 360 // (for instance, what if a second finger trigger a down and up |
366 // event sequence while swiping). | 361 // event sequence while swiping). |
367 // When pointer up from the screen, a swipe selection session finished, | 362 // When pointer up from the screen, a swipe selection session finished, |
368 // all the data should be reset to prepare for the next session. | 363 // all the data should be reset to prepare for the next session. |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 keyLongpress: function(event, detail) { | 430 keyLongpress: function(event, detail) { |
436 // If the gesture is long press, remove the pointermove listener. | 431 // If the gesture is long press, remove the pointermove listener. |
437 this.removeEventListener('pointermove', this.swipeHandler, false); | 432 this.removeEventListener('pointermove', this.swipeHandler, false); |
438 var toKeyset = detail.toKeyset; | 433 var toKeyset = detail.toKeyset; |
439 // Keyset transtion key. | 434 // Keyset transtion key. |
440 if (toKeyset) { | 435 if (toKeyset) { |
441 this.keyset = toKeyset; | 436 this.keyset = toKeyset; |
442 this.querySelector('#' + this.layout + '-' + this.keyset).nextKeyset = | 437 this.querySelector('#' + this.layout + '-' + this.keyset).nextKeyset = |
443 detail.nextKeyset; | 438 detail.nextKeyset; |
444 | 439 |
445 // Sets the caps class before removing active to prevent flicker. | 440 // Locks the keyset before removing active to prevent flicker. |
446 this.classList.add('caps'); | 441 this.classList.add('locked'); |
447 // Makes last pressed key inactive if transit to a new keyset on long | 442 // Makes last pressed key inactive if transit to a new keyset on long |
448 // press. | 443 // press. |
449 this.lastPressedKey.classList.remove('active'); | 444 this.lastPressedKey.classList.remove('active'); |
450 } | 445 } |
451 }, | 446 }, |
452 | 447 |
453 /** | 448 /** |
454 * Handles a change in the keyboard layout. Auto-selects the default | 449 * Handles a change in the keyboard layout. Auto-selects the default |
455 * keyset for the new layout. | 450 * keyset for the new layout. |
456 */ | 451 */ |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 } | 483 } |
489 } | 484 } |
490 if (keysetsLoaded) | 485 if (keysetsLoaded) |
491 console.error('No default keyset found for ' + this.layout); | 486 console.error('No default keyset found for ' + this.layout); |
492 return false; | 487 return false; |
493 } | 488 } |
494 }); | 489 }); |
495 </script> | 490 </script> |
496 </polymer-element> | 491 </polymer-element> |
497 | 492 |
OLD | NEW |