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" on-key-out="keyOut" | 10 on-enable-dbl="enableDbl" on-key-out="keyOut" on-show-options="showOptions" |
| 11 on-set-layout="setLayout" |
11 attributes="keyset layout inputType inputTypeToLayoutMap"> | 12 attributes="keyset layout inputType inputTypeToLayoutMap"> |
12 <template> | 13 <template> |
13 <style> | 14 <style> |
14 @host { | 15 @host { |
15 * { | 16 * { |
16 position: relative; | 17 position: relative; |
17 } | 18 } |
18 } | 19 } |
19 </style> | 20 </style> |
20 <!-- The ID for a keyset follows the naming convention of combining the | 21 <!-- The ID for a keyset follows the naming convention of combining the |
21 -- layout name with a base keyset name. This convention is used to | 22 -- layout name with a base keyset name. This convention is used to |
22 -- allow multiple layouts to be loaded (enablign fast switching) while | 23 -- allow multiple layouts to be loaded (enablign fast switching) while |
23 -- allowing the shift and spacebar keys to be common across multiple | 24 -- allowing the shift and spacebar keys to be common across multiple |
24 -- keyboard layouts. | 25 -- keyboard layouts. |
25 --> | 26 --> |
26 <content select="#{{layout}}-{{keyset}}"></content> | 27 <content select="#{{layout}}-{{keyset}}"></content> |
| 28 <kb-keyboard-overlay id="overlay" hidden></kb-keyboard-overlay> |
27 <kb-key-codes id="keyCodeMetadata"></kb-key-codes> | 29 <kb-key-codes id="keyCodeMetadata"></kb-key-codes> |
28 </template> | 30 </template> |
29 <script> | 31 <script> |
30 /** | 32 /** |
31 * The repeat delay in milliseconds before a key starts repeating. Use the | 33 * The repeat delay in milliseconds before a key starts repeating. Use the |
32 * same rate as Chromebook. | 34 * same rate as Chromebook. |
33 * (See chrome/browser/chromeos/language_preferences.cc) | 35 * (See chrome/browser/chromeos/language_preferences.cc) |
34 * @const | 36 * @const |
35 * @type {number} | 37 * @type {number} |
36 */ | 38 */ |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 voiceInput_: null, | 210 voiceInput_: null, |
209 | 211 |
210 /** | 212 /** |
211 * The default input type to keyboard layout map. The key must be one of | 213 * The default input type to keyboard layout map. The key must be one of |
212 * the input box type values. | 214 * the input box type values. |
213 * @type {object} | 215 * @type {object} |
214 */ | 216 */ |
215 inputTypeToLayoutMap: { | 217 inputTypeToLayoutMap: { |
216 number: "numeric", | 218 number: "numeric", |
217 text: "qwerty", | 219 text: "qwerty", |
218 password: "system-qwerty" | 220 password: "qwerty" |
219 }, | 221 }, |
220 | 222 |
221 /** | 223 /** |
222 * Changes the current keyset. | 224 * Changes the current keyset. |
223 * @param {Object} detail The detail of the event that called this | 225 * @param {Object} detail The detail of the event that called this |
224 * function. | 226 * function. |
225 */ | 227 */ |
226 changeKeyset: function(detail) { | 228 changeKeyset: function(detail) { |
227 if (detail.relegateToShift && this.shift) { | 229 if (detail.relegateToShift && this.shift) { |
228 this.keyset = this.shift.textKeyset; | 230 this.keyset = this.shift.textKeyset; |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 // Locks the keyset before removing active to prevent flicker. | 566 // Locks the keyset before removing active to prevent flicker. |
565 this.classList.add('caps-locked'); | 567 this.classList.add('caps-locked'); |
566 // Makes last pressed key inactive if transit to a new keyset on long | 568 // Makes last pressed key inactive if transit to a new keyset on long |
567 // press. | 569 // press. |
568 if (this.lastPressedKey) | 570 if (this.lastPressedKey) |
569 this.lastPressedKey.classList.remove('active'); | 571 this.lastPressedKey.classList.remove('active'); |
570 } | 572 } |
571 }, | 573 }, |
572 | 574 |
573 /** | 575 /** |
| 576 * Show menu for selecting a keyboard layout. |
| 577 * @param {!Event} event The triggering event. |
| 578 * @param {{left: number, top: number, width: number}} details Location of |
| 579 * the button that triggered the popup. |
| 580 */ |
| 581 showOptions: function(event, details) { |
| 582 var overlay = this.$.overlay; |
| 583 if (!overlay) { |
| 584 console.error('Missing overlay.'); |
| 585 return; |
| 586 } |
| 587 var menu = overlay.$.options; |
| 588 if (!menu) { |
| 589 console.error('Missing options menu.'); |
| 590 } |
| 591 |
| 592 menu.hidden = false; |
| 593 overlay.hidden = false; |
| 594 var left = details.left + details.width - menu.clientWidth; |
| 595 var top = details.top - menu.clientHeight; |
| 596 menu.style.left = left + 'px'; |
| 597 menu.style.top = top + 'px'; |
| 598 }, |
| 599 |
| 600 /** |
| 601 * Handler for the 'set-layout' event. |
| 602 * @param {!Event} event The triggering event. |
| 603 * @param {{layout: string}} details Details of the event, which contains |
| 604 * the name of the layout to activate. |
| 605 */ |
| 606 setLayout: function(event, details) { |
| 607 this.layout = details.layout; |
| 608 }, |
| 609 |
| 610 /** |
574 * Handles a change in the keyboard layout. Auto-selects the default | 611 * Handles a change in the keyboard layout. Auto-selects the default |
575 * keyset for the new layout. | 612 * keyset for the new layout. |
576 */ | 613 */ |
577 layoutChanged: function() { | 614 layoutChanged: function() { |
578 if (!this.selectDefaultKeyset()) { | 615 if (!this.selectDefaultKeyset()) { |
579 this.isReady = false; | 616 this.isReady = false; |
580 this.fire('stateChange', {state: 'loadingKeyset'}); | 617 this.fire('stateChange', {state: 'loadingKeyset'}); |
581 | 618 |
582 // Keyset selection fails if the keysets have not been loaded yet. | 619 // Keyset selection fails if the keysets have not been loaded yet. |
583 var keysets = document.querySelector('#' + this.layout); | 620 var keysets = document.querySelector('#' + this.layout); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
731 } | 768 } |
732 } | 769 } |
733 } | 770 } |
734 if (keysetsLoaded) | 771 if (keysetsLoaded) |
735 console.error('No default keyset found for ' + this.layout); | 772 console.error('No default keyset found for ' + this.layout); |
736 return false; | 773 return false; |
737 } | 774 } |
738 }); | 775 }); |
739 </script> | 776 </script> |
740 </polymer-element> | 777 </polymer-element> |
OLD | NEW |