| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 <include src="keyboard_overlay_data.js"> | 5 <include src="keyboard_overlay_data.js"> |
| 6 | 6 |
| 7 var BASE_KEYBOARD = { | 7 var BASE_KEYBOARD = { |
| 8 top: 0, | 8 top: 0, |
| 9 left: 0, | 9 left: 0, |
| 10 width: 1237, | 10 width: 1237, |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 'f3' : 'keyboardOverlayF3', | 150 'f3' : 'keyboardOverlayF3', |
| 151 'f4' : 'keyboardOverlayF4', | 151 'f4' : 'keyboardOverlayF4', |
| 152 'f5' : 'keyboardOverlayF5', | 152 'f5' : 'keyboardOverlayF5', |
| 153 'f6' : 'keyboardOverlayF6', | 153 'f6' : 'keyboardOverlayF6', |
| 154 'f7' : 'keyboardOverlayF7', | 154 'f7' : 'keyboardOverlayF7', |
| 155 'f8' : 'keyboardOverlayF8', | 155 'f8' : 'keyboardOverlayF8', |
| 156 'f9' : 'keyboardOverlayF9', | 156 'f9' : 'keyboardOverlayF9', |
| 157 'f10' : 'keyboardOverlayF10', | 157 'f10' : 'keyboardOverlayF10', |
| 158 }; | 158 }; |
| 159 | 159 |
| 160 var COMPOUND_ENTER_KEY_DATA = [815, 107, 60, 120]; |
| 161 var COMPOUND_ENTER_KEY_CLIP_PATH = |
| 162 'polygon(0% 0%, 100% 0%, 100% 100%, 28% 100%, 28% 47%, 0% 47%)'; |
| 163 var COMPOUND_ENTER_KEY_OVERLAY_DIV_CLIP_PATH = |
| 164 'polygon(12% 0%, 100% 0%, 100% 97%, 12% 97%)'; |
| 165 |
| 160 var IME_ID_PREFIX = '_comp_ime_'; | 166 var IME_ID_PREFIX = '_comp_ime_'; |
| 161 var EXTENSION_ID_LEN = 32; | 167 var EXTENSION_ID_LEN = 32; |
| 162 | 168 |
| 163 var keyboardOverlayId = 'en_US'; | 169 var keyboardOverlayId = 'en_US'; |
| 164 var identifierMap = {}; | 170 var identifierMap = {}; |
| 165 | 171 |
| 166 /** | 172 /** |
| 167 * True after at least one keydown event has been received. | 173 * True after at least one keydown event has been received. |
| 168 */ | 174 */ |
| 169 var gotKeyDown = false; | 175 var gotKeyDown = false; |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 var keyData = keyboardGlyphData.keys[identifier]; | 545 var keyData = keyboardGlyphData.keys[identifier]; |
| 540 var classes = getKeyClasses(identifier, modifiers, normModifiers); | 546 var classes = getKeyClasses(identifier, modifiers, normModifiers); |
| 541 var keyLabel = getKeyLabel(keyData, normModifiers); | 547 var keyLabel = getKeyLabel(keyData, normModifiers); |
| 542 var shortcutId = shortcutData[getAction(keyLabel, normModifiers)]; | 548 var shortcutId = shortcutData[getAction(keyLabel, normModifiers)]; |
| 543 if (modifiers.length == 0 && | 549 if (modifiers.length == 0 && |
| 544 (identifier == '2A' || identifier == '36')) { | 550 (identifier == '2A' || identifier == '36')) { |
| 545 // Either the right or left shift keys are used to disable the caps lock | 551 // Either the right or left shift keys are used to disable the caps lock |
| 546 // if it was enabled. To fix crbug.com/453623. | 552 // if it was enabled. To fix crbug.com/453623. |
| 547 shortcutId = 'keyboardOverlayDisableCapsLock'; | 553 shortcutId = 'keyboardOverlayDisableCapsLock'; |
| 548 } | 554 } |
| 555 |
| 556 classes.push('keyboard-overlay-key-background'); |
| 557 |
| 549 if (shortcutId) { | 558 if (shortcutId) { |
| 550 classes.push('is-shortcut'); | 559 classes.push('is-shortcut'); |
| 560 classes.push('keyboard-overlay-shortcut-key-background'); |
| 551 } | 561 } |
| 552 | 562 |
| 553 var key = $(keyId(identifier, i)); | 563 var key = $(keyId(identifier, i)); |
| 554 key.className = classes.join(' '); | 564 key.className = classes.join(' '); |
| 555 | 565 |
| 556 if (!keyData) { | 566 if (!keyData) { |
| 557 continue; | 567 continue; |
| 558 } | 568 } |
| 559 | 569 |
| 560 var keyText = $(keyTextId(identifier, i)); | 570 var keyText = $(keyTextId(identifier, i)); |
| 561 var keyTextValue = getKeyTextValue(keyData); | 571 var keyTextValue = getKeyTextValue(keyData); |
| 562 if (keyTextValue) { | 572 if (keyTextValue) { |
| 563 keyText.style.visibility = 'visible'; | 573 keyText.style.visibility = 'visible'; |
| 564 } else { | 574 } else { |
| 565 keyText.style.visibility = 'hidden'; | 575 keyText.style.visibility = 'hidden'; |
| 566 } | 576 } |
| 567 keyText.textContent = keyTextValue; | 577 keyText.textContent = keyTextValue; |
| 568 | 578 |
| 569 var shortcutText = $(shortcutTextId(identifier, i)); | 579 var shortcutText = $(shortcutTextId(identifier, i)); |
| 570 if (shortcutId) { | 580 if (shortcutId) { |
| 571 shortcutText.style.visibility = 'visible'; | 581 shortcutText.style.visibility = 'visible'; |
| 572 shortcutText.textContent = loadTimeData.getString(shortcutId); | 582 shortcutText.textContent = loadTimeData.getString(shortcutId); |
| 573 } else { | 583 } else { |
| 574 shortcutText.style.visibility = 'hidden'; | 584 shortcutText.style.visibility = 'hidden'; |
| 575 } | 585 } |
| 576 | 586 |
| 587 if (layout[i][1] == 'COMPOUND_ENTER_KEY') { |
| 588 var overlayDivClasses = |
| 589 getKeyClasses(identifier, modifiers, normModifiers); |
| 590 if (shortcutId) |
| 591 overlayDivClasses.push('is-shortcut'); |
| 592 $(keyId(identifier, i) + '-sub').className = overlayDivClasses.join(' '); |
| 593 } |
| 594 |
| 577 var format = keyboardGlyphData.keys[layout[i][0]].format; | 595 var format = keyboardGlyphData.keys[layout[i][0]].format; |
| 578 if (format) { | 596 if (format) { |
| 579 if (format == 'left' || format == 'right') { | 597 if (format == 'left' || format == 'right') { |
| 580 shortcutText.style.textAlign = format; | 598 shortcutText.style.textAlign = format; |
| 581 keyText.style.textAlign = format; | 599 keyText.style.textAlign = format; |
| 582 } | 600 } |
| 583 } | 601 } |
| 584 } | 602 } |
| 585 } | 603 } |
| 586 | 604 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 loadTimeData.getString('keyboardOverlayLearnMoreURL'); | 689 loadTimeData.getString('keyboardOverlayLearnMoreURL'); |
| 672 learnMoreLinkAnchor.textContent = | 690 learnMoreLinkAnchor.textContent = |
| 673 loadTimeData.getString('keyboardOverlayLearnMore'); | 691 loadTimeData.getString('keyboardOverlayLearnMore'); |
| 674 learnMoreLinkText.appendChild(learnMoreLinkAnchor); | 692 learnMoreLinkText.appendChild(learnMoreLinkAnchor); |
| 675 instructions.appendChild(learnMoreLinkText); | 693 instructions.appendChild(learnMoreLinkText); |
| 676 keyboard.appendChild(instructions); | 694 keyboard.appendChild(instructions); |
| 677 | 695 |
| 678 for (var i = 0; i < layout.length; i++) { | 696 for (var i = 0; i < layout.length; i++) { |
| 679 var array = layout[i]; | 697 var array = layout[i]; |
| 680 var identifier = remapIdentifier(array[0]); | 698 var identifier = remapIdentifier(array[0]); |
| 681 var x = Math.round((array[1] + offsetX) * multiplier); | 699 |
| 682 var y = Math.round((array[2] + offsetY) * multiplier); | 700 var keyDataX = 0; |
| 683 var w = Math.round((array[3] - keyMargin) * multiplier); | 701 var keyDataY = 0; |
| 684 var h = Math.round((array[4] - keyMargin) * multiplier); | 702 var keyDataW = 0; |
| 703 var keyDataH = 0; |
| 704 var isCompoundEnterKey = false; |
| 705 if (array[1] == 'COMPOUND_ENTER_KEY') { |
| 706 keyDataX = COMPOUND_ENTER_KEY_DATA[0]; |
| 707 keyDataY = COMPOUND_ENTER_KEY_DATA[1]; |
| 708 keyDataW = COMPOUND_ENTER_KEY_DATA[2]; |
| 709 keyDataH = COMPOUND_ENTER_KEY_DATA[3]; |
| 710 isCompoundEnterKey = true; |
| 711 } else { |
| 712 keyDataX = array[1]; |
| 713 keyDataY = array[2]; |
| 714 keyDataW = array[3]; |
| 715 keyDataH = array[4]; |
| 716 } |
| 717 |
| 718 var x = Math.round((keyDataX + offsetX) * multiplier); |
| 719 var y = Math.round((keyDataY + offsetY) * multiplier); |
| 720 var w = Math.round((keyDataW - keyMargin) * multiplier); |
| 721 var h = Math.round((keyDataH - keyMargin) * multiplier); |
| 685 | 722 |
| 686 var key = document.createElement('div'); | 723 var key = document.createElement('div'); |
| 687 key.id = keyId(identifier, i); | 724 key.id = keyId(identifier, i); |
| 688 key.className = 'keyboard-overlay-key'; | 725 key.className = 'keyboard-overlay-key'; |
| 689 key.style.left = x + 'px'; | 726 key.style.left = x + 'px'; |
| 690 key.style.top = y + 'px'; | 727 key.style.top = y + 'px'; |
| 691 key.style.width = w + 'px'; | 728 key.style.width = w + 'px'; |
| 692 key.style.height = h + 'px'; | 729 key.style.height = h + 'px'; |
| 693 | 730 |
| 694 var keyText = document.createElement('div'); | 731 var keyText = document.createElement('div'); |
| 695 keyText.id = keyTextId(identifier, i); | 732 keyText.id = keyTextId(identifier, i); |
| 696 keyText.className = 'keyboard-overlay-key-text'; | 733 keyText.className = 'keyboard-overlay-key-text'; |
| 697 keyText.style.visibility = 'hidden'; | 734 keyText.style.visibility = 'hidden'; |
| 698 key.appendChild(keyText); | 735 key.appendChild(keyText); |
| 699 | 736 |
| 700 var shortcutText = document.createElement('div'); | 737 var shortcutText = document.createElement('div'); |
| 701 shortcutText.id = shortcutTextId(identifier, i); | 738 shortcutText.id = shortcutTextId(identifier, i); |
| 702 shortcutText.className = 'keyboard-overlay-shortcut-text'; | 739 shortcutText.className = 'keyboard-overlay-shortcut-text'; |
| 703 shortcutText.style.visilibity = 'hidden'; | 740 shortcutText.style.visilibity = 'hidden'; |
| 704 key.appendChild(shortcutText); | 741 key.appendChild(shortcutText); |
| 742 |
| 743 if (isCompoundEnterKey) { |
| 744 key.style.webkitClipPath = COMPOUND_ENTER_KEY_CLIP_PATH; |
| 745 keyText.style.webkitClipPath = COMPOUND_ENTER_KEY_CLIP_PATH; |
| 746 shortcutText.style.webkitClipPath = COMPOUND_ENTER_KEY_CLIP_PATH; |
| 747 |
| 748 // Add an overlay div to account for clipping and show the borders. |
| 749 var overlayDiv = document.createElement('div'); |
| 750 overlayDiv.id = keyId(identifier, i) + '-sub'; |
| 751 overlayDiv.className = 'keyboard-overlay-key'; |
| 752 var overlayDivX = x - 3; |
| 753 var overlayDivY = y + Math.round(h * 0.47) + 2; |
| 754 var overlayDivW = Math.round(w * 0.28); |
| 755 var overlayDivH = Math.round(h * (1 - 0.47)) + 1; |
| 756 |
| 757 overlayDiv.style.left = overlayDivX + 'px'; |
| 758 overlayDiv.style.top = overlayDivY + 'px'; |
| 759 overlayDiv.style.width = overlayDivW + 'px'; |
| 760 overlayDiv.style.height = overlayDivH + 'px'; |
| 761 overlayDiv.style.webkitClipPath = |
| 762 COMPOUND_ENTER_KEY_OVERLAY_DIV_CLIP_PATH; |
| 763 keyboard.appendChild(overlayDiv); |
| 764 } |
| 765 |
| 705 keyboard.appendChild(key); | 766 keyboard.appendChild(key); |
| 706 | 767 |
| 707 minX = Math.min(minX, x); | 768 minX = Math.min(minX, x); |
| 708 maxX = Math.max(maxX, x + w); | 769 maxX = Math.max(maxX, x + w); |
| 709 minY = Math.min(minY, y); | 770 minY = Math.min(minY, y); |
| 710 maxY = Math.max(maxY, y + h); | 771 maxY = Math.max(maxY, y + h); |
| 711 } | 772 } |
| 712 | 773 |
| 713 var width = maxX - minX + 1; | 774 var width = maxX - minX + 1; |
| 714 var height = maxY - minY + 1; | 775 var height = maxY - minY + 1; |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 function onWidgetShown() { | 929 function onWidgetShown() { |
| 869 setTimeout(function() { | 930 setTimeout(function() { |
| 870 // Show and focus the instructions div after a delay so that chrome vox | 931 // Show and focus the instructions div after a delay so that chrome vox |
| 871 // speaks it correctly. | 932 // speaks it correctly. |
| 872 $('instructions').style.visibility = 'visible'; | 933 $('instructions').style.visibility = 'visible'; |
| 873 $('instructions').focus(); | 934 $('instructions').focus(); |
| 874 }, 500); | 935 }, 500); |
| 875 } | 936 } |
| 876 | 937 |
| 877 document.addEventListener('DOMContentLoaded', init); | 938 document.addEventListener('DOMContentLoaded', init); |
| OLD | NEW |