From 9055477da2a8242da1ba4cf73044f44a617aa0db Mon Sep 17 00:00:00 2001 From: Mottie Date: Mon, 27 Jul 2015 22:19:04 -0500 Subject: [PATCH] Add zero-width keys & nbsp * NBSP - non-breaking space * ZWNJ - zero-width non-joiner * ZWJ - zero-width joiner * LRM - left-to-right mark * RLM - right-to-left mark --- css/keyboard.css | 6 + dist/css/keyboard.min.css | 2 +- dist/js/jquery.keyboard.min.js | 4 +- dist/languages/lv.min.js | 2 +- dist/layouts/keyboard-layouts-combined.min.js | 2 +- .../keyboard-layouts-greywyvern.min.js | 6 +- .../layouts/keyboard-layouts-microsoft.min.js | 10 +- dist/layouts/ms-Assamese.min.js | 2 +- dist/layouts/ms-Devanagari.min.js | 2 +- dist/layouts/ms-Divehi.min.js | 2 +- dist/layouts/ms-Hebrew.min.js | 2 +- ...ndi Traditional.min.js => ms-Hindi.min.js} | 2 +- ...ana.min.js => ms-Japanese-Hiragana.min.js} | 2 +- dist/layouts/ms-Kannada.min.js | 2 +- ...illic.min.js => ms-Kyrgyz-Cyrillic.min.js} | 0 ...erican.min.js => ms-Latin-American.min.js} | 0 dist/layouts/ms-Latvian.min.js | 2 +- dist/layouts/ms-Marathi.min.js | 2 +- ...ic.min.js => ms-Mongolian-Cyrillic.min.js} | 2 +- dist/layouts/ms-Nepali.min.js | 2 +- dist/layouts/ms-Pashto.min.js | 2 +- dist/layouts/ms-Punjabi.min.js | 2 +- dist/layouts/ms-Sinhala.min.js | 2 +- ...ith Sami.min.js => ms-Swedish-Sami.min.js} | 0 ...s German.min.js => ms-Swiss-German.min.js} | 0 dist/layouts/ms-Syriac.min.js | 2 +- dist/layouts/ms-Tamil.min.js | 2 +- dist/layouts/ms-Telugu.min.js | 2 +- ...US English.min.js => ms-US-English.min.js} | 0 ...ingdom.min.js => ms-United-Kingdom.min.js} | 0 dist/layouts/ms-Urdu.min.js | 2 +- ...rillic.min.js => ms-Uzbek-Cyrillic.min.js} | 0 js/jquery.keyboard.js | 25 + languages/as.untranslated.js | 30 + languages/gu.untranslated.js | 30 + languages/ja.untranslated.js | 14 +- languages/kn.untranslated.js | 30 + languages/lv.js | 11 + languages/mr.untranslated.js | 30 + languages/ne.untranslated.js | 30 + languages/pa.untranslated.js | 30 + languages/te.untranslated.js | 30 + languages/ur.untranslated.js | 30 + layouts/keyboard-layouts-combined.js | 92 ++- layouts/keyboard-layouts-greywyvern.js | 48 +- layouts/keyboard-layouts-microsoft.js | 670 +++++------------- layouts/ms-Assamese.js | 30 - layouts/ms-Devanagari.js | 30 - layouts/ms-Divehi.js | 4 +- layouts/ms-Hebrew.js | 32 - .../{ms-Hindi Traditional.js => ms-Hindi.js} | 30 - ...se Hiragana.js => ms-Japanese-Hiragana.js} | 34 - layouts/ms-Kannada.js | 30 - ...rgyz Cyrillic.js => ms-Kyrgyz-Cyrillic.js} | 0 ...Latin American.js => ms-Latin-American.js} | 0 layouts/ms-Latvian.js | 40 -- layouts/ms-Marathi.js | 30 - ...n Cyrillic.js => ms-Mongolian-Cyrillic.js} | 2 +- layouts/ms-Nepali.js | 30 - layouts/ms-Pashto.js | 6 +- layouts/ms-Punjabi.js | 30 - layouts/ms-Sinhala.js | 22 +- ...wedish with Sami.js => ms-Swedish-Sami.js} | 0 ...{ms-Swiss German.js => ms-Swiss-German.js} | 0 layouts/ms-Syriac.js | 4 +- layouts/ms-Tamil.js | 30 - layouts/ms-Telugu.js | 30 - .../{ms-US English.js => ms-US-English.js} | 0 ...United Kingdom.js => ms-United-Kingdom.js} | 0 layouts/ms-Urdu.js | 32 +- ...Uzbek Cyrillic.js => ms-Uzbek-Cyrillic.js} | 0 71 files changed, 618 insertions(+), 996 deletions(-) rename dist/layouts/{ms-Hindi Traditional.min.js => ms-Hindi.min.js} (71%) rename dist/layouts/{ms-Japanese Hiragana.min.js => ms-Japanese-Hiragana.min.js} (85%) rename dist/layouts/{ms-Kyrgyz Cyrillic.min.js => ms-Kyrgyz-Cyrillic.min.js} (100%) rename dist/layouts/{ms-Latin American.min.js => ms-Latin-American.min.js} (100%) rename dist/layouts/{ms-Mongolian Cyrillic.min.js => ms-Mongolian-Cyrillic.min.js} (73%) rename dist/layouts/{ms-Swedish with Sami.min.js => ms-Swedish-Sami.min.js} (100%) rename dist/layouts/{ms-Swiss German.min.js => ms-Swiss-German.min.js} (100%) rename dist/layouts/{ms-US English.min.js => ms-US-English.min.js} (100%) rename dist/layouts/{ms-United Kingdom.min.js => ms-United-Kingdom.min.js} (100%) rename dist/layouts/{ms-Uzbek Cyrillic.min.js => ms-Uzbek-Cyrillic.min.js} (100%) create mode 100644 languages/as.untranslated.js create mode 100644 languages/gu.untranslated.js create mode 100644 languages/kn.untranslated.js create mode 100644 languages/mr.untranslated.js create mode 100644 languages/ne.untranslated.js create mode 100644 languages/pa.untranslated.js create mode 100644 languages/te.untranslated.js create mode 100644 languages/ur.untranslated.js rename layouts/{ms-Hindi Traditional.js => ms-Hindi.js} (56%) rename layouts/{ms-Japanese Hiragana.js => ms-Japanese-Hiragana.js} (75%) rename layouts/{ms-Kyrgyz Cyrillic.js => ms-Kyrgyz-Cyrillic.js} (100%) rename layouts/{ms-Latin American.js => ms-Latin-American.js} (100%) rename layouts/{ms-Mongolian Cyrillic.js => ms-Mongolian-Cyrillic.js} (96%) rename layouts/{ms-Swedish with Sami.js => ms-Swedish-Sami.js} (100%) rename layouts/{ms-Swiss German.js => ms-Swiss-German.js} (100%) rename layouts/{ms-US English.js => ms-US-English.js} (100%) rename layouts/{ms-United Kingdom.js => ms-United-Kingdom.js} (100%) rename layouts/{ms-Uzbek Cyrillic.js => ms-Uzbek-Cyrillic.js} (100%) diff --git a/css/keyboard.css b/css/keyboard.css index 83a71f7d..22328311 100644 --- a/css/keyboard.css +++ b/css/keyboard.css @@ -21,6 +21,12 @@ .ui-keyboard-input.light, .ui-keyboard-preview.light { color: #222; background: #ddd; } .ui-keyboard-input.dark, .ui-keyboard-preview.dark { color: #ddd; background: #222; } +.ui-keyboard-NBSP span, .ui-keyboard-ZWSP span, .ui-keyboard-ZWNJ span, .ui-keyboard-ZWJ span, .ui-keyboard-LRM span, .ui-keyboard-RLM span { + font-size: 0.5em; + line-height: 1.5em; + white-space: normal; +} + /* combo key styling - toggles diacritics on/off */ .ui-keyboard-button.ui-keyboard-combo.ui-state-default { border-color: #ffaf0f; } diff --git a/dist/css/keyboard.min.css b/dist/css/keyboard.min.css index 4a3cdec5..947e2da1 100644 --- a/dist/css/keyboard.min.css +++ b/dist/css/keyboard.min.css @@ -1 +1 @@ -.ui-keyboard{padding:.3em;position:absolute;left:0;top:0;z-index:16000}.ui-keyboard-has-focus{z-index:16001}.ui-keyboard div{font-size:1.1em}.ui-keyboard-button{height:2em;min-width:2em;margin:.1em;cursor:pointer;overflow:hidden;line-height:2em;-moz-user-focus:ignore}.ui-keyboard-button span{padding:0;margin:0;white-space:nowrap;display:inline-block}.ui-keyboard-button-endrow{clear:left}.ui-keyboard-space{width:15em}.ui-keyboard-empty span,.ui-keyboard-space span{font:0/0 a;text-shadow:none;color:transparent}.ui-keyboard-preview-wrapper{text-align:center;position:relative;overflow:hidden}.ui-keyboard-preview{text-align:left;margin:0 0 3px;display:inline;width:99%}.ui-keyboard-keyset{text-align:center;white-space:nowrap}.ui-keyboard-input{text-align:left}.ui-keyboard-input-current{-moz-box-shadow:0 0 5px #4d90fe;-webkit-box-shadow:0 0 5px #4d90fe;box-shadow:0 0 5px #4d90fe}.ui-keyboard-placeholder{color:#888}.ui-keyboard-nokeyboard{color:#888;border-color:#888}.ui-keyboard-spacer{display:inline-block;width:1px;height:0;cursor:default}.ui-keyboard-input.light,.ui-keyboard-preview.light{color:#222;background:#ddd}.ui-keyboard-input.dark,.ui-keyboard-preview.dark{color:#ddd;background:#222}.ui-keyboard-button.ui-keyboard-combo.ui-state-default{border-color:#ffaf0f}button.ui-keyboard-accept.ui-keyboard-valid-input{border-color:#0c0;background:#080;color:#fff}button.ui-keyboard-accept.ui-keyboard-valid-input:hover{background:#0a0}button.ui-keyboard-accept.ui-keyboard-invalid-input{border-color:#c00;background:#800;color:#fff;opacity:.5;filter:alpha(opacity=50)}button.ui-keyboard-accept.ui-keyboard-invalid-input:hover{background:#a00}.ui-keyboard-caret{background:#c00;width:1px;margin-top:3px}div.ui-body.ui-keyboard button.ui-keyboard-button.ui-btn{padding:.5em 1em;border-color:transparent}.ui-body .ui-keyboard-button{width:3em;height:3em;display:inline-block}.ui-body .ui-keyboard-widekey{width:5.5em}.ui-body .ui-keyboard-space{width:15em}.ui-body .ui-keyboard-space span{visibility:hidden}.ui-body .ui-keyboard-keyset{line-height:.5em}.ui-body input.ui-input-text,.ui-body textarea.ui-input-text{width:95%}.ui-body .ui-btn-inner{height:2em;padding:.2em 0;margin:0}.ui-body .ui-btn{margin:0;font-size:13px}button.ui-keyboard-button.btn{padding:1px 6px}button.ui-keyboard-toggle span{width:.8em;height:.8em;display:inline-block;background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==)}button.ui-keyboard-toggle.ui-keyboard-disabled span{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4=)}.ui-keyboard.ui-keyboard-disabled button:not(.ui-keyboard-toggle),.ui-keyboard.ui-keyboard-disabled input{opacity:.5}.ui-keyboard-overlay{position:absolute;top:0;left:0;bottom:0;right:0;background:rgba(0,0,0,.5)}.ui-keyboard-popup{display:inline-block;max-width:22em}div.ui-keyboard-extender{float:right;margin-left:5px}button.ui-keyboard-extender span{width:.9em;height:.9em;display:inline-block;margin-bottom:3px;background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6I2VlZSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2VlZSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+)}@media all and (max-width:319px){.ui-keyboard div{font-size:9px}.ui-keyboard .ui-keyboard-input{font-size:12px}.ui-body .ui-btn{margin:0;font-size:9px}.ui-body .ui-keyboard-button{width:1.8em;height:2.5em}.ui-body .ui-keyboard-widekey{width:4em}.ui-body .ui-keyboard-space{width:8em}.ui-body .ui-btn-inner{height:2.5em;padding:.3em 0}}@media all and (min-width:320px)and (max-width:479px){.ui-keyboard div{font-size:9px}.ui-keyboard .ui-keyboard-input{font-size:14px}.ui-body .ui-btn{margin:0;font-size:11px}.ui-body .ui-keyboard-button{width:1.8em;height:3em}.ui-body .ui-keyboard-widekey{width:4.5em}.ui-body .ui-keyboard-space{width:10em}.ui-body .ui-btn-inner{height:3em;padding:.7em 0}}@media all and (min-width:480px)and (max-width:767px){.ui-keyboard div{font-size:13px}.ui-keyboard .ui-keyboard-input{font-size:14px}.ui-body .ui-btn{margin:0;font-size:10px}.ui-body .ui-keyboard-button{height:2.5em}.ui-body .ui-btn-inner{height:2.5em;padding:.5em 0}} \ No newline at end of file +.ui-keyboard{padding:.3em;position:absolute;left:0;top:0;z-index:16000}.ui-keyboard-has-focus{z-index:16001}.ui-keyboard div{font-size:1.1em}.ui-keyboard-button{height:2em;min-width:2em;margin:.1em;cursor:pointer;overflow:hidden;line-height:2em;-moz-user-focus:ignore}.ui-keyboard-button span{padding:0;margin:0;white-space:nowrap;display:inline-block}.ui-keyboard-button-endrow{clear:left}.ui-keyboard-space{width:15em}.ui-keyboard-empty span,.ui-keyboard-space span{font:0/0 a;text-shadow:none;color:transparent}.ui-keyboard-preview-wrapper{text-align:center;position:relative;overflow:hidden}.ui-keyboard-preview{text-align:left;margin:0 0 3px;display:inline;width:99%}.ui-keyboard-keyset{text-align:center;white-space:nowrap}.ui-keyboard-input{text-align:left}.ui-keyboard-input-current{-moz-box-shadow:0 0 5px #4d90fe;-webkit-box-shadow:0 0 5px #4d90fe;box-shadow:0 0 5px #4d90fe}.ui-keyboard-placeholder{color:#888}.ui-keyboard-nokeyboard{color:#888;border-color:#888}.ui-keyboard-spacer{display:inline-block;width:1px;height:0;cursor:default}.ui-keyboard-input.light,.ui-keyboard-preview.light{color:#222;background:#ddd}.ui-keyboard-input.dark,.ui-keyboard-preview.dark{color:#ddd;background:#222}.ui-keyboard-LRM span,.ui-keyboard-NBSP span,.ui-keyboard-RLM span,.ui-keyboard-ZWJ span,.ui-keyboard-ZWNJ span,.ui-keyboard-ZWSP span{font-size:.5em;line-height:1.5em;white-space:normal}.ui-keyboard-button.ui-keyboard-combo.ui-state-default{border-color:#ffaf0f}button.ui-keyboard-accept.ui-keyboard-valid-input{border-color:#0c0;background:#080;color:#fff}button.ui-keyboard-accept.ui-keyboard-valid-input:hover{background:#0a0}button.ui-keyboard-accept.ui-keyboard-invalid-input{border-color:#c00;background:#800;color:#fff;opacity:.5;filter:alpha(opacity=50)}button.ui-keyboard-accept.ui-keyboard-invalid-input:hover{background:#a00}.ui-keyboard-caret{background:#c00;width:1px;margin-top:3px}div.ui-body.ui-keyboard button.ui-keyboard-button.ui-btn{padding:.5em 1em;border-color:transparent}.ui-body .ui-keyboard-button{width:3em;height:3em;display:inline-block}.ui-body .ui-keyboard-widekey{width:5.5em}.ui-body .ui-keyboard-space{width:15em}.ui-body .ui-keyboard-space span{visibility:hidden}.ui-body .ui-keyboard-keyset{line-height:.5em}.ui-body input.ui-input-text,.ui-body textarea.ui-input-text{width:95%}.ui-body .ui-btn-inner{height:2em;padding:.2em 0;margin:0}.ui-body .ui-btn{margin:0;font-size:13px}button.ui-keyboard-button.btn{padding:1px 6px}button.ui-keyboard-toggle span{width:.8em;height:.8em;display:inline-block;background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==)}button.ui-keyboard-toggle.ui-keyboard-disabled span{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4=)}.ui-keyboard.ui-keyboard-disabled button:not(.ui-keyboard-toggle),.ui-keyboard.ui-keyboard-disabled input{opacity:.5}.ui-keyboard-overlay{position:absolute;top:0;left:0;bottom:0;right:0;background:rgba(0,0,0,.5)}.ui-keyboard-popup{display:inline-block;max-width:22em}div.ui-keyboard-extender{float:right;margin-left:5px}button.ui-keyboard-extender span{width:.9em;height:.9em;display:inline-block;margin-bottom:3px;background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6I2VlZSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2VlZSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+)}@media all and (max-width:319px){.ui-keyboard div{font-size:9px}.ui-keyboard .ui-keyboard-input{font-size:12px}.ui-body .ui-btn{margin:0;font-size:9px}.ui-body .ui-keyboard-button{width:1.8em;height:2.5em}.ui-body .ui-keyboard-widekey{width:4em}.ui-body .ui-keyboard-space{width:8em}.ui-body .ui-btn-inner{height:2.5em;padding:.3em 0}}@media all and (min-width:320px)and (max-width:479px){.ui-keyboard div{font-size:9px}.ui-keyboard .ui-keyboard-input{font-size:14px}.ui-body .ui-btn{margin:0;font-size:11px}.ui-body .ui-keyboard-button{width:1.8em;height:3em}.ui-body .ui-keyboard-widekey{width:4.5em}.ui-body .ui-keyboard-space{width:10em}.ui-body .ui-btn-inner{height:3em;padding:.7em 0}}@media all and (min-width:480px)and (max-width:767px){.ui-keyboard div{font-size:13px}.ui-keyboard .ui-keyboard-input{font-size:14px}.ui-body .ui-btn{margin:0;font-size:10px}.ui-body .ui-keyboard-button{height:2.5em}.ui-body .ui-btn-inner{height:2.5em;padding:.5em 0}} \ No newline at end of file diff --git a/dist/js/jquery.keyboard.min.js b/dist/js/jquery.keyboard.min.js index 6b32a956..9e7581f4 100644 --- a/dist/js/jquery.keyboard.min.js +++ b/dist/js/jquery.keyboard.min.js @@ -1,3 +1,3 @@ /*! jQuery UI Virtual Keyboard v1.23.5 */ -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&"object"==typeof module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=a.keyboard=function(c,d){var e,f=this;f.version="1.23.5",f.$el=a(c),f.el=c,f.$el.data("keyboard",f),f.init=function(){var c,g=b.css;f.settings=d||{},d&&d.position&&(c=a.extend({},d.position),d.position=null),f.options=e=a.extend(!0,{},b.defaultOptions,d),c&&(e.position=c,d.position=c),f.el.active=!0,f.namespace=".keyboard"+Math.random().toString(16).slice(2),f.extensionNamespace=[],f.shiftActive=f.altActive=f.metaActive=f.sets=f.capsLock=!1,f.rows=["","-shift","-alt","-alt-shift"],f.inPlaceholder=f.$el.attr("placeholder")||"",f.watermark=b.watermark&&""!==f.inPlaceholder,f.repeatTime=1e3/(e.repeatRate||20),e.preventDoubleEventTime=e.preventDoubleEventTime||100,f.isOpen=!1,f.wheel=a.isFunction(a.fn.mousewheel),f.alwaysAllowed=[20,33,34,35,36,37,38,39,40,45,46],f.$keyboard=[],f.enabled=!0,a.isEmptyObject(e.position)||(e.position.orig_at=e.position.at),f.checkCaret=e.lockInput||b.checkCaretSupport(),f.last={start:0,end:0,key:"",val:"",layout:"",virtual:!0,keyset:[!1,!1,!1]},f.temp=["",0,0],a.each("initialized beforeVisible visible hidden canceled accepted beforeClose".split(" "),function(b,c){a.isFunction(e[c])&&f.$el.bind(c+f.namespace,e[c])}),e.alwaysOpen&&(e.stayOpen=!0),a(document).bind("mousedown keyup touchstart checkkeyboard ".split(" ").join(f.namespace+" "),function(b){if(!f.opening){f.escClose(b);var c=a(b.target);if(c.hasClass(g.input)){var d=c.data("keyboard");d!==f||d.$el.hasClass(g.isCurrent)||b.type!==d.options.openOn||d.focusOn()}}}),f.$el.addClass(g.input+" "+e.css.input).attr({"aria-haspopup":"true",role:"textbox"}),(f.$el.is(":disabled")||f.$el.attr("readonly")&&!f.$el.hasClass(g.locked))&&f.$el.addClass(g.noKeyboard),e.openOn&&f.$el.bind(e.openOn+f.namespace,function(){f.focusOn()}),f.watermark||""!==f.$el.val()||""===f.inPlaceholder||""===f.$el.attr("placeholder")||f.$el.addClass(g.placeholder).val(f.inPlaceholder),f.$el.trigger(b.events.kbInit,[f,f.el]),e.alwaysOpen&&f.reveal()},f.toggle=function(){var a=f.$keyboard.find("."+b.css.keyToggle),c=!f.enabled;f.$preview.prop("readonly",c),f.$keyboard.toggleClass(b.css.keyDisabled,c).find("."+b.css.keyButton).not(a).prop("disabled",c).attr("aria-disabled",c),a.toggleClass(b.css.keyDisabled,c),c&&f.typing_options&&(f.typing_options.text="")},f.setCurrent=function(){var c=b.css;a("."+c.hasFocus).removeClass(c.hasFocus),a("."+c.isCurrent).removeClass(c.isCurrent),f.$el.addClass(c.isCurrent),f.$keyboard.addClass(c.hasFocus),f.isCurrent(!0),f.isOpen=!0},f.isCurrent=function(a){var c=b.currentKeyboard||!1;return a?c=b.currentKeyboard=f.el:a===!1&&c===f.el&&(c=b.currentKeyboard=""),c===f.el},f.isVisible=function(){return f.$keyboard&&f.$keyboard.length?f.$keyboard.is(":visible"):!1},f.focusOn=function(){(f||!f.el.active)&&(f.$el.is(":visible")&&(f.timer2=setTimeout(function(){var a;/(number|email)/i.test(f.el.type)||e.caretToEnd||f.saveCaret(a,a,f.$el)},20)),f.isVisible()||(clearTimeout(f.timer),f.reveal()),e.alwaysOpen&&f.setCurrent())},f.reveal=function(c){f.isOpen&&(c=!0);var d=b.css;return f.opening=!0,a("."+d.keyboard).not("."+d.alwaysOpen).remove(),c&&(f.isOpen=!1,f.last.val=f.$preview&&f.$preview.val()||"",f.$keyboard.length&&(f.$keyboard.remove(),f.$keyboard=[],f.shiftActive=f.altActive=f.metaActive=!1)),f.$el.is(":disabled")||f.$el.attr("readonly")&&!f.$el.hasClass(d.locked)?void f.$el.addClass(d.noKeyboard):(f.$el.removeClass(d.noKeyboard),e.openOn&&f.$el.unbind(e.openOn+f.namespace),(!f.$keyboard||f.$keyboard&&(!f.$keyboard.length||a.contains(document.body,f.$keyboard[0])))&&f.startup(),f.watermark||f.el.value!==f.inPlaceholder||f.$el.removeClass(d.placeholder).val(""),f.originalContent=f.$el.val(),f.$preview.val(c?f.last.val:f.originalContent),e.acceptValid&&f.checkValid(),e.resetDefault&&(f.shiftActive=f.altActive=f.metaActive=!1,f.showSet()),f.$el.trigger(b.events.kbBeforeVisible,[f,f.el]),f.setCurrent(),f.toggle(),f.$keyboard.show(),e.usePreview&&b.msie&&("undefined"==typeof f.width&&(f.$preview.hide(),f.width=Math.ceil(f.$keyboard.width()),f.$preview.show()),f.$preview.width(f.width)),f.position=a.isEmptyObject(e.position)?!1:e.position,a.ui&&a.ui.position&&f.position&&(f.position.of=f.position.of||f.$el.data("keyboardPosition")||f.$el,f.position.collision=f.position.collision||"flipfit flipfit",e.position.at=e.usePreview?e.position.orig_at:e.position.at2,f.$keyboard.position(f.position)),f.checkDecimal(),f.lineHeight=parseInt(f.$preview.css("lineHeight"),10)||parseInt(f.$preview.css("font-size"),10)+4,e.caretToEnd&&f.saveCaret(f.originalContent.length,f.originalContent.length),b.allie&&(0===f.last.end&&f.last.start>0&&(f.last.end=f.last.start),f.last.start<0&&(f.last.start=f.last.end=f.originalContent.length)),f.timer2=setTimeout(function(){f.opening=!1,e.initialFocus&&b.caret(f.$preview,f.last),f.last.eventTime=(new Date).getTime(),f.$el.trigger(b.events.kbVisible,[f,f.el]),f.timer=setTimeout(function(){f&&f.saveCaret()},200)},10),f)},f.updateLanguage=function(){var c=b.layouts,d=e.language||c[e.layout]&&c[e.layout].lang&&c[e.layout].lang||[e.language||"en"],g=b.language;d=(a.isArray(d)?d[0]:d).split("-")[0],e.display=a.extend(!0,{},g.en.display,g[d]&&g[d].display||{},f.settings.display),e.combos=a.extend(!0,{},g.en.combos,g[d]&&g[d].combos||{},f.settings.combos),e.wheelMessage=g[d]&&g[d].wheelMessage||g.en.wheelMessage,e.rtl=c[e.layout]&&c[e.layout].rtl||g[d]&&g[d].rtl||!1,f.regex=g[d]&&g[d].comboRegex||b.comboRegex,f.decimal=/^\./.test(e.display.dec),f.$el.toggleClass("rtl",e.rtl).css("direction",e.rtl?"rtl":"")},f.startup=function(){var c=b.css;f.$preview=f.$el,f.$keyboard&&f.$keyboard.length||("custom"===e.layout&&(e.layoutHash="custom"+f.customHash()),f.layout="custom"===e.layout?e.layoutHash:e.layout,f.last.layout=f.layout,f.updateLanguage(),"undefined"==typeof b.builtLayouts[f.layout]&&(a.isFunction(e.create)?f.$keyboard=e.create(f):f.$keyboard.length||f.buildKeyboard(f.layout,!0)),f.$keyboard=b.builtLayouts[f.layout].$keyboard.clone(),""!==(f.el.id||"")&&f.$keyboard.attr("id",f.el.id+b.css.idSuffix),e.usePreview?(a.isEmptyObject(e.position)||(e.position.at=e.position.orig_at),f.$preview=f.$el.clone(!1).removeAttr("id").removeClass(c.placeholder+" "+c.input).addClass(c.preview+" "+e.css.input).removeAttr("aria-haspopup").attr("tabindex","-1").show(),"number"==f.$preview.attr("type")&&f.$preview.attr("type","text"),a("
").addClass(c.wrapper).append(f.$preview).prependTo(f.$keyboard)):a.isEmptyObject(e.position)||(e.position.at=e.position.at2)),f.preview=f.$preview[0],f.$decBtn=f.$keyboard.find("."+c.keyPrefix+"dec"),(e.enterNavigation||"TEXTAREA"===f.el.nodeName)&&f.alwaysAllowed.push(13),e.lockInput&&f.$preview.addClass(c.locked).attr({readonly:"readonly"}),f.bindKeyboard(),f.$keyboard.appendTo(e.appendLocally?f.$el.parent():e.appendTo||"body"),f.bindKeys(),e.reposition&&a.ui&&a.ui.position&&"body"==e.appendTo&&a(window).bind("resize"+f.namespace,function(){f.position&&f.isVisible()&&f.$keyboard.position(f.position)})},f.saveCaret=function(a,c,d){var e=b.caret(d||f.$preview,a,c);f.last.start="undefined"==typeof a?e.start:a,f.last.end="undefined"==typeof c?e.end:c},f.setScroll=function(){if(f.last.virtual){var a,b,c,d,g="TEXTAREA"===f.preview.nodeName,h=f.last.val.substring(0,Math.max(f.last.start,f.last.end));f.$previewCopy||(f.$previewCopy=f.$preview.clone().removeAttr("id").css({position:"absolute",left:0,zIndex:-10,visibility:"hidden"}).addClass("ui-keyboard-preview-clone"),g||f.$previewCopy.css({"white-space":"pre",width:0}),e.usePreview?f.$preview.after(f.$previewCopy):f.$keyboard.prepend(f.$previewCopy)),g?(f.$previewCopy.height(f.lineHeight).val(h),f.preview.scrollTop=f.lineHeight*(Math.floor(f.$previewCopy[0].scrollHeight/f.lineHeight)-1)):(f.$previewCopy.val(h.replace(/\s/g," ")),c=/c/i.test(e.scrollAdjustment)?f.preview.clientWidth/2:e.scrollAdjustment,a=f.$previewCopy[0].scrollWidth-1,"undefined"==typeof f.last.scrollWidth&&(f.last.scrollWidth=a,f.last.direction=!0),d=f.last.scrollWidth===a?f.last.direction:f.last.scrollWidtha?f.preview.scrollLeft=0:f.preview.scrollLeft=a-b:a>=f.preview.scrollWidth-b?f.preview.scrollLeft=f.preview.scrollWidth-c:a-c>0?f.preview.scrollLeft=a-c:f.preview.scrollLeft=0,f.last.scrollWidth=a,f.last.direction=d)}},f.bindKeyboard=function(){var c,d=b.builtLayouts[f.layout];f.$preview.unbind("keypress keyup keydown mouseup touchend ".split(" ").join(f.namespace+" ")).bind("click"+f.namespace,function(){f.timer2=setTimeout(function(){f.saveCaret()},150)}).bind("keypress"+f.namespace,function(g){if(e.lockInput)return!1;var h=g.charCode||g.which,i=f.last.key=String.fromCharCode(h);if(f.last.virtual=!1,f.last.event=g,f.last.$key=[],f.checkCaret&&f.saveCaret(),f.capsLock=h>=65&&90>=h&&!g.shiftKey||h>=97&&122>=h&&g.shiftKey?!0:!1,e.restrictInput){if((8===g.which||0===g.which)&&a.inArray(g.keyCode,f.alwaysAllowed))return;-1===a.inArray(h,d.acceptedKeys)&&(g.preventDefault(),c=a.extend({},g),c.type=b.events.inputRestricted,f.$el.trigger(c,[f,f.el]),a.isFunction(e.restricted)&&e.restricted(c,f,f.el))}else if((g.ctrlKey||g.metaKey)&&(97===g.which||99===g.which||118===g.which||g.which>=120&&g.which<=122))return;d.hasMappedKeys&&d.mappedKeys.hasOwnProperty(i)&&(f.last.key=d.mappedKeys[i],f.insertText(f.last.key),g.preventDefault()),f.checkMaxLength()}).bind("keyup"+f.namespace,function(c){switch(f.last.virtual=!1,c.which){case 9:if(f.tab&&e.tabNavigation&&!e.lockInput){f.shiftActive=c.shiftKey;var d=b.keyaction.tab(f);if(f.tab=!1,!d)return!1}else c.preventDefault();break;case 27:return f.close(e.autoAccept&&e.autoAcceptOnEsc?"true":!1),!1}return clearTimeout(f.throttled),f.throttled=setTimeout(function(){f.isVisible()&&f.checkCombos()},100),f.checkMaxLength(),f.$el.trigger(b.events.kbChange,[f,f.el]),f.last.val=f.$preview.val(),a.isFunction(e.change)?(e.change(a.Event("change"),f,f.el),!1):void 0}).bind("keydown"+f.namespace,function(a){switch(f.last.virtual=!1,a.which){case 8:b.keyaction.bksp(f,null,a),a.preventDefault();break;case 9:return e.tabNavigation?(f.tab=!0,!1):(f.tab=!0,!1);case 13:b.keyaction.enter(f,null,a);break;case 20:f.shiftActive=f.capsLock=!f.capsLock,f.showSet(this);break;case 86:if(a.ctrlKey||a.metaKey){if(e.preventPaste)return void a.preventDefault();f.checkCombos()}}}).bind("mouseup touchend ".split(" ").join(f.namespace+" "),function(){f.last.virtual=!0,f.checkCaret&&f.saveCaret()}),f.$keyboard.bind("mousedown click touchstart ".split(" ").join(f.namespace+" "),function(b){b.stopPropagation(),f.isCurrent()||(f.reveal(),a(document).trigger("checkkeyboard"+f.namespace)),f.$preview.focus()}),e.preventPaste&&(f.$preview.bind("contextmenu"+f.namespace,function(a){a.preventDefault()}),f.$el.bind("contextmenu"+f.namespace,function(a){a.preventDefault()}))},f.bindKeys=function(){var c=b.css;f.$allKeys=f.$keyboard.find("button."+c.keyButton).unbind(f.namespace+" "+f.namespace+"kb").bind(e.keyBinding.split(" ").join(f.namespace+" ")+f.namespace+" "+b.events.kbRepeater,function(d){if(d.preventDefault(),!f.$keyboard.is(":visible"))return!1;var g,h,i=0,j=this,k=a(j),l=f.getLayers(k),m=l.map(function(){return a(this).attr("data-curtxt")}).get(),n=(new Date).getTime();if(l.each(function(a,b){return b===j?(i=a,!1):void 0}),h=0>i?k:l.eq(i+k.data("curnum")),g=h.attr("data-action"),g=":"===g?":":(g||"").split(":")[0],!(n-(f.last.eventTime||0)1&&"touchstart"!==b.type?e.wheelMessage:c}),"mouseleave"===b.type&&(d.data({curtxt:d.data("original"),curnum:0}),d.removeClass("password"===f.el.type?"":e.css.buttonHover).attr("title",function(a,b){return b===e.wheelMessage?"":b}).find("."+c.keyText).html(d.data("original")))}}).bind("mouseup"+f.namespace+" "+"mouseleave touchend touchmove touchcancel ".split(" ").join(f.namespace+"kb "),function(c){return f.last.virtual=!0,/(mouseleave|touchend|touchcancel)/i.test(c.type)?a(this).removeClass(e.css.buttonHover):(f.isVisible()&&f.isCurrent()&&f.$preview.focus(),f.checkCaret&&b.caret(f.$preview,f.last)),f.mouseRepeat=[!1,""],clearTimeout(f.repeater),!1}).bind("click"+f.namespace,function(){return!1}).not("."+c.keyAction).bind("mousewheel"+f.namespace,function(b,d){if(f.wheel){d=d||b.deltaY;var e,g=a(this),h=f.getLayers(g),i=h.length&&h.map(function(){return a(this).attr("data-curtxt")}).get()||[g.find("."+c.keyText).text()];return i.length>1?(e=g.data("curnum")+(d>0?-1:1),e>i.length-1&&(e=0),0>e&&(e=i.length-1)):e=0,g.data({curnum:e,layers:i,curtxt:i[e]}),g.find("."+c.keyText).html(i[e]),!1}}).add("."+c.keyPrefix+"tab bksp space enter".split(" ").join(",."+c.keyPrefix),f.$keyboard).bind("mousedown touchstart ".split(" ").join(f.namespace+"kb "),function(){if(0!==e.repeatRate){var b=a(this);f.mouseRepeat=[!0,b],setTimeout(function(){f.mouseRepeat[0]&&f.mouseRepeat[1]===b&&f.repeatKey(b)},e.repeatDelay)}return!1})},f.insertText=function(a){var c,d,e="\b"===a,g=f.$preview.val(),h=b.caret(f.$preview),i=g.length;h.endi&&(h.end=h.start=i),"TEXTAREA"===f.preview.nodeName&&b.msie&&"\n"===g.substr(h.start,1)&&(h.start+=1,h.end+=1),"{d}"===a&&(a="",d=h.start,h.end+=1),c=e&&h.start===h.end,a=e?"":a,g=g.substr(0,h.start-(c?1:0))+a+g.substr(h.end),d=h.start+(c?-1:a.length),f.$preview.val(g),f.saveCaret(d,d),f.setScroll()},f.checkMaxLength=function(){var a,c,d=f.$preview.val();e.maxLength!==!1&&d.length>e.maxLength&&(a=b.caret(f.$preview).start,c=Math.min(a,e.maxLength),e.maxInsert||(d=f.last.val,c=a-1),f.$preview.val(d.substring(0,e.maxLength)),f.saveCaret(c,c)),f.$decBtn.length&&f.checkDecimal()},f.repeatKey=function(a){a.trigger(b.events.kbRepeater),f.mouseRepeat[0]&&(f.repeater=setTimeout(function(){f.repeatKey(a)},f.repeatTime))},f.showKeySet=function(a){"string"==typeof a?(f.last.keyset=[f.shiftActive,f.altActive,f.metaActive],f.shiftActive=/shift/i.test(a),f.altActive=/alt/i.test(a),/meta/.test(a)?(f.metaActive=!0,f.showSet({name:a.match(/meta\d+/i)[0]})):(f.metaActive=!1,f.showSet())):f.showSet(a)},f.showSet=function(a){e=f.options;var c=b.css,d="",g=(f.shiftActive?1:0)+(f.altActive?2:0);return f.shiftActive||(f.capsLock=!1),f.metaActive?(d=a&&a.name&&/meta/i.test(a.name)?a.name:"",""===d?d=f.metaActive===!0?"":f.metaActive:f.metaActive=d,(!e.stickyShift&&f.last.keyset[2]!==f.metaActive||(f.shiftActive||f.altActive)&&!f.$keyboard.find("."+c.keySet+"-"+d+f.rows[g]).length)&&(f.shiftActive=f.altActive=!1)):!e.stickyShift&&f.last.keyset[2]!==f.metaActive&&f.shiftActive&&(f.shiftActive=f.altActive=!1),g=(f.shiftActive?1:0)+(f.altActive?2:0),d=0!==g||f.metaActive?""===d?"":"-"+d:"-normal",f.$keyboard.find("."+c.keySet+d+f.rows[g]).length?(f.$keyboard.find("."+c.keyPrefix+"alt,."+c.keyPrefix+"shift,."+c.keyAction+"[class*=meta]").removeClass(e.css.buttonActive).end().find("."+c.keyPrefix+"alt").toggleClass(e.css.buttonActive,f.altActive).end().find("."+c.keyPrefix+"shift").toggleClass(e.css.buttonActive,f.shiftActive).end().find("."+c.keyPrefix+"lock").toggleClass(e.css.buttonActive,f.capsLock).end().find("."+c.keySet).hide().end().find("."+c.keySet+d+f.rows[g]).show().end().find("."+c.keyAction+"."+c.keyboard+d).addClass(e.css.buttonActive),f.last.keyset=[f.shiftActive,f.altActive,f.metaActive],void f.$el.trigger(b.events.kbKeysetChange,[f,f.el])):(f.shiftActive=f.last.keyset[0],f.altActive=f.last.keyset[1],void(f.metaActive=f.last.keyset[2]))},f.checkCombos=function(){if(!f.isVisible())return f.$preview.val();var a,c,d,g,h=f.$preview.val(),i=b.caret(f.$preview),j=b.builtLayouts[f.layout],k=h.length;if(""===h)return h;if(i.endk&&(i.end=i.start=k),b.msie&&"\n"===h.substr(i.start,1)&&(i.start+=1,i.end+=1),e.useCombos&&(b.msie?h=h.replace(f.regex,function(a,b,c){return e.combos.hasOwnProperty(b)?e.combos[b][c]||a:a}):f.$preview.length&&(d=i.start-(i.start-2>=0?2:0),b.caret(f.$preview,d,i.end),g=(b.caret(f.$preview).text||"").replace(f.regex,function(a,b,c){return e.combos.hasOwnProperty(b)?e.combos[b][c]||a:a}),f.$preview.val(b.caret(f.$preview).replaceStr(g)),h=f.$preview.val())),e.restrictInput&&""!==h){for(d=h,c=j.acceptedKeys.length,a=0;c>a;a++)""!==d&&(g=j.acceptedKeys[a],h.indexOf(g)>=0&&(/[\[|\]|\\|\^|\$|\.|\||\?|\*|\+|\(|\)|\{|\}]/g.test(g)&&(g="\\"+g),d=d.replace(new RegExp(g,"g"),"")));""!==d&&(h=h.replace(d,""))}return i.start+=h.length-k,i.end+=h.length-k,f.$preview.val(h),f.saveCaret(i.start,i.end),f.setScroll(),f.checkMaxLength(),e.acceptValid&&f.checkValid(),h},f.checkValid=function(){var c=b.css,d=!0;a.isFunction(e.validate)&&(d=e.validate(f,f.$preview.val(),!1)),f.$keyboard.find("."+c.keyPrefix+"accept").toggleClass(c.inputInvalid,!d).toggleClass(c.inputValid,d)},f.checkDecimal=function(){f.decimal&&/\./g.test(f.preview.value)||!f.decimal&&/\,/g.test(f.preview.value)?f.$decBtn.attr({disabled:"disabled","aria-disabled":"true"}).removeClass(e.css.buttonHover).addClass(e.css.buttonDisabled):f.$decBtn.removeAttr("disabled").attr({"aria-disabled":"false"}).addClass(e.css.buttonDefault).removeClass(e.css.buttonDisabled)},f.getLayers=function(c){var d=b.css,e=c.attr("data-pos"),f=c.closest("."+d.keyboard).find('button[data-pos="'+e+'"]');return f.filter(function(){return""!==a(this).find("."+d.keyText).text()}).add(c)},f.switchInput=function(b,c){if(a.isFunction(e.switchInput))e.switchInput(f,b,c);else{f.$keyboard.length&&f.$keyboard.hide();var d,g=!1,h=a("button, input, textarea, a").filter(":visible").not(":disabled"),i=h.index(f.$el)+(b?1:-1);if(f.$keyboard.length&&f.$keyboard.show(),i>h.length-1&&(g=e.stopAtEnd,i=0),0>i&&(g=e.stopAtEnd,i=h.length-1),!g){if(c=f.close(c),!c)return;d=h.eq(i).data("keyboard"),d&&d.options.openOn.length?d.focusOn():h.eq(i).focus()}}return!1},f.close=function(c){if(f.isOpen){clearTimeout(f.throttled);var d=b.css,g=b.events,h=c?f.checkCombos():f.originalContent;if(c&&a.isFunction(e.validate)&&!e.validate(f,h,!0)&&(h=f.originalContent,c=!1,e.cancelClose))return;f.isCurrent(!1),f.isOpen=!1,f.$preview.val(h),f.$el.removeClass(d.isCurrent+" "+d.inputAutoAccepted).addClass(c?c===!0?"":d.inputAutoAccepted:"").val(h).trigger(g.inputChange).trigger(e.alwaysOpen?"":g.kbBeforeClose,[f,f.el,c||!1]).trigger(c?g.inputAccepted:g.inputCanceled,[f,f.el]).trigger(e.alwaysOpen?g.kbInactive:g.kbHidden,[f,f.el]).blur(),f&&(f.last.eventTime=(new Date).getTime(),e.openOn&&(f.timer=setTimeout(function(){f&&f.el.active&&(f.$el.bind(e.openOn+f.namespace,function(){f.focusOn()}),a(":focus")[0]===f.el&&f.$el.blur())},500)),!e.alwaysOpen&&f.$keyboard&&(f.$keyboard.remove(),f.$keyboard=[]),f.watermark||""!==f.el.value||""===f.inPlaceholder||f.$el.addClass(d.placeholder).val(f.inPlaceholder))}return!!c},f.accept=function(){return f.close(!0)},f.escClose=function(c){if(c&&"keyup"===c.type)return 27===c.which?f.close(e.autoAccept&&e.autoAcceptOnEsc?"true":!1):"";if(f.isOpen&&(!f.isCurrent()&&f.isOpen||f.isOpen&&c.target!==f.el)){if(e.stayOpen&&!a(c.target).hasClass("ui-keyboard-input"))return;b.allie&&c.preventDefault(),f.close(e.autoAccept?"true":!1)}},f.keyBtn=a("