From eb46f47b6b2f6a6a95e03fec66763ad0776ec272 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Fri, 25 Jan 2019 16:14:19 -0500 Subject: [PATCH 1/3] Bower: add Keyboard --- .../public/assets/keyboard/.bower.json | 69 + .../public/assets/keyboard/.editorconfig | 10 + .../public/assets/keyboard/.eslintrc | 29 + .../public/assets/keyboard/.gitattributes | 22 + .../public/assets/keyboard/.gitignore | 23 + app/Resources/public/assets/keyboard/.mailmap | 4 + app/Resources/public/assets/keyboard/AUTHORS | 52 + .../public/assets/keyboard/CHANGELOG.md | 1 + .../public/assets/keyboard/CONTRIBUTING.md | 11 + .../public/assets/keyboard/Gruntfile.js | 275 + app/Resources/public/assets/keyboard/LICENSE | 45 + .../public/assets/keyboard/README.md | 178 + .../public/assets/keyboard/bower.json | 58 + .../public/assets/keyboard/composer.json | 52 + .../assets/keyboard/css/images/disabled.svg | 3 + .../assets/keyboard/css/images/enabled.svg | 3 + .../assets/keyboard/css/images/keyboard.svg | 15 + .../assets/keyboard/css/keyboard-basic.css | 196 + .../assets/keyboard/css/keyboard-dark.css | 196 + .../keyboard/css/keyboard-previewkeyset.css | 44 + .../public/assets/keyboard/css/keyboard.css | 337 + .../keyboard/dist/css/keyboard-basic.min.css | 1 + .../keyboard/dist/css/keyboard-dark.min.css | 1 + .../dist/css/keyboard-previewkeyset.min.css | 1 + .../assets/keyboard/dist/css/keyboard.min.css | 1 + .../js/jquery.keyboard.extension-all.min.js | 5 + ...ery.keyboard.extension-altkeyspopup.min.js | 2 + ...ery.keyboard.extension-autocomplete.min.js | 2 + .../js/jquery.keyboard.extension-caret.min.js | 2 + .../jquery.keyboard.extension-extender.min.js | 2 + .../jquery.keyboard.extension-mobile.min.js | 2 + ...query.keyboard.extension-navigation.min.js | 2 + ...ry.keyboard.extension-previewkeyset.min.js | 2 + .../jquery.keyboard.extension-scramble.min.js | 2 + .../jquery.keyboard.extension-typing.min.js | 2 + .../keyboard/dist/js/jquery.keyboard.js | 3561 +++++++++++ .../keyboard/dist/js/jquery.keyboard.min.js | 2 + .../keyboard/dist/js/jquery.mousewheel.min.js | 2 + .../assets/keyboard/dist/languages/amh.min.js | 1 + .../assets/keyboard/dist/languages/de.min.js | 1 + .../assets/keyboard/dist/languages/es.min.js | 1 + .../assets/keyboard/dist/languages/fa.min.js | 1 + .../assets/keyboard/dist/languages/fr.min.js | 1 + .../assets/keyboard/dist/languages/he.min.js | 1 + .../assets/keyboard/dist/languages/hu.min.js | 1 + .../assets/keyboard/dist/languages/it.min.js | 1 + .../assets/keyboard/dist/languages/lv.min.js | 1 + .../assets/keyboard/dist/languages/my.min.js | 1 + .../assets/keyboard/dist/languages/pl.min.js | 1 + .../assets/keyboard/dist/languages/pt.min.js | 1 + .../assets/keyboard/dist/languages/ro.min.js | 1 + .../assets/keyboard/dist/languages/ru.min.js | 1 + .../assets/keyboard/dist/languages/sq.min.js | 1 + .../keyboard/dist/layouts/albanian.min.js | 1 + .../keyboard/dist/layouts/arabic.min.js | 1 + .../keyboard/dist/layouts/belarusian.min.js | 1 + .../keyboard/dist/layouts/bengali.min.js | 1 + .../keyboard/dist/layouts/bulgarian.min.js | 1 + .../keyboard/dist/layouts/burmese.min.js | 1 + .../keyboard/dist/layouts/catalan.min.js | 1 + .../keyboard/dist/layouts/chinese.min.js | 1 + .../keyboard/dist/layouts/danish.min.js | 1 + .../keyboard/dist/layouts/ethiopic.min.js | 1 + .../keyboard/dist/layouts/french.min.js | 1 + .../keyboard/dist/layouts/german.min.js | 1 + .../keyboard/dist/layouts/hebrew.min.js | 1 + .../assets/keyboard/dist/layouts/hindi.min.js | 1 + .../keyboard/dist/layouts/hungarian.min.js | 1 + .../dist/layouts/hungarianansi.min.js | 1 + .../keyboard/dist/layouts/japanese.min.js | 1 + .../layouts/keyboard-layouts-combined.min.js | 2 + .../keyboard-layouts-greywyvern.min.js | 3 + .../layouts/keyboard-layouts-microsoft.min.js | 2 + .../keyboard/dist/layouts/latvian.min.js | 1 + .../keyboard/dist/layouts/mongolian.min.js | 1 + .../keyboard/dist/layouts/ms-Albanian.min.js | 1 + .../keyboard/dist/layouts/ms-Arabic.min.js | 1 + .../keyboard/dist/layouts/ms-Armenian.min.js | 1 + .../keyboard/dist/layouts/ms-Assamese.min.js | 1 + .../keyboard/dist/layouts/ms-Azeri.min.js | 1 + .../keyboard/dist/layouts/ms-Bashkir.min.js | 1 + .../dist/layouts/ms-Belarusian.min.js | 1 + .../keyboard/dist/layouts/ms-Belgian.min.js | 1 + .../keyboard/dist/layouts/ms-Bengali.min.js | 1 + .../keyboard/dist/layouts/ms-Bulgarian.min.js | 1 + .../keyboard/dist/layouts/ms-Canadian.min.js | 1 + .../keyboard/dist/layouts/ms-Chinese.min.js | 1 + .../keyboard/dist/layouts/ms-Czech.min.js | 1 + .../keyboard/dist/layouts/ms-Danish.min.js | 1 + .../dist/layouts/ms-Devanagari.min.js | 1 + .../keyboard/dist/layouts/ms-Divehi.min.js | 1 + .../keyboard/dist/layouts/ms-Dutch.min.js | 1 + .../keyboard/dist/layouts/ms-Estonian.min.js | 1 + .../keyboard/dist/layouts/ms-Faeroese.min.js | 1 + .../keyboard/dist/layouts/ms-Finnish.min.js | 1 + .../keyboard/dist/layouts/ms-French.min.js | 1 + .../keyboard/dist/layouts/ms-Gaelic.min.js | 1 + .../keyboard/dist/layouts/ms-Georgian.min.js | 1 + .../keyboard/dist/layouts/ms-German.min.js | 1 + .../keyboard/dist/layouts/ms-Greek.min.js | 1 + .../dist/layouts/ms-Greenlandic.min.js | 1 + .../keyboard/dist/layouts/ms-Gujarati.min.js | 1 + .../keyboard/dist/layouts/ms-Hausa.min.js | 1 + .../keyboard/dist/layouts/ms-Hebrew.min.js | 1 + .../keyboard/dist/layouts/ms-Hindi.min.js | 1 + .../keyboard/dist/layouts/ms-Hungarian.min.js | 1 + .../keyboard/dist/layouts/ms-Icelandic.min.js | 1 + .../keyboard/dist/layouts/ms-Igbo.min.js | 1 + .../keyboard/dist/layouts/ms-Inuktitut.min.js | 1 + .../keyboard/dist/layouts/ms-Irish.min.js | 1 + .../keyboard/dist/layouts/ms-Italian.min.js | 1 + .../dist/layouts/ms-Japanese-Hiragana.min.js | 1 + .../keyboard/dist/layouts/ms-Kannada.min.js | 1 + .../keyboard/dist/layouts/ms-Kazakh.min.js | 1 + .../keyboard/dist/layouts/ms-Korean.min.js | 1 + .../dist/layouts/ms-Kyrgyz-Cyrillic.min.js | 1 + .../keyboard/dist/layouts/ms-Lao.min.js | 1 + .../dist/layouts/ms-Latin-American.min.js | 1 + .../keyboard/dist/layouts/ms-Latvian.min.js | 1 + .../dist/layouts/ms-Lithuanian.min.js | 1 + .../dist/layouts/ms-Luxembourgish.min.js | 1 + .../dist/layouts/ms-Macedonian.min.js | 1 + .../keyboard/dist/layouts/ms-Malayalam.min.js | 1 + .../keyboard/dist/layouts/ms-Maltese.min.js | 1 + .../keyboard/dist/layouts/ms-Maori.min.js | 1 + .../keyboard/dist/layouts/ms-Marathi.min.js | 1 + .../dist/layouts/ms-Mongolian-Cyrillic.min.js | 1 + .../keyboard/dist/layouts/ms-Nepali.min.js | 1 + .../keyboard/dist/layouts/ms-Norwegian.min.js | 1 + .../keyboard/dist/layouts/ms-Oriya.min.js | 1 + .../keyboard/dist/layouts/ms-Pashto.min.js | 1 + .../keyboard/dist/layouts/ms-Persian.min.js | 1 + .../keyboard/dist/layouts/ms-Polish.min.js | 1 + .../dist/layouts/ms-Portuguese.min.js | 1 + .../keyboard/dist/layouts/ms-Punjabi.min.js | 1 + .../keyboard/dist/layouts/ms-Romanian.min.js | 1 + .../keyboard/dist/layouts/ms-Russian.min.js | 1 + .../keyboard/dist/layouts/ms-Sami.min.js | 1 + .../keyboard/dist/layouts/ms-Serbian.min.js | 1 + .../keyboard/dist/layouts/ms-Setswana.min.js | 1 + .../keyboard/dist/layouts/ms-Sinhala.min.js | 1 + .../keyboard/dist/layouts/ms-Slovak.min.js | 1 + .../keyboard/dist/layouts/ms-Slovenian.min.js | 1 + .../keyboard/dist/layouts/ms-Sorbian.min.js | 1 + .../keyboard/dist/layouts/ms-Spanish.min.js | 1 + .../dist/layouts/ms-Swedish-Sami.min.js | 1 + .../keyboard/dist/layouts/ms-Swedish.min.js | 1 + .../dist/layouts/ms-Swiss-German.min.js | 1 + .../keyboard/dist/layouts/ms-Syriac.min.js | 1 + .../keyboard/dist/layouts/ms-Tajik.min.js | 1 + .../keyboard/dist/layouts/ms-Tamil.min.js | 1 + .../keyboard/dist/layouts/ms-Tatar.min.js | 1 + .../keyboard/dist/layouts/ms-Telugu.min.js | 1 + .../keyboard/dist/layouts/ms-Thai.min.js | 1 + .../keyboard/dist/layouts/ms-Tibetan.min.js | 1 + .../keyboard/dist/layouts/ms-Turkish.min.js | 1 + .../keyboard/dist/layouts/ms-Turkmen.min.js | 1 + .../keyboard/dist/layouts/ms-US-Dvorak.min.js | 1 + .../dist/layouts/ms-US-English.min.js | 1 + .../keyboard/dist/layouts/ms-Ukrainian.min.js | 1 + .../dist/layouts/ms-United-Kingdom.min.js | 1 + .../keyboard/dist/layouts/ms-Urdu.min.js | 1 + .../keyboard/dist/layouts/ms-Uyghur.min.js | 1 + .../dist/layouts/ms-Uzbek-Cyrillic.min.js | 1 + .../dist/layouts/ms-Vietnamese.min.js | 1 + .../keyboard/dist/layouts/ms-Wolof.min.js | 1 + .../keyboard/dist/layouts/ms-Yakut.min.js | 1 + .../keyboard/dist/layouts/ms-Yoruba.min.js | 1 + .../keyboard/dist/layouts/persian.min.js | 1 + .../keyboard/dist/layouts/polish.min.js | 1 + .../keyboard/dist/layouts/portuguese.min.js | 1 + .../keyboard/dist/layouts/romanian.min.js | 1 + .../keyboard/dist/layouts/russian.min.js | 1 + .../keyboard/dist/layouts/serbian.min.js | 1 + .../keyboard/dist/layouts/spanish.min.js | 1 + .../keyboard/dist/layouts/swedish.min.js | 1 + .../assets/keyboard/dist/layouts/tamil.min.js | 1 + .../assets/keyboard/dist/layouts/thai.min.js | 1 + .../keyboard/dist/layouts/turkish.min.js | 1 + .../keyboard/dist/layouts/vietnamese.min.js | 1 + .../public/assets/keyboard/index.html | 890 +++ .../assets/keyboard/keyboard.jquery.json | 40 + .../assets/keyboard/languages/README.md | 241 + .../keyboard/languages/_language_template.js | 58 + .../public/assets/keyboard/languages/amh.js | 203 + .../keyboard/languages/ar.untranslated.js | 32 + .../keyboard/languages/as.untranslated.js | 30 + .../keyboard/languages/be.untranslated.js | 30 + .../keyboard/languages/bg.untranslated.js | 30 + .../keyboard/languages/bn.untranslated.js | 30 + .../keyboard/languages/ca.untranslated.js | 30 + .../keyboard/languages/da.untranslated.js | 30 + .../public/assets/keyboard/languages/de.js | 30 + .../public/assets/keyboard/languages/es.js | 29 + .../public/assets/keyboard/languages/fa.js | 54 + .../public/assets/keyboard/languages/fr.js | 30 + .../keyboard/languages/gu.untranslated.js | 30 + .../public/assets/keyboard/languages/he.js | 32 + .../keyboard/languages/hi.untranslated.js | 30 + .../public/assets/keyboard/languages/hu.js | 30 + .../public/assets/keyboard/languages/it.js | 58 + .../keyboard/languages/ja.untranslated.js | 38 + .../keyboard/languages/kn.untranslated.js | 30 + .../public/assets/keyboard/languages/lv.js | 41 + .../keyboard/languages/mn.untranslated.js | 29 + .../keyboard/languages/mr.untranslated.js | 30 + .../public/assets/keyboard/languages/my.js | 62 + .../keyboard/languages/ne.untranslated.js | 30 + .../keyboard/languages/pa.untranslated.js | 30 + .../public/assets/keyboard/languages/pl.js | 30 + .../public/assets/keyboard/languages/pt.js | 39 + .../public/assets/keyboard/languages/ro.js | 30 + .../public/assets/keyboard/languages/ru.js | 30 + .../public/assets/keyboard/languages/sq.js | 40 + .../keyboard/languages/sr.untranslated.js | 30 + .../keyboard/languages/sv.untranslated.js | 30 + .../keyboard/languages/ta.untranslated.js | 30 + .../keyboard/languages/te.untranslated.js | 30 + .../keyboard/languages/th.untranslated.js | 30 + .../keyboard/languages/tr.untranslated.js | 30 + .../keyboard/languages/ur.untranslated.js | 30 + .../keyboard/languages/vi.untranslated.js | 66 + .../keyboard/languages/zh.untranslated.js | 29 + .../keyboard/layouts/_layout_template.js | 34 + .../assets/keyboard/layouts/albanian.js | 74 + .../public/assets/keyboard/layouts/arabic.js | 179 + .../assets/keyboard/layouts/belarusian.js | 43 + .../public/assets/keyboard/layouts/bengali.js | 77 + .../assets/keyboard/layouts/bulgarian.js | 43 + .../public/assets/keyboard/layouts/burmese.js | 43 + .../public/assets/keyboard/layouts/catalan.js | 43 + .../public/assets/keyboard/layouts/chinese.js | 41 + .../public/assets/keyboard/layouts/danish.js | 36 + .../assets/keyboard/layouts/ethiopic.js | 34 + .../public/assets/keyboard/layouts/french.js | 109 + .../public/assets/keyboard/layouts/german.js | 63 + .../public/assets/keyboard/layouts/hebrew.js | 36 + .../public/assets/keyboard/layouts/hindi.js | 42 + .../assets/keyboard/layouts/hungarian.js | 63 + .../assets/keyboard/layouts/hungarianansi.js | 63 + .../assets/keyboard/layouts/japanese.js | 88 + .../layouts/keyboard-layouts-combined.js | 2683 ++++++++ .../layouts/keyboard-layouts-greywyvern.js | 2800 +++++++++ .../layouts/keyboard-layouts-microsoft.js | 5431 +++++++++++++++++ .../public/assets/keyboard/layouts/latvian.js | 41 + .../assets/keyboard/layouts/mongolian.js | 42 + .../assets/keyboard/layouts/ms-Albanian.js | 28 + .../assets/keyboard/layouts/ms-Arabic.js | 79 + .../assets/keyboard/layouts/ms-Armenian.js | 43 + .../assets/keyboard/layouts/ms-Assamese.js | 35 + .../assets/keyboard/layouts/ms-Azeri.js | 43 + .../assets/keyboard/layouts/ms-Bashkir.js | 50 + .../assets/keyboard/layouts/ms-Belarusian.js | 21 + .../assets/keyboard/layouts/ms-Belgian.js | 57 + .../assets/keyboard/layouts/ms-Bengali.js | 57 + .../assets/keyboard/layouts/ms-Bulgarian.js | 65 + .../assets/keyboard/layouts/ms-Canadian.js | 93 + .../assets/keyboard/layouts/ms-Chinese.js | 57 + .../assets/keyboard/layouts/ms-Czech.js | 100 + .../assets/keyboard/layouts/ms-Danish.js | 28 + .../assets/keyboard/layouts/ms-Devanagari.js | 35 + .../assets/keyboard/layouts/ms-Divehi.js | 57 + .../assets/keyboard/layouts/ms-Dutch.js | 28 + .../assets/keyboard/layouts/ms-Estonian.js | 35 + .../assets/keyboard/layouts/ms-Faeroese.js | 28 + .../assets/keyboard/layouts/ms-Finnish.js | 28 + .../assets/keyboard/layouts/ms-French.js | 28 + .../assets/keyboard/layouts/ms-Gaelic.js | 35 + .../assets/keyboard/layouts/ms-Georgian.js | 93 + .../assets/keyboard/layouts/ms-German.js | 57 + .../assets/keyboard/layouts/ms-Greek.js | 216 + .../assets/keyboard/layouts/ms-Greenlandic.js | 35 + .../assets/keyboard/layouts/ms-Gujarati.js | 65 + .../assets/keyboard/layouts/ms-Hausa.js | 35 + .../assets/keyboard/layouts/ms-Hebrew.js | 28 + .../assets/keyboard/layouts/ms-Hindi.js | 35 + .../assets/keyboard/layouts/ms-Hungarian.js | 57 + .../assets/keyboard/layouts/ms-Icelandic.js | 28 + .../public/assets/keyboard/layouts/ms-Igbo.js | 35 + .../assets/keyboard/layouts/ms-Inuktitut.js | 71 + .../assets/keyboard/layouts/ms-Irish.js | 35 + .../assets/keyboard/layouts/ms-Italian.js | 64 + .../keyboard/layouts/ms-Japanese-Hiragana.js | 85 + .../assets/keyboard/layouts/ms-Kannada.js | 35 + .../assets/keyboard/layouts/ms-Kazakh.js | 21 + .../assets/keyboard/layouts/ms-Korean.js | 35 + .../keyboard/layouts/ms-Kyrgyz-Cyrillic.js | 35 + .../public/assets/keyboard/layouts/ms-Lao.js | 28 + .../keyboard/layouts/ms-Latin-American.js | 28 + .../assets/keyboard/layouts/ms-Latvian.js | 71 + .../assets/keyboard/layouts/ms-Lithuanian.js | 93 + .../keyboard/layouts/ms-Luxembourgish.js | 28 + .../assets/keyboard/layouts/ms-Macedonian.js | 57 + .../assets/keyboard/layouts/ms-Malayalam.js | 35 + .../assets/keyboard/layouts/ms-Maltese.js | 71 + .../assets/keyboard/layouts/ms-Maori.js | 21 + .../assets/keyboard/layouts/ms-Marathi.js | 35 + .../keyboard/layouts/ms-Mongolian-Cyrillic.js | 43 + .../assets/keyboard/layouts/ms-Nepali.js | 28 + .../assets/keyboard/layouts/ms-Norwegian.js | 64 + .../assets/keyboard/layouts/ms-Oriya.js | 35 + .../assets/keyboard/layouts/ms-Pashto.js | 28 + .../assets/keyboard/layouts/ms-Persian.js | 21 + .../assets/keyboard/layouts/ms-Polish.js | 64 + .../assets/keyboard/layouts/ms-Portuguese.js | 57 + .../assets/keyboard/layouts/ms-Punjabi.js | 35 + .../assets/keyboard/layouts/ms-Romanian.js | 100 + .../assets/keyboard/layouts/ms-Russian.js | 43 + .../public/assets/keyboard/layouts/ms-Sami.js | 71 + .../assets/keyboard/layouts/ms-Serbian.js | 57 + .../assets/keyboard/layouts/ms-Setswana.js | 72 + .../assets/keyboard/layouts/ms-Sinhala.js | 64 + .../assets/keyboard/layouts/ms-Slovak.js | 57 + .../assets/keyboard/layouts/ms-Slovenian.js | 28 + .../assets/keyboard/layouts/ms-Sorbian.js | 86 + .../assets/keyboard/layouts/ms-Spanish.js | 57 + .../keyboard/layouts/ms-Swedish-Sami.js | 35 + .../assets/keyboard/layouts/ms-Swedish.js | 64 + .../keyboard/layouts/ms-Swiss-German.js | 28 + .../assets/keyboard/layouts/ms-Syriac.js | 57 + .../assets/keyboard/layouts/ms-Tajik.js | 21 + .../assets/keyboard/layouts/ms-Tamil.js | 28 + .../assets/keyboard/layouts/ms-Tatar.js | 35 + .../assets/keyboard/layouts/ms-Telugu.js | 35 + .../public/assets/keyboard/layouts/ms-Thai.js | 87 + .../assets/keyboard/layouts/ms-Tibetan.js | 35 + .../assets/keyboard/layouts/ms-Turkish.js | 71 + .../assets/keyboard/layouts/ms-Turkmen.js | 21 + .../assets/keyboard/layouts/ms-US-Dvorak.js | 65 + .../assets/keyboard/layouts/ms-US-English.js | 79 + .../assets/keyboard/layouts/ms-Ukrainian.js | 71 + .../keyboard/layouts/ms-United-Kingdom.js | 71 + .../public/assets/keyboard/layouts/ms-Urdu.js | 21 + .../assets/keyboard/layouts/ms-Uyghur.js | 43 + .../keyboard/layouts/ms-Uzbek-Cyrillic.js | 21 + .../assets/keyboard/layouts/ms-Vietnamese.js | 35 + .../assets/keyboard/layouts/ms-Wolof.js | 28 + .../assets/keyboard/layouts/ms-Yakut.js | 21 + .../assets/keyboard/layouts/ms-Yoruba.js | 35 + .../public/assets/keyboard/layouts/persian.js | 43 + .../public/assets/keyboard/layouts/polish.js | 36 + .../assets/keyboard/layouts/portuguese.js | 50 + .../assets/keyboard/layouts/romanian.js | 45 + .../public/assets/keyboard/layouts/russian.js | 76 + .../public/assets/keyboard/layouts/serbian.js | 131 + .../public/assets/keyboard/layouts/spanish.js | 77 + .../public/assets/keyboard/layouts/swedish.js | 63 + .../public/assets/keyboard/layouts/tamil.js | 60 + .../public/assets/keyboard/layouts/thai.js | 43 + .../public/assets/keyboard/layouts/turkish.js | 65 + .../assets/keyboard/layouts/vietnamese.js | 44 + .../public/assets/keyboard/package.json | 69 + .../assets/keyboard/testing/qunit-2.2.0.css | 436 ++ .../assets/keyboard/testing/qunit-2.2.0.js | 4841 +++++++++++++++ .../public/assets/keyboard/testing/test.html | 35 + .../public/assets/keyboard/testing/testing.js | 248 + .../public/assets/keyboard/tools/authors.sh | 17 + bower.json | 4 +- 358 files changed, 31160 insertions(+), 2 deletions(-) create mode 100644 app/Resources/public/assets/keyboard/.bower.json create mode 100644 app/Resources/public/assets/keyboard/.editorconfig create mode 100644 app/Resources/public/assets/keyboard/.eslintrc create mode 100644 app/Resources/public/assets/keyboard/.gitattributes create mode 100644 app/Resources/public/assets/keyboard/.gitignore create mode 100644 app/Resources/public/assets/keyboard/.mailmap create mode 100644 app/Resources/public/assets/keyboard/AUTHORS create mode 100644 app/Resources/public/assets/keyboard/CHANGELOG.md create mode 100644 app/Resources/public/assets/keyboard/CONTRIBUTING.md create mode 100644 app/Resources/public/assets/keyboard/Gruntfile.js create mode 100644 app/Resources/public/assets/keyboard/LICENSE create mode 100644 app/Resources/public/assets/keyboard/README.md create mode 100644 app/Resources/public/assets/keyboard/bower.json create mode 100644 app/Resources/public/assets/keyboard/composer.json create mode 100644 app/Resources/public/assets/keyboard/css/images/disabled.svg create mode 100644 app/Resources/public/assets/keyboard/css/images/enabled.svg create mode 100644 app/Resources/public/assets/keyboard/css/images/keyboard.svg create mode 100644 app/Resources/public/assets/keyboard/css/keyboard-basic.css create mode 100644 app/Resources/public/assets/keyboard/css/keyboard-dark.css create mode 100644 app/Resources/public/assets/keyboard/css/keyboard-previewkeyset.css create mode 100644 app/Resources/public/assets/keyboard/css/keyboard.css create mode 100644 app/Resources/public/assets/keyboard/dist/css/keyboard-basic.min.css create mode 100644 app/Resources/public/assets/keyboard/dist/css/keyboard-dark.min.css create mode 100644 app/Resources/public/assets/keyboard/dist/css/keyboard-previewkeyset.min.css create mode 100644 app/Resources/public/assets/keyboard/dist/css/keyboard.min.css create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-all.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-altkeyspopup.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-autocomplete.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-caret.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-extender.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-mobile.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-navigation.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-previewkeyset.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-scramble.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-typing.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/js/jquery.mousewheel.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/amh.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/de.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/es.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/fa.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/fr.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/he.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/hu.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/it.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/lv.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/my.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/pl.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/pt.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/ro.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/ru.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/languages/sq.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/albanian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/arabic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/belarusian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/bengali.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/bulgarian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/burmese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/catalan.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/chinese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/danish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ethiopic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/french.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/german.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/hebrew.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/hindi.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/hungarian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/hungarianansi.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/japanese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/keyboard-layouts-combined.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/keyboard-layouts-greywyvern.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/keyboard-layouts-microsoft.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/latvian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/mongolian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Albanian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Arabic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Armenian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Assamese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Azeri.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Bashkir.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Belarusian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Belgian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Bengali.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Bulgarian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Canadian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Chinese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Czech.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Danish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Devanagari.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Divehi.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Dutch.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Estonian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Faeroese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Finnish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-French.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Gaelic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Georgian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-German.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Greek.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Greenlandic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Gujarati.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Hausa.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Hebrew.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Hindi.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Hungarian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Icelandic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Igbo.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Inuktitut.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Irish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Italian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Japanese-Hiragana.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Kannada.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Kazakh.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Korean.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Kyrgyz-Cyrillic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Lao.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Latin-American.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Latvian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Lithuanian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Luxembourgish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Macedonian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Malayalam.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Maltese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Maori.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Marathi.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Mongolian-Cyrillic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Nepali.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Norwegian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Oriya.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Pashto.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Persian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Polish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Portuguese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Punjabi.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Romanian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Russian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Sami.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Serbian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Setswana.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Sinhala.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Slovak.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Slovenian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Sorbian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Spanish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Swedish-Sami.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Swedish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Swiss-German.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Syriac.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Tajik.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Tamil.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Tatar.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Telugu.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Thai.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Tibetan.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Turkish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Turkmen.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-US-Dvorak.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-US-English.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Ukrainian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-United-Kingdom.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Urdu.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Uyghur.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Uzbek-Cyrillic.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Vietnamese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Wolof.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Yakut.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/ms-Yoruba.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/persian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/polish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/portuguese.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/romanian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/russian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/serbian.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/spanish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/swedish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/tamil.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/thai.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/turkish.min.js create mode 100644 app/Resources/public/assets/keyboard/dist/layouts/vietnamese.min.js create mode 100644 app/Resources/public/assets/keyboard/index.html create mode 100644 app/Resources/public/assets/keyboard/keyboard.jquery.json create mode 100644 app/Resources/public/assets/keyboard/languages/README.md create mode 100644 app/Resources/public/assets/keyboard/languages/_language_template.js create mode 100644 app/Resources/public/assets/keyboard/languages/amh.js create mode 100644 app/Resources/public/assets/keyboard/languages/ar.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/as.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/be.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/bg.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/bn.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/ca.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/da.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/de.js create mode 100644 app/Resources/public/assets/keyboard/languages/es.js create mode 100644 app/Resources/public/assets/keyboard/languages/fa.js create mode 100644 app/Resources/public/assets/keyboard/languages/fr.js create mode 100644 app/Resources/public/assets/keyboard/languages/gu.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/he.js create mode 100644 app/Resources/public/assets/keyboard/languages/hi.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/hu.js create mode 100644 app/Resources/public/assets/keyboard/languages/it.js create mode 100644 app/Resources/public/assets/keyboard/languages/ja.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/kn.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/lv.js create mode 100644 app/Resources/public/assets/keyboard/languages/mn.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/mr.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/my.js create mode 100644 app/Resources/public/assets/keyboard/languages/ne.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/pa.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/pl.js create mode 100644 app/Resources/public/assets/keyboard/languages/pt.js create mode 100644 app/Resources/public/assets/keyboard/languages/ro.js create mode 100644 app/Resources/public/assets/keyboard/languages/ru.js create mode 100644 app/Resources/public/assets/keyboard/languages/sq.js create mode 100644 app/Resources/public/assets/keyboard/languages/sr.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/sv.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/ta.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/te.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/th.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/tr.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/ur.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/vi.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/languages/zh.untranslated.js create mode 100644 app/Resources/public/assets/keyboard/layouts/_layout_template.js create mode 100644 app/Resources/public/assets/keyboard/layouts/albanian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/arabic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/belarusian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/bengali.js create mode 100644 app/Resources/public/assets/keyboard/layouts/bulgarian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/burmese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/catalan.js create mode 100644 app/Resources/public/assets/keyboard/layouts/chinese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/danish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ethiopic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/french.js create mode 100644 app/Resources/public/assets/keyboard/layouts/german.js create mode 100644 app/Resources/public/assets/keyboard/layouts/hebrew.js create mode 100644 app/Resources/public/assets/keyboard/layouts/hindi.js create mode 100644 app/Resources/public/assets/keyboard/layouts/hungarian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/hungarianansi.js create mode 100644 app/Resources/public/assets/keyboard/layouts/japanese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/keyboard-layouts-combined.js create mode 100644 app/Resources/public/assets/keyboard/layouts/keyboard-layouts-greywyvern.js create mode 100644 app/Resources/public/assets/keyboard/layouts/keyboard-layouts-microsoft.js create mode 100644 app/Resources/public/assets/keyboard/layouts/latvian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/mongolian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Albanian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Arabic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Armenian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Assamese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Azeri.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Bashkir.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Belarusian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Belgian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Bengali.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Bulgarian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Canadian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Chinese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Czech.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Danish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Devanagari.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Divehi.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Dutch.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Estonian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Faeroese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Finnish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-French.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Gaelic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Georgian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-German.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Greek.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Greenlandic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Gujarati.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Hausa.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Hebrew.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Hindi.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Hungarian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Icelandic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Igbo.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Inuktitut.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Irish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Italian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Japanese-Hiragana.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Kannada.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Kazakh.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Korean.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Kyrgyz-Cyrillic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Lao.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Latin-American.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Latvian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Lithuanian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Luxembourgish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Macedonian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Malayalam.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Maltese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Maori.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Marathi.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Mongolian-Cyrillic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Nepali.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Norwegian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Oriya.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Pashto.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Persian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Polish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Portuguese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Punjabi.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Romanian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Russian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Sami.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Serbian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Setswana.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Sinhala.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Slovak.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Slovenian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Sorbian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Spanish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Swedish-Sami.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Swedish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Swiss-German.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Syriac.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Tajik.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Tamil.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Tatar.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Telugu.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Thai.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Tibetan.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Turkish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Turkmen.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-US-Dvorak.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-US-English.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Ukrainian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-United-Kingdom.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Urdu.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Uyghur.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Uzbek-Cyrillic.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Vietnamese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Wolof.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Yakut.js create mode 100644 app/Resources/public/assets/keyboard/layouts/ms-Yoruba.js create mode 100644 app/Resources/public/assets/keyboard/layouts/persian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/polish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/portuguese.js create mode 100644 app/Resources/public/assets/keyboard/layouts/romanian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/russian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/serbian.js create mode 100644 app/Resources/public/assets/keyboard/layouts/spanish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/swedish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/tamil.js create mode 100644 app/Resources/public/assets/keyboard/layouts/thai.js create mode 100644 app/Resources/public/assets/keyboard/layouts/turkish.js create mode 100644 app/Resources/public/assets/keyboard/layouts/vietnamese.js create mode 100644 app/Resources/public/assets/keyboard/package.json create mode 100644 app/Resources/public/assets/keyboard/testing/qunit-2.2.0.css create mode 100644 app/Resources/public/assets/keyboard/testing/qunit-2.2.0.js create mode 100644 app/Resources/public/assets/keyboard/testing/test.html create mode 100644 app/Resources/public/assets/keyboard/testing/testing.js create mode 100644 app/Resources/public/assets/keyboard/tools/authors.sh diff --git a/app/Resources/public/assets/keyboard/.bower.json b/app/Resources/public/assets/keyboard/.bower.json new file mode 100644 index 0000000000..43a50a611a --- /dev/null +++ b/app/Resources/public/assets/keyboard/.bower.json @@ -0,0 +1,69 @@ +{ + "name": "keyboard", + "description": "Virtual Keyboard using jQuery UI", + "keywords": [ + "customizable", + "keyboard", + "ui", + "accessibility", + "osk", + "jquery-plugin" + ], + "authors": [ + { + "name": "Jeremy Satterfield", + "homepage": "https://github.com/jsatt" + }, + { + "name": "Rob Garrison", + "homepage": "https://mottie.github.io/Keyboard/", + "email": "wowmotty@gmail.com" + } + ], + "homepage": "https://github.com/Mottie/Keyboard", + "main": [ + "dist/js/jquery.keyboard.js", + "css/keyboard.css" + ], + "ignore": [ + "js/*.js", + "docs/*" + ], + "repository": { + "type": "git", + "url": "git://github.com/Mottie/keyboard.git" + }, + "license": "MIT", + "moduleType": [ + "amd", + "globals", + "node" + ], + "dependencies": { + "jquery": ">=1.4.3", + "jquery-ui": ">=1.9.2" + }, + "devDependencies": { + "grunt": "^1.0.3", + "grunt-cli": "^1.3.1", + "grunt-contrib-clean": "^2.0.0", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-cssmin": "^3.0.0", + "grunt-contrib-jshint": "^2.0.0", + "grunt-contrib-qunit": "^3.0.1", + "grunt-contrib-uglify": "^4.0.0", + "grunt-contrib-watch": "^1.1.0" + }, + "version": "1.28.7", + "_release": "1.28.7", + "_resolution": { + "type": "version", + "tag": "v1.28.7", + "commit": "7d115e954c5ca674e527306d1e81548a7076915e" + }, + "_source": "https://github.com/Mottie/Keyboard.git", + "_target": "^1.28.7", + "_originalSource": "keyboard", + "_direct": true +} \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/.editorconfig b/app/Resources/public/assets/keyboard/.editorconfig new file mode 100644 index 0000000000..b52ff414cf --- /dev/null +++ b/app/Resources/public/assets/keyboard/.editorconfig @@ -0,0 +1,10 @@ +# https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties +root = true + +[*] +indent_style = tab +trim_trailing_whitespace = true +end_of_line = lf +charset = utf-8 +insert_final_newline = true +max_line_length = 100 diff --git a/app/Resources/public/assets/keyboard/.eslintrc b/app/Resources/public/assets/keyboard/.eslintrc new file mode 100644 index 0000000000..ebdac20fa7 --- /dev/null +++ b/app/Resources/public/assets/keyboard/.eslintrc @@ -0,0 +1,29 @@ +{ + "env": { + "browser": true, + "jquery": true + }, + "rules": { + "curly": 1, + "dot-location": [2, "property"], + "eqeqeq": 1, + "linebreak-style": [2, "unix"], + "no-else-return": 1, + "no-eval": 2, + "no-octal": 2, + "no-with": 2, + "radix": 2, + "brace-style": 0, + "camelcase": 0, + "indent": 0, + "no-array-constructor": 2, + "quotes": [2, "single", { + "allowTemplateLiterals": true, + "avoidEscape": true + }], + "spaced-comment": 0, + "arrow-spacing": 2, + "no-var": 0, + "no-unused-vars": 1 + } +} diff --git a/app/Resources/public/assets/keyboard/.gitattributes b/app/Resources/public/assets/keyboard/.gitattributes new file mode 100644 index 0000000000..412eeda78d --- /dev/null +++ b/app/Resources/public/assets/keyboard/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/app/Resources/public/assets/keyboard/.gitignore b/app/Resources/public/assets/keyboard/.gitignore new file mode 100644 index 0000000000..ed8ed3f1a3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/.gitignore @@ -0,0 +1,23 @@ +# lockfiles +package-lock.json +yarn.lock + +# temp stuff +tmp/ +*.tmp +*.bak +_test* + +# logs +*.stackdump +*.log + +# Build +node_modules/ + +# Windows crap +Thumbs.db +Desktop.ini + +# Mac crap +.DS_Store diff --git a/app/Resources/public/assets/keyboard/.mailmap b/app/Resources/public/assets/keyboard/.mailmap new file mode 100644 index 0000000000..fc63d53624 --- /dev/null +++ b/app/Resources/public/assets/keyboard/.mailmap @@ -0,0 +1,4 @@ +Rob Garrison Mottie +Rob Garrison Rob G +Muthiah Annamalai Muthiah Annamalai +Bogdan bsurai diff --git a/app/Resources/public/assets/keyboard/AUTHORS b/app/Resources/public/assets/keyboard/AUTHORS new file mode 100644 index 0000000000..36f10fb963 --- /dev/null +++ b/app/Resources/public/assets/keyboard/AUTHORS @@ -0,0 +1,52 @@ +# Authors ordered by first contribution. + +Rob Garrison +Yury Kotlyarov +Baris Aydinoglu +David Hollifield +Francisco Alcantara +tbvinh +utilisezlinux +José Miguel Sanz +Peter Rekdal +Muthiah Annamalai +Lorenzo Stoakes +BrandonLWhite +shin +ags131 +Marian Pollzien +Alex Florea +Eugene Beschastnov +Leonardo Gatica +Quentin Delcourt +Raido Kuli +Joe +Peter Turczak +ihsoft +Greg Kubisa +Adrian Fish +Ben Schmidt +isfs +The Gitter Badger +Akira Speirs +Chosko +Stefan Riedinger +ohohyeah +uNmAnNeR +Sebastian Hillig += <=> +La Min Ko +Pietro Liuzzo +Simon Legner +Viktor.Mironov +Martin Vavra +Bogdan +Lu, Tom +fossabot +vkurlyan +BastienVerschaete <32361274+BastienVerschaete@users.noreply.github.com> +Josh Gum +lsching17 +0xflotus <0xflotus@gmail.com> + +# Generated by tools/authors.sh diff --git a/app/Resources/public/assets/keyboard/CHANGELOG.md b/app/Resources/public/assets/keyboard/CHANGELOG.md new file mode 100644 index 0000000000..e8c8e60209 --- /dev/null +++ b/app/Resources/public/assets/keyboard/CHANGELOG.md @@ -0,0 +1 @@ +Please refer to the wiki pages for the [change log](https://github.com/Mottie/Keyboard/wiki/Log). diff --git a/app/Resources/public/assets/keyboard/CONTRIBUTING.md b/app/Resources/public/assets/keyboard/CONTRIBUTING.md new file mode 100644 index 0000000000..2b4701189d --- /dev/null +++ b/app/Resources/public/assets/keyboard/CONTRIBUTING.md @@ -0,0 +1,11 @@ +# Contributing to the Keyboard Project + +Please refer to the [contributing wiki page](https://github.com/Mottie/Keyboard/wiki/Contributing) for more details on how to set up Language & layout files: + +* [Layout file](https://github.com/Mottie/Keyboard/wiki/Contributing#layout-file). +* [Keyboard layot object map](https://github.com/Mottie/Keyboard/wiki/Contributing#map). +* [Language](https://github.com/Mottie/Keyboard/wiki/Contributing#language). +* [Set a license](#set-a-license). +* [Saving & Using your file](https://github.com/Mottie/Keyboard/wiki/Contributing#saving--using-your-file). + +# [License](https://github.com/Mottie/Keyboard/blob/master/LICENSE) diff --git a/app/Resources/public/assets/keyboard/Gruntfile.js b/app/Resources/public/assets/keyboard/Gruntfile.js new file mode 100644 index 0000000000..75831811d5 --- /dev/null +++ b/app/Resources/public/assets/keyboard/Gruntfile.js @@ -0,0 +1,275 @@ +/*global module:false */ +module.exports = function(grunt) { + 'use strict'; + + var pkg = grunt.file.readJSON( 'package.json' ), + nomod = '/*** This file is dynamically generated ***\n' + + '█████▄ ▄████▄ █████▄ ▄████▄ ██████ ███████▄ ▄████▄ █████▄ ██ ██████ ██ ██\n' + + '██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n' + + '██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀▀██\n' + + '█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀\n*/\n', + + hintOpts = { + 'jquery': true, + 'browser': true, + 'sub': true, // used by layouts + '-W100': true // ignore "This character may get silently deleted by one or more browsers." + }; + + // Project configuration. + grunt.initConfig({ + + pkg: pkg, + + clean: { + core: { + src: [ + 'dist/css/*', + 'dist/js/*', + 'js/jquery.keyboard.extension-all.js' + ] + }, + layouts: { + src: [ + 'dist/*', + 'js/jquery.keyboard.extension-all.js', + 'layouts/keyboard-layouts-combined.js', + 'layouts/keyboard-layouts-microsoft.js' + ] + }, + languages: { + src: [ 'dist/languages/*' ] + } + }, + + copy: { + js: { + files : [{ + expand: true, + dot: true, + flatten: true, + src: [ 'js/jquery.keyboard.js' ], + dest: 'dist/js/' + }] + } + }, + + concat: { + exts: { + options: { + banner: nomod + '/*! jQuery UI Virtual Keyboard (<%= pkg.version %>) - ALL Extensions + Mousewheel */\n' + }, + files: { + 'js/jquery.keyboard.extension-all.js': [ 'js/jquery.keyboard.extension-*.js', 'js/jquery.mousewheel.js' ] + } + }, + origLayouts: { + options: { + banner: nomod + '/*! jQuery UI Virtual Keyboard - Original Layouts */\n' + }, + files: { + 'layouts/keyboard-layouts-combined.js': [ + 'layouts/*', + '!layouts/_layout_template.js', + '!layouts/ms-*.js', + '!layouts/keyboard-layouts-greywyvern.js', + 'languages/*.js', + '!languages/_language_template.js', + '!languages/*.untranslated.js' + ] + } + }, + msLayouts: { + options: { + banner: nomod + '/*! jQuery UI Virtual Keyboard - Microsoft Generated Layouts */\n' + }, + files: { + 'layouts/keyboard-layouts-microsoft.js': [ + 'layouts/ms-*.js', + '!layouts/_layout_template.js', + 'languages/*.js', + '!languages/_language_template.js', + '!languages/*.untranslated.js' + ] + } + }, + greyLayouts: { + options: { + banner: nomod + '/*! jQuery UI Virtual Keyboard - Microsoft Generated Layouts */\n' + }, + files: { + 'dist/layouts/keyboard-layouts-greywyvern.min.js': [ + 'layouts/keyboard-layouts-greywyvern.js', + 'languages/*.js', + '!languages/_language_template.js', + '!languages/*.untranslated.js' + ] + } + } + }, + + jshint: { + core: { + options: hintOpts, + src: [ 'js/jquery.*.js' ] + }, + layouts: { + options: hintOpts, + src: [ 'js/jquery.*.js', 'layouts/*' ] + }, + languages: { + option: hintOpts, + src: [ 'languages/*' ] + } + }, + + cssmin: { + target: { + files: [{ + expand: true, + flatten: true, + src: ['css/*.css'], + dest: 'dist/css/', + ext: '.min.css' + }] + } + }, + + uglify: { + options: { + output: { + comments: /^!/, + beautify: false + }, + report: 'gzip' + }, + core: { + files: [{ + expand: true, + cwd: '', + src: [ 'js/jquery*.js' ], + dest: 'dist/js/', + ext: '.min.js', + extDot: 'last', + flatten: true + }] + }, + splitLayouts: { + files: [{ + expand: true, + cwd: '', + src: [ 'layouts/*.js', '!layouts/_layout_template.js', '!layouts/keyboard-layouts-greywyvern.js' ], + dest: 'dist/layouts/', + ext: '.min.js', + extDot: 'last', + flatten: true + }] + }, + greyLayout: { + files: [{ + expand: true, + cwd: '', + src: [ 'dist/layouts/keyboard-layouts-greywyvern.min.js' ], + dest: 'dist/layouts/', + ext: '.js', + extDot: 'last', + flatten: true + }] + }, + languages: { + files: [{ + expand: true, + cwd: '', + src: [ 'languages/*.js', '!languages/_language_template.js', '!languages/*.untranslated.js' ], + dest: 'dist/languages/', + ext: '.min.js', + extDot: 'last', + flatten: true + }] + } + }, + + qunit: { + files: ['testing/test.html'] + }, + + watch: { + scripts: { + files: ['js/*.js'], + tasks: ['build'] + } + } + + }); + + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-qunit'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-copy'); + + // Default task. + grunt.registerTask('default', [ + 'clean:core', + 'jshint:core', + 'qunit', + 'copy', + 'concat:exts', + 'cssmin', + 'uglify:core', + 'updateManifest' + ]); + // layout build takes a lot longer to uglify + grunt.registerTask('layouts', [ + 'clean:layouts', + 'jshint:layouts', + 'concat', + 'cssmin', + 'uglify' + ]); + + function escapeRegExp(str) { + return str.replace(/[$()*+\-.\/?[\\\]^{|}]/g, '\\$&'); + } + + // update keyboard.jquery.json file version numbers to match the package.json version + grunt.registerTask( 'updateManifest', function() { + var i, project, + projectFile = [ 'keyboard.jquery.json', 'bower.json' ], + len = projectFile.length; + for ( i = 0; i < len; i++ ) { + if ( !grunt.file.exists( projectFile[ i ] ) ) { + grunt.log.error( 'file ' + projectFile[ i ] + ' not found' ); + return true; // return false to abort the execution + } + project = grunt.file.readJSON( projectFile[ i ] ); // get file as json object + if (i === 0 ) { + // only update version in keyboard.jquery.json + project.version = pkg.version; + } else if (i === 1) { + // update devDependencies in bower + project.devDependencies = pkg.devDependencies; + } + grunt.file.write( projectFile[i], JSON.stringify( project, null, 2 ) ); // serialize it back to file + } + // check internal version number + project = grunt.file.read('js/jquery.keyboard.js'); + if ( + new RegExp(escapeRegExp('/*! jQuery UI Virtual Keyboard v' + pkg.version)).test(project) && + new RegExp(escapeRegExp('base.version = \'' + pkg.version)).test(project) + ) { + console.info('versions all match!'); + } else { + grunt.log.writeln('\n**** version mismatch! ****'['red'].bold); + } + // check internal version number + project = grunt.file.read('README.md'); + if (!new RegExp(escapeRegExp('### Version ' + pkg.version)).test(project)) { + grunt.log.writeln('\n**** Missing Readme entry! ****'['red'].bold); + } + }); + +}; diff --git a/app/Resources/public/assets/keyboard/LICENSE b/app/Resources/public/assets/keyboard/LICENSE new file mode 100644 index 0000000000..75db9161a3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/LICENSE @@ -0,0 +1,45 @@ +========================== +Keyboard code & Caret code +========================== + +MIT License + +Keyboard code: Copyright Rob Garrison & Jeremy Satterfield +Caret code: Copyright C. F., Wong (Cloudgen) + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +========================== +Language & Layout +========================== + +WTFPL + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/app/Resources/public/assets/keyboard/README.md b/app/Resources/public/assets/keyboard/README.md new file mode 100644 index 0000000000..8d3efcecc0 --- /dev/null +++ b/app/Resources/public/assets/keyboard/README.md @@ -0,0 +1,178 @@ +keyboard logoA jQuery on-screen keyboard (OSK) plugin that works in the browser.
+ +Originally posted by Jeremy Satterfield in his [blog](http://jsatt.blogspot.com/2010/01/on-screen-keyboard-widget-using-jquery.html), [jQuery plugins](http://plugins.jquery.com/project/virtual_keyboard) and on [Snipplr](http://snipplr.com/view/21577/virtual-keyboard-widget/). Currently maintained by [Mottie](https://github.com/Mottie/Keyboard). + +[![Bower Version][bower-image]][bower-url] [![NPM Version][npm-image]][npm-url] [![devDependency Status][david-dev-image]][david-dev-url] [![Join the chat at https://gitter.im/Mottie/Keyboard][gitter-image]][gitter] +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FMottie%2FKeyboard.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FMottie%2FKeyboard?ref=badge_shield) + +## Features ([Demo](https://mottie.github.io/Keyboard/)) + +### Ease of use + +* An on-screen virtual keyboard embedded within the browser window which will popup when a specified entry field is focused. +* The user can then type and preview their input before Accepting or Canceling. +* It can be set to always remain open, and to not use a preview. + +### Ease of installation + +* Grab the files as a zip, or from npm or bower - see the [installation](#installation) section below. +* In a minimal setup, the keyboard works by including: + * jQuery + * jQuery UI theme + * (optional) jQuery UI position utility to position the keyboard at the input/textarea element + * Initialize keyboard - no options needed for qwerty keyboard. + +### Ease of setup + +* Attach a keyboard to inputs, textareas or contenteditable elements. +* Add custom keyboard layouts easily. +* Multiple region specific keyboard layouts included in a separate directory. This is a work in progress and slowly growing. +* Add up to four standard key sets to each layout that use the shift and alt keys (default, shift, alt and alt-shift). +* Add any number of optional modifier keys (meta keys) to add more key sets. +* Each meta key set can also include the shift, alt and alt-shift keysets. +* Position the keyboard in any location around the element, or target another element on the page (using jQuery UI position utility). +* Easily modify the key text to any language or symbol. +* Allow direct input or lock the preview window. +* Set a maximum length to the inputted content. +* Scroll through the other key sets using the mouse wheel while hovering over a key to bypass the need to use alt, shift or meta keys. +* Easily type in characters with diacritics. Here are some default combination examples: + * `'` + vowel ( vowel with acute accent, e.g. `'` + `e` = `é` ) + * `` ` `` + vowel ( vowel with grave accent, e.g., `` ` `` + `e` = `è` ) + * `"` + vowel ( vowel with diaresis, e.g., `"` + `e` = `ë` ) + * `^` + vowel ( vowel with circumflex accent, e.g., `^` + `e` = `ê` ) + * `~` + certain letters ( letter with tilde, e.g. `~` + `n` = `ñ`, `~` + `o` = `õ` ) +* Enable, disable or add more diacritic functionality as desired. +* Use callbacks and event triggers that occur when the keyboard is open or closed and when the content has changed, been accepted or canceled. +* Includes ARIA support (may not be fully implemented). +* Built in watermarking. It emulates HTML5's placeholder, if the browser doesn't support it. +* Include validation using a callback function so third-party validation methods can be used. + +### Themes + +* jQuery UI themes are used by default. +* Bootstrap themes ([original](https://jsfiddle.net/Mottie/gfgkb4o1/) or [dark](https://jsfiddle.net/Mottie/emLfqchq/)) can also be applied. +* Or add a completely custom theme (without using jQuery UI position utility): + * [Light](https://jsfiddle.net/Mottie/jsh0377k/) using [keyboard-basic.css](https://github.com/Mottie/Keyboard/blob/master/css/keyboard-basic.css). + * [Dark](https://jsfiddle.net/Mottie/6dmqhLvh/) using [keyboard-dark.css](https://github.com/Mottie/Keyboard/blob/master/css/keyboard-dark.css). + +### Extensions + +* [Alt-keys](https://mottie.github.io/Keyboard/docs/altkeys-popup.html): Show alternate keys in a popup after long-clicking on a key. +* [Autocomplete](https://mottie.github.io/Keyboard/index.html#autocomplete): Integrate with jQuery UI's autocomplete widget. +* [Caret](https://mottie.github.io/Keyboard/index.html#caret): Add a caret with custom styling. +* [Extender](https://mottie.github.io/Keyboard/docs/extender.html): Add a togglable layout (e.g. toggle number pad) +* [Keyset](https://mottie.github.io/Keyboard/docs/preview-keyset.html): Show shift, alt or meta keyset within the virtual keyboard - custom styling. +* [Mobile](https://mottie.github.io/Keyboard/docs/mobile.html): Use with jQuery Mobile & jQuery [Mobile v1.4](https://mottie.github.io/Keyboard/docs/jquery-mobile-1.4.html). +* [Navigate](https://mottie.github.io/Keyboard/docs/navigate.html): Use arrow, home, end & page up/down to navigate inside of the keyboard. +* [Scramble](https://mottie.github.io/Keyboard/docs/scramble.html): Scramble the entire keyset or by row, once or every time the keyboard is opened for added security. +* [Typing](https://mottie.github.io/Keyboard/index.html#typing): Allows you to simulate typing into the keyboard for demo purposes or to assist user input. + +## Dependencies + +* Required + * jQuery 1.4.3+ + * jQuery caret (included with source) +* Optional + * jQuery UI Positioning Utility (optional, if you position the keyboard yourself) + * jQuery UI CSS (can be customized) / Bootstrap CSS + * jQuery mousewheel plugin - allows using mousewheel to scroll through other key sets + * jQuery UI Autocomplete widget - use with jQuery keyboard autocomplete extension + +## Installation + +* Download a [zip](https://github.com/Mottie/Keyboard/archive/master.zip) or [tar.gz](https://github.com/Mottie/Keyboard/archive/master.tar.gz) with all files, for use in the browser. +* Use the files from [CDNJS](https://cdnjs.com/libraries/virtual-keyboard). +* Install using [bower](https://github.com/bower/bower) via `bower install keyboard`. +* Install using [npm](https://www.npmjs.com/) via `npm install virtual-keyboard`. +* Use with: + * [AngularJs](https://github.com/antonio-spinelli/ng-virtual-keyboard) by [antonio-spinelli](https://github.com/antonio-spinelli) via `bower install ng-virtual-keyboard`. + * [Ember](https://github.com/SleepyWerewolf/ember-virtual-keyboard) by [SleepyWerewolf](https://github.com/SleepyWerewolf). + * [React.js](https://github.com/Utzel-Butzel/react-virtual-keyboard) by [Utzel-Butzel](https://github.com/Utzel-Butzel). + * [Ruby On Rails](https://github.com/scicasoft/virtual_keyboard) by [scicasoft](https://github.com/scicasoft) via `gem install virtual_keyboard`. + * [VR Toolbox](https://steamcommunity.com/games/488040/announcements/detail/1431432753528769455). + +## TypeScript + +You can use it with TypeScript. Install [TypeScript](https://www.typescriptlang.org/) and [@types/virtual-keyboard](https://www.npmjs.com/package/@types/virtual-keyboard) into dev dependencies for that. + +## Documentation + +Wiki: [Home](https://github.com/Mottie/Keyboard/wiki/Home) | [FAQ](https://github.com/Mottie/Keyboard/wiki/FAQ) | [Setup](https://github.com/Mottie/Keyboard/wiki/Setup) | [Usage](https://github.com/Mottie/Keyboard/wiki/Usage) | [Options](https://github.com/Mottie/Keyboard/wiki/Options) ( [Layout](https://github.com/Mottie/Keyboard/wiki/Layout), [Language](https://github.com/Mottie/Keyboard/wiki/Language), [Usability](https://github.com/Mottie/Keyboard/wiki/Usability), [Actions](https://github.com/Mottie/Keyboard/wiki/Actions) ) | [Methods](https://github.com/Mottie/Keyboard/wiki/Methods) | [Theme](https://github.com/Mottie/Keyboard/wiki/Theme) | [Log](https://github.com/Mottie/Keyboard/wiki/Log) + +## To Do + +* Add an input mask extension. I think I'll try to make it compatible with [this plugin](https://github.com/RobinHerbots/jquery.inputmask). +* Allow attaching a keyboard to a contenteditable element. Added v1.27.0. + +## Known Problems + +* *ALL*: Only inputs of type "text", "search", "url", "telephone" and "password" support caret positioning ([ref](https://html.spec.whatwg.org/#do-not-apply)). Using this keyboard with any other input type will break the caret left/right, backspace and delete keys (see [issue #241](https://github.com/Mottie/Keyboard/issues/241) for details). +* *Mobile*: If the key press lags behind by one character, it is likely due to the mousewheel plugin. Disable it. See issues [#379](https://github.com/Mottie/Keyboard/issues/379) & [#411](https://github.com/Mottie/Keyboard/issues/411). +* *IE* and *Opera*: + * In a text area with multiple carriage returns, the caret positioning will be off when repositioning it with the mouse. + * Using the right and left arrow keys to navigate through a text area with multiple carriage returns is problematic. The caret doesn't behave like in other browsers when moving from one line to the next. You can always reposition the caret using the mouse. +* *Opera*: When pressing the tab key while inside a textarea, all browsers but Opera add the tab to the virtual keyboard textarea. +* *Safari*: See the QWERTY Text Area demo with a locked input. While using the virtual keyboard to type, it enters the text in backwards! This is because textareas with a "readonly" attribute always returns zero for the caret position. +* *Typing Extension*: + * When pressing "Alt", the key set will change to the alt key set, but the focus will be moved to the browser menu. Pressing it quickly a second time will return the focus. This is built into the browser and it isn't possible (as far as I know) to automatically restore the window focus the first time alt is pressed. + * Holding down the Alt key and trying to type is also not possible since the Windows OS is assuming you are trying to type a shortcut key to access the browser menu. You can still click the keys in the alt key set with the mouse. + * Simulated typing on the keyboard breaks when the CapsLock is on. Still looking for a cross-browser solution. + +## Contributing + +* Install [node.js](http://nodejs.org/) - this includes `npm` (node package manager). +* Run `npm install` in the root directory. +* Run `npm install -g grunt-cli` to install the grunt command-line interface. +* Make any changes to the code. +* Unit tests will be added later. +* Run `grunt` to perform a new build in the `/dist` folder. +* Submit a pull request from a branch other than the `master`. + +## Licensing + +* Keyboard code: [MIT License](http://www.opensource.org/licenses/mit-license.php) for all versions. +* Caret code by C. F., Wong (Cloudgen): [MIT License](http://www.opensource.org/licenses/mit-license.php) +* Layouts files: Most are under [WTFPL](http://sam.zoy.org/wtfpl/), unless the file itself specifies otherwise. + +[npm-url]: https://npmjs.org/package/virtual-keyboard +[npm-image]: https://img.shields.io/npm/v/virtual-keyboard.svg +[david-dev-url]: https://david-dm.org/Mottie/keyboard?type=dev +[david-dev-image]: https://david-dm.org/Mottie/keyboard/dev-status.svg +[bower-url]: http://bower.io/search/?q=keyboard +[bower-image]: https://img.shields.io/bower/v/keyboard.svg +[gitter-image]: https://badges.gitter.im/Join%20Chat.svg +[gitter]: https://gitter.im/Mottie/Keyboard?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + + +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FMottie%2FKeyboard.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FMottie%2FKeyboard?ref=badge_large) + +## Change Log + +Only the latest changes will be shown below, see the [wiki log](https://github.com/Mottie/Keyboard/wiki/Log) to view older versions. + +### Version 1.28.7 (2018-10-09) + +* Core: + * Fix JS Error. Closes [issue #699](https://github.com/Mottie/Keyboard/issues/699). +* Readme: + * Fix Usability (spelling error). See [PR #694](https://github.com/Mottie/Keyboard/pull/694); thanks [@0xflotus](https://github.com/0xflotus)! + * Fix comboRegex (spelling error). See [PR #695](https://github.com/Mottie/Keyboard/pull/695); thanks [@0xflotus](https://github.com/0xflotus)! + +### Version 1.28.6 (2018-09-15) + +* Core: + * Fix tab key insertion in textarea. +* Typing: + * Prevent occasional focus error. +* Meta: + * Update dependencies. + +### Version 1.28.5 (2018-07-28) + +* Core: + * Add mousewheel throttle & key check. See [issue #665](https://github.com/Mottie/Keyboard/issues/665). + * Include enter when restrictInput true; fixes [issue #686](https://github.com/Mottie/Keyboard/issues/686). + * Reduce rebinding focus delay. See [issue #677](https://github.com/Mottie/Keyboard/issues/677). +* Meta: + * Add `CHANGELOG.md` file pointing to the wiki pages. See [issue #685](https://github.com/Mottie/Keyboard/issues/685). + * Update dependencies. diff --git a/app/Resources/public/assets/keyboard/bower.json b/app/Resources/public/assets/keyboard/bower.json new file mode 100644 index 0000000000..1fd48a708b --- /dev/null +++ b/app/Resources/public/assets/keyboard/bower.json @@ -0,0 +1,58 @@ +{ + "name": "keyboard", + "description": "Virtual Keyboard using jQuery UI", + "keywords": [ + "customizable", + "keyboard", + "ui", + "accessibility", + "osk", + "jquery-plugin" + ], + "authors": [ + { + "name": "Jeremy Satterfield", + "homepage": "https://github.com/jsatt" + }, + { + "name": "Rob Garrison", + "homepage": "https://mottie.github.io/Keyboard/", + "email": "wowmotty@gmail.com" + } + ], + "homepage": "https://github.com/Mottie/Keyboard", + "main": [ + "dist/js/jquery.keyboard.js", + "css/keyboard.css" + ], + "ignore": [ + "js/*.js", + "docs/*" + ], + "repository": { + "type": "git", + "url": "git://github.com/Mottie/keyboard.git" + }, + "license": "MIT", + "moduleType": [ + "amd", + "globals", + "node" + ], + "dependencies": { + "jquery": ">=1.4.3", + "jquery-ui": ">=1.9.2" + }, + "devDependencies": { + "grunt": "^1.0.3", + "grunt-cli": "^1.3.1", + "grunt-contrib-clean": "^2.0.0", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-cssmin": "^3.0.0", + "grunt-contrib-jshint": "^2.0.0", + "grunt-contrib-qunit": "^3.0.1", + "grunt-contrib-uglify": "^4.0.0", + "grunt-contrib-watch": "^1.1.0" + } +} \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/composer.json b/app/Resources/public/assets/keyboard/composer.json new file mode 100644 index 0000000000..b4c15a197e --- /dev/null +++ b/app/Resources/public/assets/keyboard/composer.json @@ -0,0 +1,52 @@ +{ + "name": "mottie/keyboard", + "description": "A jQuery on-screen keyboard (OSK) plugin that works in the browser.", + "homepage": "https://github.com/Mottie/Keyboard", + "type": "component", + "license": "MIT", + "require": { + "jquery": "^1.6.0" + }, + "authors": [{ + "name": "Jeremy Satterfield", + "url": "https://github.com/jsatt" + },{ + "name": "Rob Garrison", + "url": "https://github.com/Mottie", + "email": "wowmotty@gmail.com" + }], + "keywords": [ + "customizable", + "keyboard", + "ui", + "accessibility", + "osk", + "jquery-plugin" + ], + "extra": { + "component": { + "scripts": [ + "dist/js/jquery.keyboard.js" + ], + "files": [ + "dist/css/keyboard.min.css", + "dist/css/keyboard-basic.min.css", + "dist/css/keyboard-dark.min.css", + "dist/css/keyboard-previewkeyset.min.css", + "dist/js/jquery.keyboard.js", + "dist/js/jquery.keyboard.min.js", + "dist/js/jquery.keyboard.extension-all.min.js", + "dist/js/jquery.keyboard.extension-altkeyspopup.min.js", + "dist/js/jquery.keyboard.extension-autocomplete.min.js", + "dist/js/jquery.keyboard.extension-caret.min.js", + "dist/js/jquery.keyboard.extension-extender.min.js", + "dist/js/jquery.keyboard.extension-mobile.min.js", + "dist/js/jquery.keyboard.extension-navigation.min.js", + "dist/js/jquery.keyboard.extension-previewkeyset.min.js", + "dist/js/jquery.keyboard.extension-scramble.min.js", + "dist/js/jquery.keyboard.extension-typing.min.js", + "dist/js/jquery.mousewheel.min.js" + ] + } + } +} diff --git a/app/Resources/public/assets/keyboard/css/images/disabled.svg b/app/Resources/public/assets/keyboard/css/images/disabled.svg new file mode 100644 index 0000000000..8a91c4dc21 --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/images/disabled.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/css/images/enabled.svg b/app/Resources/public/assets/keyboard/css/images/enabled.svg new file mode 100644 index 0000000000..44b8ebe132 --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/images/enabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/Resources/public/assets/keyboard/css/images/keyboard.svg b/app/Resources/public/assets/keyboard/css/images/keyboard.svg new file mode 100644 index 0000000000..0d8fcb5597 --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/images/keyboard.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/css/keyboard-basic.css b/app/Resources/public/assets/keyboard/css/keyboard-basic.css new file mode 100644 index 0000000000..79ab8d33df --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/keyboard-basic.css @@ -0,0 +1,196 @@ +/* *** keyboard light theme *** + for when jQuery UI themes are not being used + See https://jsfiddle.net/Mottie/jsh0377k/ + */ +.ui-keyboard { + /* adjust overall keyboard size using "font-size" */ + font-size: 14px; + text-align: center; + background: #fefefe; + border: 1px solid #aaa; + padding: 4px; + + /* include the following setting to place the + keyboard at the bottom of the browser window */ + width: 100%; + height: auto; + left: 0px; + top: auto; + bottom: 0px; + position: fixed; + white-space: nowrap; + overflow-x: auto; + /* see issue #484 */ + -ms-touch-action: manipulation; + touch-action: manipulation; +} +.ui-keyboard-has-focus { + z-index: 16001; +} +.ui-keyboard-button { + border: 1px solid #aaa; + padding: 0 0.5em; + margin: 1px; + min-width: 3em; + height: 3em; + line-height: 3em; + vertical-align: top; + font-family: Helvetica, Arial, sans-serif; + color: #333; + text-align: center; + border-radius: 5px; + -webkit-box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.5); + box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.5); + background: white; + background-image: -webkit-linear-gradient(-90deg, white 0%, #e3e3e3 100%); + background-image: linear-gradient(-90deg, white 0%, #e3e3e3 100%); + cursor: pointer; + overflow: hidden; + -moz-user-focus: ignore; +} +.ui-keyboard-button:not([disabled]):hover { + background: #eee; + background-image: -webkit-linear-gradient(-90deg, #f2f2f2 0%, #d3d3d3 100%); + background-image: linear-gradient(-90deg, #f2f2f2 0%, #d3d3d3 100%); +} +.ui-keyboard-button:not([disabled]):active { + background: #ddd; + background-image: -webkit-linear-gradient(-90deg, #e5e5e5 0%, #d3d3d3 100%); + background-image: linear-gradient(-90deg, #e5e5e5 0%, #d3d3d3 100%); +} +.ui-keyboard-button span { + display: block; + width: 100%; + font-size: 1.2em; + text-align: center; +} +/* make action keys extra-wide */ +.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo) { + min-width: 6em; +} +.ui-keyboard-space { + width: 15em; +} +.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo) span { + font-size: 0.8em; + position: relative; + top: -1em; + left: -1.6em; +} +.ui-keyboard-placeholder { + color: #888; +} +/* disabled or readonly inputs, or use input[disabled='disabled'] { color: #f00; } */ +.ui-keyboard-nokeyboard { + color: #888; + border-color: #888; +} +.ui-keyboard-spacer { + display: inline-block; + width: 1px; + height: 0; + cursor: default; +} +.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 { + -webkit-box-shadow: 1px 1px 3px 0 rgba(213, 133, 18, 0.5); + box-shadow: 1px 1px 3px 0 rgba(213, 133, 18, 0.5); + border-color: #d58512; +} +.ui-keyboard-button.ui-keyboard-combo.ui-state-active { + -webkit-box-shadow: 1px 1px 3px 0 rgba(38, 154, 188, 0.5); + box-shadow: 1px 1px 3px 0 rgba(38, 154, 188, 0.5); + border-color: #269abc; +} +/* (in)valid inputs */ +button.ui-keyboard-accept.ui-keyboard-valid-input { + -webkit-box-shadow: 1px 1px 3px 0 rgba(57, 132, 57, 0.5); + box-shadow: 1px 1px 3px 0 rgba(57, 132, 57, 0.5); + border-color: #398439; +} +button.ui-keyboard-accept.ui-keyboard-valid-input:not([disabled]):hover { + border-color: #4cae4c; +} +button.ui-keyboard-accept.ui-keyboard-invalid-input { + -webkit-box-shadow: 1px 1px 3px 0 rgba(172, 41, 37, 0.5); + box-shadow: 1px 1px 3px 0 rgba(172, 41, 37, 0.5); + border-color: #ac2925; +} +button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):hover { + border-color: #d43f3a; +} +/* unlocked icon (keyboard enabled) */ +button.ui-keyboard-toggle span { + width: .9em; + height: .9em; + display: inline-block; + background-repeat: no-repeat; + background-position: center center; + background-size: contain; + /* light theme unlocked icon - fill: #111 */ + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg=='); +} +/* locked icon (keyboard disabled) */ +button.ui-keyboard-toggle.ui-keyboard-disabled span { + /* light theme locked icon - fill: #111 */ + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4='); +} +.ui-keyboard.ui-keyboard-disabled button:not(.ui-keyboard-toggle), .ui-keyboard.ui-keyboard-disabled input { + opacity: 0.5; +} + +/*** Alt-Keys Popup extension ***/ +/* clickable overlay on top of keyboard to hide the popup */ +.ui-keyboard-overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(238, 238, 238, 0.5); +} +/* the actual popup styling, class names from the css.container option are also added */ +.ui-keyboard-popup { + display: inline-block; + /* default buttons are 2em wide + .1em margin on either side (set in .ui-keyboard-button definition); + so use multiples of 2.2em for a max-width if you don't want any extra white space on the sides, + e.g. 5 buttons * 2.2em = 11em, 6 buttons * 2.2em = 13.2em, etc */ + max-width: 22em; + /* 10 buttons */ +} +.ui-keyboard.ui-keyboard-popup-open .ui-keyboard-keyset .ui-keyboard-button { + /* Disable keys under overlay while popup is open - see #654 */ + pointer-events: none; +} + +/*** Caret extension definition ***/ +/* margin-top => is added to the caret height (top & bottom) */ +.ui-keyboard-caret { + background: #c00; + width: 1px; + margin-top: 3px; +} + +/*** Extender keyboard extension ***/ +div.ui-keyboard-extender { + margin-left: 5px; + margin-right: 10px; +} +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; + /* light theme extender icon - fill: #111 */ + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6IzExMSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzExMSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+'); +} diff --git a/app/Resources/public/assets/keyboard/css/keyboard-dark.css b/app/Resources/public/assets/keyboard/css/keyboard-dark.css new file mode 100644 index 0000000000..0d05f20e39 --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/keyboard-dark.css @@ -0,0 +1,196 @@ +/* *** keyboard dark theme *** + for when jQuery UI themes are not being used + See https://jsfiddle.net/Mottie/6dmqhLvh/ + */ +.ui-keyboard { + /* adjust overall keyboard size using "font-size" */ + font-size: 14px; + text-align: center; + background: #282828; + border: 1px solid #484848; + padding: 4px; + + /* include the following setting to place the + keyboard at the bottom of the browser window */ + width: 100%; + height: auto; + left: 0px; + top: auto; + bottom: 0px; + position: fixed; + white-space: nowrap; + overflow-x: auto; + /* see issue #484 */ + -ms-touch-action: manipulation; + touch-action: manipulation; +} +.ui-keyboard-has-focus { + z-index: 16001; +} +.ui-keyboard-button { + border: 1px solid #404040; + padding: 0 0.5em; + margin: 1px; + min-width: 3em; + height: 3em; + line-height: 3em; + vertical-align: top; + font-family: Helvetica, Arial, sans-serif; + color: #eee; + text-align: center; + border-radius: 5px; + -webkit-box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.5); + box-shadow: 1px 1px 3px 0 rgba(0, 0, 0, 0.5); + background: #444; + background-image: -webkit-linear-gradient(-90deg, #444 0%, #333 100%); + background-image: linear-gradient(-90deg, #444 0%, #333 100%); + cursor: pointer; + overflow: hidden; + -moz-user-focus: ignore; +} +.ui-keyboard-button:not([disabled]):hover { + background: #eee; + background-image: -webkit-linear-gradient(-90deg, #4f4f4f 0%, #444 100%); + background-image: linear-gradient(-90deg, #4f4f4f 0%, #444 100%); +} +.ui-keyboard-button:not([disabled]):active { + background: #ddd; + background-image: -webkit-linear-gradient(-90deg, #555 0%, #5f5f5f 100%); + background-image: linear-gradient(-90deg, #555 0%, #5f5f5f 100%); +} +.ui-keyboard-button span { + display: block; + width: 100%; + font-size: 1.2em; + text-align: center; +} +/* make action keys extra-wide */ +.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo) { + min-width: 6em; +} +.ui-keyboard-space { + width: 15em; +} +.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo) span { + font-size: 0.8em; + position: relative; + top: -1em; + left: -1.6em; +} +.ui-keyboard-placeholder { + color: #888; +} +/* disabled or readonly inputs, or use input[disabled='disabled'] { color: #f00; } */ +.ui-keyboard-nokeyboard { + color: #888; + border-color: #888; +} +.ui-keyboard-spacer { + display: inline-block; + width: 1px; + height: 0; + cursor: default; +} +.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 { + -webkit-box-shadow: 1px 1px 3px 0 rgba(213, 133, 18, 0.5); + box-shadow: 1px 1px 3px 0 rgba(213, 133, 18, 0.5); + border-color: #d58512; +} +.ui-keyboard-button.ui-keyboard-combo.ui-state-active { + -webkit-box-shadow: 1px 1px 3px 0 rgba(38, 154, 188, 0.5); + box-shadow: 1px 1px 3px 0 rgba(38, 154, 188, 0.5); + border-color: #269abc; +} +/* (in)valid inputs */ +button.ui-keyboard-accept.ui-keyboard-valid-input { + -webkit-box-shadow: 1px 1px 3px 0 rgba(57, 132, 57, 0.5); + box-shadow: 1px 1px 3px 0 rgba(57, 132, 57, 0.5); + border-color: #398439; +} +button.ui-keyboard-accept.ui-keyboard-valid-input:not([disabled]):hover { + border-color: #4cae4c; +} +button.ui-keyboard-accept.ui-keyboard-invalid-input { + -webkit-box-shadow: 1px 1px 3px 0 rgba(172, 41, 37, 0.5); + box-shadow: 1px 1px 3px 0 rgba(172, 41, 37, 0.5); + border-color: #ac2925; +} +button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):hover { + border-color: #d43f3a; +} +/* unlocked icon (keyboard enabled) */ +button.ui-keyboard-toggle span { + width: .9em; + height: .9em; + display: inline-block; + background-repeat: no-repeat; + background-position: center center; + background-size: contain; + /* dark theme unlocked icon - fill: #eee */ + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg=='); +} +/* locked icon (keyboard disabled) */ +button.ui-keyboard-toggle.ui-keyboard-disabled span { + /* dark theme locked icon - fill: #eee */ + 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: 0.5; +} + +/*** Alt-Keys Popup extension ***/ +/* clickable overlay on top of keyboard to hide the popup */ +.ui-keyboard-overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0.5); +} +/* the actual popup styling, class names from the css.container option are also added */ +.ui-keyboard-popup { + display: inline-block; + /* default buttons are 2em wide + .1em margin on either side (set in .ui-keyboard-button definition); + so use multiples of 2.2em for a max-width if you don't want any extra white space on the sides, + e.g. 5 buttons * 2.2em = 11em, 6 buttons * 2.2em = 13.2em, etc */ + max-width: 22em; + /* 10 buttons */ +} +.ui-keyboard.ui-keyboard-popup-open .ui-keyboard-keyset .ui-keyboard-button { + /* Disable keys under overlay while popup is open - see #654 */ + pointer-events: none; +} + +/*** Caret extension definition ***/ +/* margin-top => is added to the caret height (top & bottom) */ +.ui-keyboard-caret { + background: #c00; + width: 1px; + margin-top: 3px; +} + +/*** Extender keyboard extension ***/ +div.ui-keyboard-extender { + margin-left: 5px; + margin-right: 10px; +} +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; + /* dark theme extender icon - fill: #eee */ + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6I2VlZSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2VlZSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+'); +} diff --git a/app/Resources/public/assets/keyboard/css/keyboard-previewkeyset.css b/app/Resources/public/assets/keyboard/css/keyboard-previewkeyset.css new file mode 100644 index 0000000000..c93ba1ebf8 --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/keyboard-previewkeyset.css @@ -0,0 +1,44 @@ +/* basic previewKeyset setup - modify as desired */ +.ui-keyboard-keyset .ui-keyboard-button { + position: relative; +} +/* show mini-shift keyset with normal keyset */ +.ui-keyboard-keyset-normal .ui-keyboard-button::after { + content: attr(data-shift); + font-size: 0.6em; + color: #999; + position: absolute; + top: -1em; + left: 2px; + z-index: 200; +} +/* show mini-normal keyset with shift keyset */ +.ui-keyboard-keyset-shift .ui-keyboard-button::after { + content: attr(data-normal); + font-size: 0.6em; + color: #999; + position: absolute; + top: -1em; + left: 2px; + z-index: 200; +} +/* show mini-normal keyset with alt keyset */ +.ui-keyboard-keyset-alt .ui-keyboard-button::after { + content: attr(data-alt-shift); + font-size: 0.6em; + color: #999; + position: absolute; + top: -1em; + left: 2px; + z-index: 200; +} +/* show mini-alt-shift keyset with alt-shift keyset */ +.ui-keyboard-keyset-alt-shift .ui-keyboard-button::after { + content: attr(data-alt); + font-size: 0.6em; + color: #999; + position: absolute; + top: -1em; + left: 2px; + z-index: 200; +} diff --git a/app/Resources/public/assets/keyboard/css/keyboard.css b/app/Resources/public/assets/keyboard/css/keyboard.css new file mode 100644 index 0000000000..322fbf3034 --- /dev/null +++ b/app/Resources/public/assets/keyboard/css/keyboard.css @@ -0,0 +1,337 @@ +/* keyboard - jQuery UI Widget */ +.ui-keyboard { + text-align: center; + padding: .3em; + position: absolute; + left: 0; + top: 0; + z-index: 16000; + /* see issue #484 */ + -ms-touch-action: manipulation; + touch-action: manipulation; +} +.ui-keyboard-has-focus { + z-index: 16001; +} +.ui-keyboard div { + font-size: 1.1em; +} +.ui-keyboard[contenteditable] { + white-space: pre; +} + +.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; +} +/* see http://nicolasgallagher.com/another-css-image-replacement-technique/ */ +.ui-keyboard-space span, .ui-keyboard-empty span { + font: 0/0 a; + text-shadow: none; + color: transparent; +} +.ui-keyboard-preview-wrapper { + text-align: center; + position: relative; + overflow: hidden; +} +/* width is calculated in IE, since 99% = 99% full browser width =( */ +.ui-keyboard-preview { + text-align: left; + margin: 0 0 3px 0; + 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; +} +/* disabled or readonly inputs, or use + input[disabled='disabled'] { color: #f00; } */ +.ui-keyboard-nokeyboard { + color: #888; + border-color: #888; +} +.ui-keyboard-spacer { + display: inline-block; + width: 1px; + height: 0; + cursor: default; +} + +.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; +} + +/* (in)valid inputs */ +button.ui-keyboard-accept.ui-keyboard-valid-input { + border-color: #0c0; + background: #080; + color: #fff; +} +button.ui-keyboard-accept.ui-keyboard-valid-input:not([disabled]):hover { + background: #0a0; +} +button.ui-keyboard-accept.ui-keyboard-invalid-input { + border-color: #c00; + background: #800; + color: #fff; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):hover { + background: #a00; +} + +/*** Caret extension definition ***/ +/* margin-top => is added to the caret height (top & bottom) */ +.ui-keyboard-caret { + background: #c00; + width: 1px; + margin-top: 3px; +} + +/*** jQuery Mobile definitions ***/ +/* jQuery Mobile styles - need wider buttons because of font size and + text-overflow:ellipsis */ +div.ui-body.ui-keyboard button.ui-keyboard-button.ui-btn { + padding: 0.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; /* hides the ellipsis */ +} +.ui-body .ui-keyboard-keyset { + line-height: 0.5em; +} +.ui-body input.ui-input-text, .ui-body textarea.ui-input-text { + width: 95%; +} + +/* over-ride padding set by mobile ui theme - needed because the mobile script + wraps button text with several more spans */ +.ui-body .ui-btn-inner { + height: 2em; + padding: 0.2em 0; + margin: 0; +} +.ui-body .ui-btn { + margin: 0; + font-size: 13px; /* mobile default size is 13px */ +} + +/* override Bootstrap excessive button padding */ +button.ui-keyboard-button.btn { + padding: 1px 6px; +} + +/* enable/disable icons */ +button.ui-keyboard-toggle span { + width: .8em; + height: .8em; + display: inline-block; + background-repeat: no-repeat; + background-position: center center; + background-size: contain; +} +/* unlocked icon (keyboard enabled) */ +button.ui-keyboard-toggle span { + /* light theme unlocked icon - fill: #111 */ + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==); +} +.ui-keyboard-dark-theme button.ui-keyboard-toggle span { + /* dark theme unlocked icon - fill: #eee */ + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==); +} + +/* locked icon (keyboard disabled) */ +button.ui-keyboard-toggle.ui-keyboard-disabled span { + /* light theme locked icon - fill: #111 */ + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4=); +} +.ui-keyboard-dark-theme button.ui-keyboard-toggle.ui-keyboard-disabled span { + /* dark theme locked icon - fill: #eee */ + 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: 0.5; +} + +/*** Alt-Keys Popup extension ***/ +/* clickable overlay on top of keyboard to hide the popup */ +.ui-keyboard-overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0.5); +} +/* the actual popup styling, class names from the css.container option are also + added */ +.ui-keyboard-popup { + display: inline-block; + /* default buttons are 2em wide + .1em margin on either side (set in + .ui-keyboard-button definition); so use multiples of 2.2em for a max-width + if you don't want any extra white space on the sides, e.g. + 5 buttons * 2.2em = 11em, + 6 buttons * 2.2em = 13.2em, etc + */ + max-width: 22em; /* 10 buttons */ +} +.ui-keyboard.ui-keyboard-popup-open .ui-keyboard-keyset .ui-keyboard-button { + /* Disable keys under overlay while popup is open - see #654 */ + pointer-events: none; +} + +/*** Extender keyboard extension ***/ +div.ui-keyboard-extender { + 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; + /* light theme extender icon - fill: #111 */ + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6IzExMSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzExMSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+); +} +.ui-keyboard-dark-theme button.ui-keyboard-extender span { + /* dark theme extender icon - fill: #eee */ + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6I2VlZSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2VlZSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+); +} + +/* Media Queries (optimized for jQuery UI themes; + may be slightly off in jQuery Mobile themes) */ +/* 240 x 320 (small phone) */ +@media all and (max-width: 319px) { + .ui-keyboard div { + font-size: 9px; + } + .ui-keyboard .ui-keyboard-input { + font-size: 12px; + } + /* I don't own an iPhone so I have no idea how small this really is... is it + even clickable with your finger? */ + .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: 0.3em 0; + } +} + +/* 320 x 480 (iPhone) */ +@media all and (min-width: 320px) and (max-width: 479px) { + .ui-keyboard div { + font-size: 9px; + } + .ui-keyboard .ui-keyboard-input { + font-size: 14px; + } + /* I don't own an iPhone so I have no idea how small this really is... is it + even clickable with your finger? */ + .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: 0.7em 0; + } +} + +/* 480 x 640 (small tablet) */ +@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: 0.5em 0; + } +} diff --git a/app/Resources/public/assets/keyboard/dist/css/keyboard-basic.min.css b/app/Resources/public/assets/keyboard/dist/css/keyboard-basic.min.css new file mode 100644 index 0000000000..20567ea16e --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/css/keyboard-basic.min.css @@ -0,0 +1 @@ +.ui-keyboard{font-size:14px;text-align:center;background:#fefefe;border:1px solid #aaa;padding:4px;width:100%;height:auto;left:0;top:auto;bottom:0;position:fixed;white-space:nowrap;overflow-x:auto;-ms-touch-action:manipulation;touch-action:manipulation}.ui-keyboard-has-focus{z-index:16001}.ui-keyboard-button{border:1px solid #aaa;padding:0 .5em;margin:1px;min-width:3em;height:3em;line-height:3em;vertical-align:top;font-family:Helvetica,Arial,sans-serif;color:#333;text-align:center;border-radius:5px;-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.5);box-shadow:1px 1px 3px 0 rgba(0,0,0,.5);background:#fff;background-image:-webkit-linear-gradient(-90deg,#fff 0,#e3e3e3 100%);background-image:linear-gradient(-90deg,#fff 0,#e3e3e3 100%);cursor:pointer;overflow:hidden;-moz-user-focus:ignore}.ui-keyboard-button:not([disabled]):hover{background:#eee;background-image:-webkit-linear-gradient(-90deg,#f2f2f2 0,#d3d3d3 100%);background-image:linear-gradient(-90deg,#f2f2f2 0,#d3d3d3 100%)}.ui-keyboard-button:not([disabled]):active{background:#ddd;background-image:-webkit-linear-gradient(-90deg,#e5e5e5 0,#d3d3d3 100%);background-image:linear-gradient(-90deg,#e5e5e5 0,#d3d3d3 100%)}.ui-keyboard-button span{display:block;width:100%;font-size:1.2em;text-align:center}.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo){min-width:6em}.ui-keyboard-space{width:15em}.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo) span{font-size:.8em;position:relative;top:-1em;left:-1.6em}.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-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{-webkit-box-shadow:1px 1px 3px 0 rgba(213,133,18,.5);box-shadow:1px 1px 3px 0 rgba(213,133,18,.5);border-color:#d58512}.ui-keyboard-button.ui-keyboard-combo.ui-state-active{-webkit-box-shadow:1px 1px 3px 0 rgba(38,154,188,.5);box-shadow:1px 1px 3px 0 rgba(38,154,188,.5);border-color:#269abc}button.ui-keyboard-accept.ui-keyboard-valid-input{-webkit-box-shadow:1px 1px 3px 0 rgba(57,132,57,.5);box-shadow:1px 1px 3px 0 rgba(57,132,57,.5);border-color:#398439}button.ui-keyboard-accept.ui-keyboard-valid-input:not([disabled]):hover{border-color:#4cae4c}button.ui-keyboard-accept.ui-keyboard-invalid-input{-webkit-box-shadow:1px 1px 3px 0 rgba(172,41,37,.5);box-shadow:1px 1px 3px 0 rgba(172,41,37,.5);border-color:#ac2925}button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):hover{border-color:#d43f3a}button.ui-keyboard-toggle span{width:.9em;height:.9em;display:inline-block;background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==)}button.ui-keyboard-toggle.ui-keyboard-disabled span{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+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(238,238,238,.5)}.ui-keyboard-popup{display:inline-block;max-width:22em}.ui-keyboard.ui-keyboard-popup-open .ui-keyboard-keyset .ui-keyboard-button{pointer-events:none}.ui-keyboard-caret{background:#c00;width:1px;margin-top:3px}div.ui-keyboard-extender{margin-left:5px;margin-right:10px}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,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6IzExMSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzExMSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+)} \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/dist/css/keyboard-dark.min.css b/app/Resources/public/assets/keyboard/dist/css/keyboard-dark.min.css new file mode 100644 index 0000000000..b8b451e4de --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/css/keyboard-dark.min.css @@ -0,0 +1 @@ +.ui-keyboard{font-size:14px;text-align:center;background:#282828;border:1px solid #484848;padding:4px;width:100%;height:auto;left:0;top:auto;bottom:0;position:fixed;white-space:nowrap;overflow-x:auto;-ms-touch-action:manipulation;touch-action:manipulation}.ui-keyboard-has-focus{z-index:16001}.ui-keyboard-button{border:1px solid #404040;padding:0 .5em;margin:1px;min-width:3em;height:3em;line-height:3em;vertical-align:top;font-family:Helvetica,Arial,sans-serif;color:#eee;text-align:center;border-radius:5px;-webkit-box-shadow:1px 1px 3px 0 rgba(0,0,0,.5);box-shadow:1px 1px 3px 0 rgba(0,0,0,.5);background:#444;background-image:-webkit-linear-gradient(-90deg,#444 0,#333 100%);background-image:linear-gradient(-90deg,#444 0,#333 100%);cursor:pointer;overflow:hidden;-moz-user-focus:ignore}.ui-keyboard-button:not([disabled]):hover{background:#eee;background-image:-webkit-linear-gradient(-90deg,#4f4f4f 0,#444 100%);background-image:linear-gradient(-90deg,#4f4f4f 0,#444 100%)}.ui-keyboard-button:not([disabled]):active{background:#ddd;background-image:-webkit-linear-gradient(-90deg,#555 0,#5f5f5f 100%);background-image:linear-gradient(-90deg,#555 0,#5f5f5f 100%)}.ui-keyboard-button span{display:block;width:100%;font-size:1.2em;text-align:center}.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo){min-width:6em}.ui-keyboard-space{width:15em}.ui-keyboard-actionkey:not(.ui-keyboard-dec):not(.ui-keyboard-combo) span{font-size:.8em;position:relative;top:-1em;left:-1.6em}.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-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{-webkit-box-shadow:1px 1px 3px 0 rgba(213,133,18,.5);box-shadow:1px 1px 3px 0 rgba(213,133,18,.5);border-color:#d58512}.ui-keyboard-button.ui-keyboard-combo.ui-state-active{-webkit-box-shadow:1px 1px 3px 0 rgba(38,154,188,.5);box-shadow:1px 1px 3px 0 rgba(38,154,188,.5);border-color:#269abc}button.ui-keyboard-accept.ui-keyboard-valid-input{-webkit-box-shadow:1px 1px 3px 0 rgba(57,132,57,.5);box-shadow:1px 1px 3px 0 rgba(57,132,57,.5);border-color:#398439}button.ui-keyboard-accept.ui-keyboard-valid-input:not([disabled]):hover{border-color:#4cae4c}button.ui-keyboard-accept.ui-keyboard-invalid-input{-webkit-box-shadow:1px 1px 3px 0 rgba(172,41,37,.5);box-shadow:1px 1px 3px 0 rgba(172,41,37,.5);border-color:#ac2925}button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):hover{border-color:#d43f3a}button.ui-keyboard-toggle span{width:.9em;height:.9em;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}.ui-keyboard.ui-keyboard-popup-open .ui-keyboard-keyset .ui-keyboard-button{pointer-events:none}.ui-keyboard-caret{background:#c00;width:1px;margin-top:3px}div.ui-keyboard-extender{margin-left:5px;margin-right:10px}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+)} \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/dist/css/keyboard-previewkeyset.min.css b/app/Resources/public/assets/keyboard/dist/css/keyboard-previewkeyset.min.css new file mode 100644 index 0000000000..51b843fa95 --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/css/keyboard-previewkeyset.min.css @@ -0,0 +1 @@ +.ui-keyboard-keyset .ui-keyboard-button{position:relative}.ui-keyboard-keyset-normal .ui-keyboard-button::after{content:attr(data-shift);font-size:.6em;color:#999;position:absolute;top:-1em;left:2px;z-index:200}.ui-keyboard-keyset-shift .ui-keyboard-button::after{content:attr(data-normal);font-size:.6em;color:#999;position:absolute;top:-1em;left:2px;z-index:200}.ui-keyboard-keyset-alt .ui-keyboard-button::after{content:attr(data-alt-shift);font-size:.6em;color:#999;position:absolute;top:-1em;left:2px;z-index:200}.ui-keyboard-keyset-alt-shift .ui-keyboard-button::after{content:attr(data-alt);font-size:.6em;color:#999;position:absolute;top:-1em;left:2px;z-index:200} \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/dist/css/keyboard.min.css b/app/Resources/public/assets/keyboard/dist/css/keyboard.min.css new file mode 100644 index 0000000000..74e9e951bc --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/css/keyboard.min.css @@ -0,0 +1 @@ +.ui-keyboard{text-align:center;padding:.3em;position:absolute;left:0;top:0;z-index:16000;-ms-touch-action:manipulation;touch-action:manipulation}.ui-keyboard-has-focus{z-index:16001}.ui-keyboard div{font-size:1.1em}.ui-keyboard[contenteditable]{white-space:pre}.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 0;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-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:not([disabled]):hover{background:#0a0}button.ui-keyboard-accept.ui-keyboard-invalid-input{border-color:#c00;background:#800;color:#fff;opacity:.5}button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):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}button.ui-keyboard-toggle span{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==)}.ui-keyboard-dark-theme button.ui-keyboard-toggle span{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,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4=)}.ui-keyboard-dark-theme 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}.ui-keyboard.ui-keyboard-popup-open .ui-keyboard-keyset .ui-keyboard-button{pointer-events:none}div.ui-keyboard-extender{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,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6IzExMSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzExMSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+)}.ui-keyboard-dark-theme button.ui-keyboard-extender span{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/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-all.min.js b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-all.min.js new file mode 100644 index 0000000000..594ba25de8 --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-all.min.js @@ -0,0 +1,5 @@ +/*! jQuery UI Virtual Keyboard (1.28.7) - ALL Extensions + Mousewheel */ +/*! jQuery UI Virtual Keyboard Alt Key Popup v2.0.0 */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(b){"use strict";var f=b.keyboard;b.extend(f.css,{altKeyPopup:"ui-keyboard-popup",altKeyOverlay:"ui-keyboard-overlay",altKeyPopupOpen:"ui-keyboard-popup-open"}),f.altKeys=b.extend({a:"å æ ā ă ą à á â ã ä",A:"Å Æ Ā Ă Ą À Á  à Ä",c:"ç ć ĉ ċ č",C:"Ç Ć Ĉ Ċ Č",d:"ď ð ď",D:"Ď Ð Ď",e:"ė ę ĕ ě ə è é ê ë ē",E:"Ė Ę Ĕ Ě Ǝ È É Ê Ë Ē",g:"ģ ğ ĝ ġ",G:"Ģ Ğ Ĝ Ġ",h:"ĥ ħ",H:"Ĥ Ħ",i:"ı į ī ï î í ì ĩ ĭ",I:"İ Į Ī Ï Î Í Ì Ĩ Ĭ",j:"ĵ",J:"Ĵ",k:"ķ",K:"Ķ",l:"Ł Ľ Ļ Ĺ Ŀ",L:"ł ľ ļ ĺ ŀ",n:"ʼn ň ņ ń ñ",N:"ʼn Ň Ņ Ń Ñ",o:"œ ő ø ö õ ô ó ò ō ŏ",O:"Œ Ő Ø Ö Õ Ô Ó Ò Ō Ŏ",r:"ŕ ř ŗ",R:"Ŕ Ř Ŗ",s:"ś š ş ß § ŝ",S:"Ś Š Ş ẞ § Ŝ",t:"þ ť ț ţ ŧ",T:"Þ Ť Ț Ţ Ŧ",u:"ų ű ů ū ü û ú ù ũ ŭ",U:"Ų Ű Ů Ū Ü Û Ú Ù Ũ Ŭ",w:"ŵ",W:"Ŵ",y:"ý",Y:"Ý",z:"ź ż ž",Z:"Ź Ż Ž","!":"¡",$:"€ £ ¤ ¥ ¢ ₡ ₱ ₩ ₹ ₪ ₭ ₮ ₦ ₤","?":"¿","'":"〈 「 『 “",'"':"〉 」 』 ”","(":"《 【 〔",")":"》 】 〕"},f.altKeys),b.fn.addAltKeyPopup=function(e){var t={holdTime:500,popupVisible:"popup-visible",popupHidden:"popup-hidden",popupPosition:null};return this.each(function(){var y=b(this).data("keyboard");if(y){if(y.altkeypopup_options=b.extend({},t,y.altkeypopup_options,e),y.altkeypopup_namespace)return y.altkeypopup_setup();y.altkeypopup_namespace=y.namespace+"AltKeyPopup",y.extensionNamespace.push(y.altkeypopup_namespace),y.altkeypopup_setup=function(){var a,e="mousedown touchstart ".split(" ").join(y.altkeypopup_namespace+" "),t="mouseup touchend touchcancel ".split(" ").join(y.altkeypopup_namespace+" ");y.options.repeatRate=0,y.unbindButton(y.altkeypopup_namespace).bindButton(e,function(){clearTimeout(a);var e=b(this),t=e.attr("data-value")||"",n=y.altkeypopup_options.holdTime;t in f.altKeys&&(n?a=setTimeout(function(){y.altKeyPopup_popup(t,e)},n):y.altKeyPopup_popup(t,e))}).bindButton(t,function(){clearTimeout(a)}),y.altkeypopup_blockingFlag=!1,y.$preview.unbind("keypress keydown keyup ".split(" ").join(y.altkeypopup_namespace+" ").trim()).bind("keypress keydown keyup ".split(" ").join(y.altkeypopup_namespace+" "),function(e){if("keyup"===e.type)return clearTimeout(a),y.altkeypopup_blockingFlag=!1,"Escape"!==e.key;var t=f.builtLayouts[y.layout],n=b(e.target),o=e.key,i=e.key;return"keydown"===e.type&&i in f.altKeys?y.altkeypopup_blockingFlag!==o&&(y.altkeypopup_blockingFlag=o,!0):y.altkeypopup_blockingFlag?(t.hasMappedKeys&&t.mappedKeys.hasOwnProperty(i)&&(i=t.mappedKeys[i]),i in f.altKeys&&(clearTimeout(a),a=setTimeout(function(){y.altkeypopup_blockingFlag===o&&y.altKeyPopup_popup(i,n)},y.altkeypopup_options.holdTime)),!0):void 0})},y.altKeyPopup_close=function(){y.altkeypopup_blockingFlag=!1,y.altKeyPopup_$overlay=null,setTimeout(function(){if(y.$keyboard.length){y.$keyboard.removeClass(f.css.altKeyPopupOpen);var e=y.$keyboard.find("."+f.css.altKeyOverlay);e&&e.remove()}},1),b(document).unbind(y.altkeypopup_namespace),y.$preview.focus(),y.options.ignoreEsc=y.altKeyPopup_savedIgnoreEsc,y.$el.trigger(y.altkeypopup_options.popupHidden,[y])},y.altKeyPopup_popup=function(e,t){if(!y.$keyboard.find("."+f.css.altKeyOverlay).length){var n,o,i,a,s,r,p,u,l,d=f.css,c={$kb:y.$keyboard,kbWidth:y.$keyboard.outerWidth(),kbHeight:y.$keyboard.outerHeight(),$key:t};y.altKeyPopup_$overlay=b('
').css({width:c.kbWidth,height:c.kbHeight}).appendTo(y.$keyboard).bind("click touchstart",function(){y.altKeyPopup_close()}),l="inactive hidden ".split(" ").join(y.altkeypopup_namespace+" "),y.$keyboard.addClass(f.css.altKeyPopupOpen),y.$el.unbind(l).bind(l,function(){y.altKeyPopup_close()}),"bksp"!==e&&f.keyaction.bksp(y),o=b('
'),n=f.altKeys[e].split(/\s+/),y.buildRow(o,0,n,[]),i=o.appendTo(y.altKeyPopup_$overlay).children().bind("mousedown touchstart",function(){y.altKeyPopup_close()}).bind("mouseover mouseleave",function(e){i.removeClass(y.options.css.buttonHover),"mouseleave"!==e.type&&b(this).addClass(y.options.css.buttonHover)}),y.altKeyPopup_navigate(!0),y.altKeyPopup_savedIgnoreEsc=y.options.ignoreEsc,y.options.ignoreEsc=!0,b(document).unbind(y.altkeypopup_namespace).bind("keydown"+y.altkeypopup_namespace,function(){return!1}).bind("keyup"+y.altkeypopup_namespace,function(e){return"Escape"===e.key?(e.which=0,y.altKeyPopup_close()):y.altKeyPopup_navigate(e),!1}),p=(c.$popup=o).outerWidth(),(a=t.position().left-p/2)+p>c.kbWidth&&(a=c.kbWidth-p)<0&&o.css({width:c.kbWidth,height:"auto"}),s=t.position().top-t.outerHeight()-5,u=o.outerHeight(),r=y.$keyboard.find("."+d.keySet).position().top,s+u>c.kbHeight&&(s=c.kbHeight-u)').appendTo(y.$keyboard),y.$caret&&y.$caret.remove(),y.$caret=b('
').insertAfter(y.$preview),y.$el.unbind(i.kbChange+o).bind(i.kbChange+o,function(){y.findCaretPos()}),y.$preview.unbind(t).bind(t,function(){y.findCaretPos()})},y.findCaretPos=function(){if(y.caret_$div){var t,n,e,o,i,a,s,r,p=y.preview,u=parseFloat(y.$preview.css("fontSize")),l="INPUT"===p.nodeName,d=y.caret_$div[0];t=d.style,n=window.getComputedStyle?getComputedStyle(p,null):p.currentStyle,o=f.caret(y.$preview),i=Math["ltr"===n.direction?"max":"min"](o.start,o.end),y.textareaCaretProperties.forEach(function(e){t[e]=n[e]}),f.firefox&&(t.width=parseInt(n.width,10)-2+"px",p.scrollHeight>parseInt(n.height,10)&&(t.overflowY="scroll")),t.width=parseInt(l?p.scrollWidth:n.width,10)+(l?2*u:0)+"px",d.textContent=p.value.substring(0,i),"INPUT"===p.nodeName&&(d.textContent=d.textContent.replace(/\x20/g," ")),(s=document.createElement("span")).textContent=p.value.substring(i)||"​",d.appendChild(s),r=b(s).position(),o="center"===t.textAlign?u:0,y.caretPos={top:r.top+parseInt(n.borderTopWidth,10)+c.offsetY,left:r.left+parseInt(n.borderLeftWidth,10)+c.offsetX-o},e=parseInt(y.$caret.css("margin-top"),10),t=Math.round(u+2*e)+c.adjustHt,r=y.$preview.position(),y.$caret.css({top:r.top-p.scrollTop+y.caretPos.top-e,left:r.left-p.scrollLeft+y.caretPos.left,height:t}),a=p.value.substring(i,i+c.charIndex).replace(/\s/," ")||" ",y.$caret.attr(c.charAttr,a)}},y.$el.unbind(o).bind(i.kbBeforeVisible+o,function(){y.caret_setup()}).bind(i.kbVisible+o,function(){y.findCaretPos()}).bind(i.kbHidden+o,function(){var e="keyup keypress mouseup mouseleave ".split(" ").join(o+" ");y.$preview.unbind(e),y.$caret.remove(),y.$caret=null,y.caret_$div=null}),y.options.alwaysOpen&&y.isVisible()&&(y.caret_setup(),y.findCaretPos()))})}}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(o){"use strict";var i=o.keyboard;i.css.extender="ui-keyboard-extender",i.language.en.display.extender=" :toggle_numpad",i.layouts.numpad={normal:["{clear} / * -","7 8 9 +","4 5 6 %","1 2 3 =","0 {dec} {left} {right}"]},i.keyaction.extender=function(e){return e.extender_toggle(),!1},o.fn.addExtender=function(e){var t={layout:"numpad",showing:!1,reposition:!0};return this.each(function(){var n=o(this).data("keyboard");if(n){if(n.extender_options=o.extend({},t,n.extender_options,e),n.extender_namespace)return n.extender_layoutSwitcher();n.extender_namespace=n.namespace+"extender",n.extensionNamespace.push(n.extender_namespace),n.extender_layoutSwitcher=function(){n.extender_lastKeyset=n.last.keyset,n.extender_bindEvents(!1),n.$el.one(i.events.kbBeforeVisible,function(){n.shiftActive=n.extender_lastKeyset[0],n.altActive=n.extender_lastKeyset[1],n.metaActive=n.extender_lastKeyset[2],n.showKeySet(),n.extender_setup(),n.extender_bindEvents()}),n.redraw()},n.extender_bindEvents=function(e){var t=i.events.kbBeforeVisible+n.extender_namespace;n.$el.unbind(t),!1!==e&&n.$el.bind(t,function(){n.extender_setup()})},n.extender_setup=function(){var e,t=n.extender_options.layout;void 0===i.builtLayouts[t]&&n.buildKeyboard(t),(e=i.builtLayouts[t].$keyboard.find("."+i.css.keySet+"-normal").clone()).removeClass().removeAttr("name").addClass(i.css.extender).children("button").removeAttr("data-pos"),e[0].style.display=n.extender_options.showing?"inline-block":"none",n.$keyboard.find("div."+i.css.extender).remove(),n.$keyboard.append(e),n.extender_toggle(n.extender_options.showing),n.bindKeys()},n.extender_toggle=function(e){n.extender_options.showing=void 0===e?!n.extender_options.showing:e,n.$keyboard.find("button."+i.css.extender).toggleClass(n.options.css.buttonActive,n.extender_options.showing).end().find("div."+i.css.extender)[0].style.display=n.extender_options.showing?"inline-block":"none",n.extender_options.reposition&&o(window).trigger("resize")},n.options.alwaysOpen&&n.isVisible()&&n.extender_setup(),n.extender_bindEvents()}})}}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(s){s.fn.addMobile=function(e){var a,t={container:{theme:"b",cssClass:"ui-body"},input:{theme:"b",cssClass:""},buttonMarkup:{theme:"b",cssClass:"ui-btn",shadow:"true",corners:"true"},buttonHover:{theme:"b",cssClass:"ui-btn-hover"},buttonAction:{theme:"b",cssClass:"ui-btn-active"},buttonActive:{theme:"b",cssClass:"ui-btn-active"},allThemes:"a b c"};return this.each(function(){var i=s(this).data("keyboard");i&&void 0!==s.fn.textinput&&(i.mobile_options=a=s.extend(!0,{},t,e),i.mobile_themes=s.trim((" "+a.allThemes).split(" ").join(" "+a.buttonMarkup.cssClass+"-")+(" "+a.allThemes).split(" ").join(" "+a.buttonAction.cssClass+"-")+(" "+a.allThemes).split(" ").join(" "+a.buttonActive.cssClass+"-")),void 0===i.options.mobile_savedActiveClass&&(i.options.mobile_savedActiveClass=""+i.options.css.buttonActive),i.mobile_init=function(){var e=i.namespace+"Mobile";s("."+s.keyboard.css.input).textinput(),i.options.alwaysOpen&&i.isVisible&&i.mobile_setup(),i.extensionNamespace.push(e),i.$el.unbind(e).bind(s.keyboard.events.kbBeforeVisible+e,function(){i&&i.el.active&&i.$keyboard.length&&i.$keyboard.css("visibility","hidden")}).bind(s.keyboard.events.kbVisible+e,function(){i&&i.el.active&&i.$keyboard.length&&(i.mobile_setup(),i.$keyboard.css("visibility","visible"),i.$preview.focus())})},i.mobile_setup=function(){var e,t=s.keyboard.css,n=i.options,o=i.mobile_themes;i.mobile_$actionKeys=i.$keyboard.find("."+i.options.css.buttonAction),n.css.buttonActive=n.mobile_savedActiveClass+" "+i.modOptions(a.buttonActive,a.buttonMarkup),i.$keyboard.addClass(i.modOptions(a.container,a.container)).find("."+t.preview).removeClass("ui-widget ui-widget-content").addClass(i.modOptions(a.input,a.input)).end().find("button").removeClass(s.trim("ui-corner-all ui-state-default "+o)).addClass(i.modOptions(a.buttonMarkup,a.buttonMarkup)).not(i.mobile_$actionKeys).hover(function(){s(this).removeClass(o).addClass(i.modOptions(a.buttonHover,a.buttonMarkup))},function(){s(this).removeClass(o+" "+a.buttonHover.cssClass).addClass(i.modOptions(a.buttonMarkup,a.buttonMarkup))}),i.mobile_$actionKeys.removeClass(o).addClass(i.modOptions(a.buttonAction,a.buttonMarkup)),i.msie&&i.$preview[0]!==i.el&&(i.$preview.hide(),i.$keyboard.css("width",""),i.width=i.$keyboard.outerWidth(),i.$keyboard.width(i.width+parseInt(i.$preview.css("fontSize"),10)),i.$preview.width(i.width),i.$preview.show()),s.ui&&s.ui.position&&((e=n.position).of=e.of||i.$el.data("keyboardPosition")||i.$el,e.collision=e.collision||"flipfit flipfit",i.$keyboard.position(e))},i.modOptions=function(e,t){return" "+(e.cssClass||"")+" "+(t&&t.cssClass?t.cssClass+"-"+(e.theme||""):"")+("true"==e.shadow?" ui-shadow":"")+("true"==e.corners?" ui-corner-all":"")},i.mobile_init())})}}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(b){"use strict";b.keyboard=b.keyboard||{},b.keyboard.navigationKeys={toggle:112,enter:13,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,caretrt:45,caretlt:46,caretright:function(e){b.keyboard.keyaction.right(e)},caretleft:function(e){b.keyboard.keyaction.left(e)}},b.fn.addNavigation=function(t){return this.each(function(){var l,e,d=b(this).data("keyboard"),c=d.options,o=b.keyboard.events,y=b.keyboard.css;d&&(d.navigation_options=l=b.extend({},{position:[0,0],toggleMode:!1,focusClass:"hasFocus",toggleKey:null,rowLooping:!1},t),d.navigation_keys=e=b.extend({},b.keyboard.navigationKeys),d.navigation_namespace=d.namespace+"Nav",d.extensionNamespace.push(d.navigation_namespace),d.saveNav=[d.options.tabNavigation,d.options.enterNavigation],d.allNavKeys=b.map(e,function(e){return e}),d.navigation_init=function(){d.$keyboard.toggleClass(l.focusClass,l.toggleMode).find("."+y.keySet+":visible").find("."+y.keyButton+'[data-pos="'+l.position[0]+","+l.position[1]+'"]').addClass(c.css.buttonHover),d.$preview.unbind(d.navigation_namespace).bind("keydown"+d.navigation_namespace,function(e){return d.checkKeys(e.which)})},d.checkKeys=function(e,t){if(void 0!==e){var n=d.navigation_keys;return(e===(l.toggleKey||n.toggle)||t)&&(l.toggleMode=!t&&!l.toggleMode,d.options.tabNavigation=!l.toggleMode&&d.saveNav[0],d.options.enterNavigation=!l.toggleMode&&d.saveNav[1]),d.$keyboard.toggleClass(l.focusClass,l.toggleMode),l.toggleMode&&e===n.enter?(d.$keyboard.find("."+y.keySet+":visible").find("."+y.keyButton+'[data-pos="'+l.position[0]+","+l.position[1]+'"]').trigger(o.kbRepeater),!1):l.toggleMode&&0<=b.inArray(e,d.allNavKeys)?(d.navigateKeys(e),!1):void 0}},d.getMaxIndex=function(e,t){return e.find("."+y.keyButton+'[data-pos^="'+t+',"]').length-1},d.leftNavigateKey=function(e,t){var n=d.navigation_options.rowLooping,o=e-1;return 0<=o?o:n?t:0},d.rightNavigateKey=function(e,t){var n=d.navigation_options.rowLooping,o=e+1;return o<=t?o:n?0:t},d.navigateKeys=function(e,t,n){if(d.isVisible()){n="number"==typeof n?n:l.position[1],t="number"==typeof t?t:l.position[0];var o,i=d.$keyboard.find("."+y.keySet+":visible"),a=i.find("."+y.endRow).length-1,s=d.getMaxIndex(i,t),r=d.last,p=d.$preview.val().length,u=d.navigation_keys;switch(e){case u.pageup:t=0;break;case u.pagedown:t=a;break;case u.end:n=s;break;case u.home:n=0;break;case u.left:n=d.leftNavigateKey(n,s);break;case u.up:t+=0p?p:r.start,d.last.start=d.last.end=r.end=r.start,b.keyboard.caret(d.$preview,d.last)),(s=d.getMaxIndex(i,t))').css({width:c.kbWidth,height:c.kbHeight}).appendTo(d.$keyboard).bind("click touchstart",function(){d.altKeyPopup_close()}),y="inactive hidden ".split(" ").join(d.altkeypopup_namespace+" "),d.$keyboard.addClass(b.css.altKeyPopupOpen),d.$el.unbind(y).bind(y,function(){d.altKeyPopup_close()}),"bksp"!==e&&b.keyaction.bksp(d),t=k('
'),o=b.altKeys[e].split(/\s+/),d.buildRow(t,0,o,[]),a=t.appendTo(d.altKeyPopup_$overlay).children().bind("mousedown touchstart",function(){d.altKeyPopup_close()}).bind("mouseover mouseleave",function(e){a.removeClass(d.options.css.buttonHover),"mouseleave"!==e.type&&k(this).addClass(d.options.css.buttonHover)}),d.altKeyPopup_navigate(!0),d.altKeyPopup_savedIgnoreEsc=d.options.ignoreEsc,d.options.ignoreEsc=!0,k(document).unbind(d.altkeypopup_namespace).bind("keydown"+d.altkeypopup_namespace,function(){return!1}).bind("keyup"+d.altkeypopup_namespace,function(e){return"Escape"===e.key?(e.which=0,d.altKeyPopup_close()):d.altKeyPopup_navigate(e),!1}),s=(c.$popup=t).outerWidth(),(n=p.position().left-s/2)+s>c.kbWidth&&(n=c.kbWidth-s)<0&&t.css({width:c.kbWidth,height:"auto"}),i=p.position().top-p.outerHeight()-5,l=t.outerHeight(),u=d.$keyboard.find("."+r.keySet).position().top,i+l>c.kbHeight&&(i=c.kbHeight-l)').appendTo(u.$keyboard),u.$caret&&u.$caret.remove(),u.$caret=b('
').insertAfter(u.$preview),u.$el.unbind(o.kbChange+i).bind(o.kbChange+i,function(){u.findCaretPos()}),u.$preview.unbind(t).bind(t,function(){u.findCaretPos()})},u.findCaretPos=function(){if(u.caret_$div){var t,r,e,i,o,n,a,s,d=u.preview,c=parseFloat(u.$preview.css("fontSize")),p="INPUT"===d.nodeName,l=u.caret_$div[0];t=l.style,r=window.getComputedStyle?getComputedStyle(d,null):d.currentStyle,i=h.caret(u.$preview),o=Math["ltr"===r.direction?"max":"min"](i.start,i.end),u.textareaCaretProperties.forEach(function(e){t[e]=r[e]}),h.firefox&&(t.width=parseInt(r.width,10)-2+"px",d.scrollHeight>parseInt(r.height,10)&&(t.overflowY="scroll")),t.width=parseInt(p?d.scrollWidth:r.width,10)+(p?2*c:0)+"px",l.textContent=d.value.substring(0,o),"INPUT"===d.nodeName&&(l.textContent=l.textContent.replace(/\x20/g," ")),(a=document.createElement("span")).textContent=d.value.substring(o)||"​",l.appendChild(a),s=b(a).position(),i="center"===t.textAlign?c:0,u.caretPos={top:s.top+parseInt(r.borderTopWidth,10)+f.offsetY,left:s.left+parseInt(r.borderLeftWidth,10)+f.offsetX-i},e=parseInt(u.$caret.css("margin-top"),10),t=Math.round(c+2*e)+f.adjustHt,s=u.$preview.position(),u.$caret.css({top:s.top-d.scrollTop+u.caretPos.top-e,left:s.left-d.scrollLeft+u.caretPos.left,height:t}),n=d.value.substring(o,o+f.charIndex).replace(/\s/," ")||" ",u.$caret.attr(f.charAttr,n)}},u.$el.unbind(i).bind(o.kbBeforeVisible+i,function(){u.caret_setup()}).bind(o.kbVisible+i,function(){u.findCaretPos()}).bind(o.kbHidden+i,function(){var e="keyup keypress mouseup mouseleave ".split(" ").join(i+" ");u.$preview.unbind(e),u.$caret.remove(),u.$caret=null,u.caret_$div=null}),u.options.alwaysOpen&&u.isVisible()&&(u.caret_setup(),u.findCaretPos()))})}}); \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-extender.min.js b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-extender.min.js new file mode 100644 index 0000000000..44549bf0f1 --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-extender.min.js @@ -0,0 +1,2 @@ +/*! jQuery UI Virtual Keyboard Extender v1.0.3 */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(o){"use strict";var s=o.keyboard;s.css.extender="ui-keyboard-extender",s.language.en.display.extender=" :toggle_numpad",s.layouts.numpad={normal:["{clear} / * -","7 8 9 +","4 5 6 %","1 2 3 =","0 {dec} {left} {right}"]},s.keyaction.extender=function(e){return e.extender_toggle(),!1},o.fn.addExtender=function(e){var n={layout:"numpad",showing:!1,reposition:!0};return this.each(function(){var t=o(this).data("keyboard");if(t){if(t.extender_options=o.extend({},n,t.extender_options,e),t.extender_namespace)return t.extender_layoutSwitcher();t.extender_namespace=t.namespace+"extender",t.extensionNamespace.push(t.extender_namespace),t.extender_layoutSwitcher=function(){t.extender_lastKeyset=t.last.keyset,t.extender_bindEvents(!1),t.$el.one(s.events.kbBeforeVisible,function(){t.shiftActive=t.extender_lastKeyset[0],t.altActive=t.extender_lastKeyset[1],t.metaActive=t.extender_lastKeyset[2],t.showKeySet(),t.extender_setup(),t.extender_bindEvents()}),t.redraw()},t.extender_bindEvents=function(e){var n=s.events.kbBeforeVisible+t.extender_namespace;t.$el.unbind(n),!1!==e&&t.$el.bind(n,function(){t.extender_setup()})},t.extender_setup=function(){var e,n=t.extender_options.layout;void 0===s.builtLayouts[n]&&t.buildKeyboard(n),(e=s.builtLayouts[n].$keyboard.find("."+s.css.keySet+"-normal").clone()).removeClass().removeAttr("name").addClass(s.css.extender).children("button").removeAttr("data-pos"),e[0].style.display=t.extender_options.showing?"inline-block":"none",t.$keyboard.find("div."+s.css.extender).remove(),t.$keyboard.append(e),t.extender_toggle(t.extender_options.showing),t.bindKeys()},t.extender_toggle=function(e){t.extender_options.showing=void 0===e?!t.extender_options.showing:e,t.$keyboard.find("button."+s.css.extender).toggleClass(t.options.css.buttonActive,t.extender_options.showing).end().find("div."+s.css.extender)[0].style.display=t.extender_options.showing?"inline-block":"none",t.extender_options.reposition&&o(window).trigger("resize")},t.options.alwaysOpen&&t.isVisible()&&t.extender_setup(),t.extender_bindEvents()}})}}); \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-mobile.min.js b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-mobile.min.js new file mode 100644 index 0000000000..60ffd2daa1 --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-mobile.min.js @@ -0,0 +1,2 @@ +/*! jQuery UI Virtual Keyboard for jQuery Mobile Themes v1.4.1 */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(a){a.fn.addMobile=function(e){var n,t={container:{theme:"b",cssClass:"ui-body"},input:{theme:"b",cssClass:""},buttonMarkup:{theme:"b",cssClass:"ui-btn",shadow:"true",corners:"true"},buttonHover:{theme:"b",cssClass:"ui-btn-hover"},buttonAction:{theme:"b",cssClass:"ui-btn-active"},buttonActive:{theme:"b",cssClass:"ui-btn-active"},allThemes:"a b c"};return this.each(function(){var o=a(this).data("keyboard");o&&void 0!==a.fn.textinput&&(o.mobile_options=n=a.extend(!0,{},t,e),o.mobile_themes=a.trim((" "+n.allThemes).split(" ").join(" "+n.buttonMarkup.cssClass+"-")+(" "+n.allThemes).split(" ").join(" "+n.buttonAction.cssClass+"-")+(" "+n.allThemes).split(" ").join(" "+n.buttonActive.cssClass+"-")),void 0===o.options.mobile_savedActiveClass&&(o.options.mobile_savedActiveClass=""+o.options.css.buttonActive),o.mobile_init=function(){var e=o.namespace+"Mobile";a("."+a.keyboard.css.input).textinput(),o.options.alwaysOpen&&o.isVisible&&o.mobile_setup(),o.extensionNamespace.push(e),o.$el.unbind(e).bind(a.keyboard.events.kbBeforeVisible+e,function(){o&&o.el.active&&o.$keyboard.length&&o.$keyboard.css("visibility","hidden")}).bind(a.keyboard.events.kbVisible+e,function(){o&&o.el.active&&o.$keyboard.length&&(o.mobile_setup(),o.$keyboard.css("visibility","visible"),o.$preview.focus())})},o.mobile_setup=function(){var e,t=a.keyboard.css,s=o.options,i=o.mobile_themes;o.mobile_$actionKeys=o.$keyboard.find("."+o.options.css.buttonAction),s.css.buttonActive=s.mobile_savedActiveClass+" "+o.modOptions(n.buttonActive,n.buttonMarkup),o.$keyboard.addClass(o.modOptions(n.container,n.container)).find("."+t.preview).removeClass("ui-widget ui-widget-content").addClass(o.modOptions(n.input,n.input)).end().find("button").removeClass(a.trim("ui-corner-all ui-state-default "+i)).addClass(o.modOptions(n.buttonMarkup,n.buttonMarkup)).not(o.mobile_$actionKeys).hover(function(){a(this).removeClass(i).addClass(o.modOptions(n.buttonHover,n.buttonMarkup))},function(){a(this).removeClass(i+" "+n.buttonHover.cssClass).addClass(o.modOptions(n.buttonMarkup,n.buttonMarkup))}),o.mobile_$actionKeys.removeClass(i).addClass(o.modOptions(n.buttonAction,n.buttonMarkup)),o.msie&&o.$preview[0]!==o.el&&(o.$preview.hide(),o.$keyboard.css("width",""),o.width=o.$keyboard.outerWidth(),o.$keyboard.width(o.width+parseInt(o.$preview.css("fontSize"),10)),o.$preview.width(o.width),o.$preview.show()),a.ui&&a.ui.position&&((e=s.position).of=e.of||o.$el.data("keyboardPosition")||o.$el,e.collision=e.collision||"flipfit flipfit",o.$keyboard.position(e))},o.modOptions=function(e,t){return" "+(e.cssClass||"")+" "+(t&&t.cssClass?t.cssClass+"-"+(e.theme||""):"")+("true"==e.shadow?" ui-shadow":"")+("true"==e.corners?" ui-corner-all":"")},o.mobile_init())})}}); \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-navigation.min.js b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-navigation.min.js new file mode 100644 index 0000000000..6907576b2e --- /dev/null +++ b/app/Resources/public/assets/keyboard/dist/js/jquery.keyboard.extension-navigation.min.js @@ -0,0 +1,2 @@ +/*! jQuery UI Virtual Keyboard Navigation v1.6.2 */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(u){"use strict";u.keyboard=u.keyboard||{},u.keyboard.navigationKeys={toggle:112,enter:13,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,caretrt:45,caretlt:46,caretright:function(e){u.keyboard.keyaction.right(e)},caretleft:function(e){u.keyboard.keyaction.left(e)}},u.fn.addNavigation=function(t){return this.each(function(){var c,e,v=u(this).data("keyboard"),y=v.options,n=u.keyboard.events,l=u.keyboard.css;v&&(v.navigation_options=c=u.extend({},{position:[0,0],toggleMode:!1,focusClass:"hasFocus",toggleKey:null,rowLooping:!1},t),v.navigation_keys=e=u.extend({},u.keyboard.navigationKeys),v.navigation_namespace=v.namespace+"Nav",v.extensionNamespace.push(v.navigation_namespace),v.saveNav=[v.options.tabNavigation,v.options.enterNavigation],v.allNavKeys=u.map(e,function(e){return e}),v.navigation_init=function(){v.$keyboard.toggleClass(c.focusClass,c.toggleMode).find("."+l.keySet+":visible").find("."+l.keyButton+'[data-pos="'+c.position[0]+","+c.position[1]+'"]').addClass(y.css.buttonHover),v.$preview.unbind(v.navigation_namespace).bind("keydown"+v.navigation_namespace,function(e){return v.checkKeys(e.which)})},v.checkKeys=function(e,t){if(void 0!==e){var a=v.navigation_keys;return(e===(c.toggleKey||a.toggle)||t)&&(c.toggleMode=!t&&!c.toggleMode,v.options.tabNavigation=!c.toggleMode&&v.saveNav[0],v.options.enterNavigation=!c.toggleMode&&v.saveNav[1]),v.$keyboard.toggleClass(c.focusClass,c.toggleMode),c.toggleMode&&e===a.enter?(v.$keyboard.find("."+l.keySet+":visible").find("."+l.keyButton+'[data-pos="'+c.position[0]+","+c.position[1]+'"]').trigger(n.kbRepeater),!1):c.toggleMode&&0<=u.inArray(e,v.allNavKeys)?(v.navigateKeys(e),!1):void 0}},v.getMaxIndex=function(e,t){return e.find("."+l.keyButton+'[data-pos^="'+t+',"]').length-1},v.leftNavigateKey=function(e,t){var a=v.navigation_options.rowLooping,n=e-1;return 0<=n?n:a?t:0},v.rightNavigateKey=function(e,t){var a=v.navigation_options.rowLooping,n=e+1;return n<=t?n:a?0:t},v.navigateKeys=function(e,t,a){if(v.isVisible()){a="number"==typeof a?a:c.position[1],t="number"==typeof t?t:c.position[0];var n,o=v.$keyboard.find("."+l.keySet+":visible"),i=o.find("."+l.endRow).length-1,s=v.getMaxIndex(o,t),r=v.last,g=v.$preview.val().length,d=v.navigation_keys;switch(e){case d.pageup:t=0;break;case d.pagedown:t=i;break;case d.end:a=s;break;case d.home:a=0;break;case d.left:a=v.leftNavigateKey(a,s);break;case d.up:t+=0g?g:r.start,v.last.start=v.last.end=r.end=r.start,u.keyboard.caret(v.$preview,v.last)),(s=v.getMaxIndex(o,t)) 0; + }; + + base.isVisible = function () { + return base.hasKeyboard() ? base.$keyboard.is(':visible') : false; + }; + + base.setFocus = function () { + var $el = base.$preview || base.$el; + if (!o.noFocus) { + $el.focus(); + } + if (base.isContentEditable) { + $keyboard.setEditableCaret($el, base.last.start, base.last.end); + } else { + $keyboard.caret($el, base.last); + } + }; + + base.focusOn = function () { + if (!base && base.el.active) { + // keyboard was destroyed + return; + } + if (!base.isVisible()) { + clearTimeout(base.timer); + base.reveal(); + } else { + // keyboard already open, make it the current keyboard + base.setCurrent(); + } + }; + + // add redraw method to make API more clear + base.redraw = function (layout) { + if (layout) { + // allow updating the layout by calling redraw + base.options.layout = layout; + } + // update keyboard after a layout change + if (base.$keyboard.length) { + + base.last.preVal = '' + base.last.val; + base.saveLastChange(); + base.setValue(base.last.val, base.$el); + + base.removeKeyboard(); + base.shiftActive = base.altActive = base.metaActive = false; + } + base.isOpen = o.alwaysOpen; + base.reveal(true); + return base; + }; + + base.reveal = function (redraw) { + var temp, + alreadyOpen = base.isOpen, + kbcss = $keyboard.css; + base.opening = !alreadyOpen; + // remove all 'extra' keyboards by calling close function + $('.' + kbcss.keyboard).not('.' + kbcss.alwaysOpen).each(function(){ + var kb = $(this).data('keyboard'); + if (!$.isEmptyObject(kb)) { + // this closes previous keyboard when clicking another input - see #515 + kb.close(kb.options.autoAccept ? 'true' : false); + } + }); + + // Don't open if disabled + if (base.isUnavailable()) { + return; + } + base.$el.removeClass(kbcss.noKeyboard); + + // Unbind focus to prevent recursion - openOn may be empty if keyboard is opened externally + if (o.openOn) { + base.$el.unbind($.trim((o.openOn + ' ').split(/\s+/).join(base.namespace + ' '))); + } + + // build keyboard if it doesn't exist; or attach keyboard if it was removed, but not cleared + if (!base.$keyboard || base.$keyboard && + (!base.$keyboard.length || $.contains(base.el.ownerDocument.body, base.$keyboard[0]))) { + base.startup(); + } + + // clear watermark + if (!base.watermark && base.getValue() === base.inPlaceholder) { + base.$el.removeClass(kbcss.placeholder); + base.setValue('', base.$el); + } + // save starting content, in case we cancel + base.originalContent = base.isContentEditable ? + base.$el.html() : + base.getValue(base.$el); + if (base.el !== base.preview && !base.isContentEditable) { + base.setValue(base.originalContent); + } + + // disable/enable accept button + if (o.acceptValid && o.checkValidOnInit) { + base.checkValid(); + } + + if (o.resetDefault) { + base.shiftActive = base.altActive = base.metaActive = false; + } + base.showSet(); + + // beforeVisible event + if (!base.isVisible()) { + base.$el.trigger($keyboard.events.kbBeforeVisible, [base, base.el]); + } + if ( + base.initialized || + o.initialFocus || + ( !o.initialFocus && base.$el.hasClass($keyboard.css.initialFocus) ) + ) { + base.setCurrent(); + } + // update keyboard - enabled or disabled? + base.toggle(); + + // show keyboard + base.$keyboard.show(); + + // adjust keyboard preview window width - save width so IE won't keep expanding (fix issue #6) + if (o.usePreview && $keyboard.msie) { + if (typeof base.width === 'undefined') { + base.$preview.hide(); // preview is 100% browser width in IE7, so hide the damn thing + base.width = Math.ceil(base.$keyboard.width()); // set input width to match the widest keyboard row + base.$preview.show(); + } + base.$preview.width(base.width); + } + + base.reposition(); + + base.checkDecimal(); + + // get preview area line height + // add roughly 4px to get line height from font height, works well for font-sizes from 14-36px + // needed for textareas + base.lineHeight = parseInt(base.$preview.css('lineHeight'), 10) || + parseInt(base.$preview.css('font-size'), 10) + 4; + + if (o.caretToEnd) { + temp = base.isContentEditable ? $keyboard.getEditableLength(base.el) : base.originalContent.length; + base.saveCaret(temp, temp); + } + + // IE caret haxx0rs + if ($keyboard.allie) { + // sometimes end = 0 while start is > 0 + if (base.last.end === 0 && base.last.start > 0) { + base.last.end = base.last.start; + } + // IE will have start -1, end of 0 when not focused (see demo: https://jsfiddle.net/Mottie/fgryQ/3/) + if (base.last.start < 0) { + // ensure caret is at the end of the text (needed for IE) + base.last.start = base.last.end = base.originalContent.length; + } + } + + if (alreadyOpen || redraw) { + // restore caret position (userClosed) + $keyboard.caret(base.$preview, base.last); + base.opening = false; + return base; + } + + // opening keyboard flag; delay allows switching between keyboards without immediately closing + // the keyboard + base.timer2 = setTimeout(function () { + var undef; + base.opening = false; + // Number inputs don't support selectionStart and selectionEnd + // Number/email inputs don't support selectionStart and selectionEnd + if (!/(number|email)/i.test(base.el.type) && !o.caretToEnd) { + // caret position is always 0,0 in webkit; and nothing is focused at this point... odd + // save caret position in the input to transfer it to the preview + // inside delay to get correct caret position + base.saveCaret(undef, undef, base.$el); + } + if (o.initialFocus || base.$el.hasClass($keyboard.css.initialFocus)) { + $keyboard.caret(base.$preview, base.last); + } + // save event time for keyboards with stayOpen: true + base.last.eventTime = new Date().getTime(); + base.$el.trigger($keyboard.events.kbVisible, [base, base.el]); + base.timer = setTimeout(function () { + // get updated caret information after visible event - fixes #331 + if (base) { // Check if base exists, this is a case when destroy is called, before timers fire + base.saveCaret(); + } + }, 200); + }, 10); + // return base to allow chaining in typing extension + return base; + }; + + base.updateLanguage = function () { + // change language if layout is named something like 'french-azerty-1' + var layouts = $keyboard.layouts, + lang = o.language || layouts[o.layout] && layouts[o.layout].lang && + layouts[o.layout].lang || [o.language || 'en'], + kblang = $keyboard.language; + + // some languages include a dash, e.g. 'en-gb' or 'fr-ca' + // allow o.language to be a string or array... + // array is for future expansion where a layout can be set for multiple languages + lang = ($.isArray(lang) ? lang[0] : lang); + base.language = lang; + lang = lang.split('-')[0]; + + // set keyboard language + o.display = $.extend(true, {}, + kblang.en.display, + kblang[lang] && kblang[lang].display || {}, + base.settings.display + ); + o.combos = $.extend(true, {}, + kblang.en.combos, + kblang[lang] && kblang[lang].combos || {}, + base.settings.combos + ); + o.wheelMessage = kblang[lang] && kblang[lang].wheelMessage || kblang.en.wheelMessage; + // rtl can be in the layout or in the language definition; defaults to false + o.rtl = layouts[o.layout] && layouts[o.layout].rtl || kblang[lang] && kblang[lang].rtl || false; + + // save default regex (in case loading another layout changes it) + base.regex = kblang[lang] && kblang[lang].comboRegex || $keyboard.comboRegex; + // determine if US '.' or European ',' system being used + base.decimal = /^\./.test(o.display.dec); + base.$el + .toggleClass('rtl', o.rtl) + .css('direction', o.rtl ? 'rtl' : ''); + }; + + base.startup = function () { + var kbcss = $keyboard.css; + // ensure base.$preview is defined; but don't overwrite it if keyboard is always visible + if (!((o.alwaysOpen || o.userClosed) && base.$preview)) { + base.makePreview(); + } + if (!base.hasKeyboard()) { + // custom layout - create a unique layout name based on the hash + if (o.layout === 'custom') { + o.layoutHash = 'custom' + base.customHash(); + } + base.layout = o.layout === 'custom' ? o.layoutHash : o.layout; + base.last.layout = base.layout; + + base.updateLanguage(); + if (typeof $keyboard.builtLayouts[base.layout] === 'undefined') { + if ($.isFunction(o.create)) { + // create must call buildKeyboard() function; or create it's own keyboard + base.$keyboard = o.create(base); + } else if (!base.$keyboard.length) { + base.buildKeyboard(base.layout, true); + } + } + base.$keyboard = $keyboard.builtLayouts[base.layout].$keyboard.clone(); + base.$keyboard.data('keyboard', base); + if ((base.el.id || '') !== '') { + // add ID to keyboard for styling purposes + base.$keyboard.attr('id', base.el.id + $keyboard.css.idSuffix); + } + + base.makePreview(); + } + + // Add layout and laguage data-attibutes + base.$keyboard + .attr('data-' + kbcss.keyboard + '-layout', o.layout) + .attr('data-' + kbcss.keyboard + '-language', base.language); + + base.$decBtn = base.$keyboard.find('.' + kbcss.keyPrefix + 'dec'); + // add enter to allowed keys; fixes #190 + if (o.enterNavigation || base.el.nodeName === 'TEXTAREA') { + base.alwaysAllowed.push($keyboard.keyCodes.enter); + } + + base.bindKeyboard(); + + base.$keyboard.appendTo(o.appendLocally ? base.$el.parent() : o.appendTo || 'body'); + + base.bindKeys(); + + // reposition keyboard on window resize + if (o.reposition && $.ui && $.ui.position && o.appendTo === 'body') { + $(window).bind('resize' + base.namespace, function () { + base.reposition(); + }); + } + + }; + + base.reposition = function () { + base.position = $.isEmptyObject(o.position) ? false : o.position; + // position after keyboard is visible (required for UI position utility) + // and appropriately sized + if ($.ui && $.ui.position && base.position) { + base.position.of = + // get single target position + base.position.of || + // OR target stored in element data (multiple targets) + base.$el.data('keyboardPosition') || + // OR default @ element + base.$el; + base.position.collision = base.position.collision || 'flipfit flipfit'; + base.position.at = o.usePreview ? o.position.at : o.position.at2; + if (base.isVisible()) { + base.$keyboard.position(base.position); + } + } + // make chainable + return base; + }; + + base.makePreview = function () { + if (o.usePreview) { + var indx, attrs, attr, removedAttr, + kbcss = $keyboard.css; + base.$preview = base.$el.clone(false) + .data('keyboard', base) + .removeClass(kbcss.placeholder + ' ' + kbcss.input) + .addClass(kbcss.preview + ' ' + o.css.input) + .attr('tabindex', '-1') + .show(); // for hidden inputs + base.preview = base.$preview[0]; + + // Switch the number input field to text so the caret positioning will work again + if (base.preview.type === 'number') { + base.preview.type = 'text'; + } + + // remove extraneous attributes. + removedAttr = /^(data-|id|aria-haspopup)/i; + attrs = base.$preview.get(0).attributes; + for (indx = attrs.length - 1; indx >= 0; indx--) { + attr = attrs[indx] && attrs[indx].name; + if (removedAttr.test(attr)) { + // remove data-attributes - see #351 + base.preview.removeAttribute(attr); + } + } + // build preview container and append preview display + $('
') + .addClass(kbcss.wrapper) + .append(base.$preview) + .prependTo(base.$keyboard); + } else { + base.$preview = base.$el; + base.preview = base.el; + } + }; + + // Added in v1.26.8 to allow chaining of the caret function, e.g. + // keyboard.reveal().caret(4,5).insertText('test').caret('end'); + base.caret = function(param1, param2) { + var result = $keyboard.caret(base.$preview, param1, param2), + wasSetCaret = result instanceof $; + // Caret was set, save last position & make chainable + if (wasSetCaret) { + base.saveCaret(result.start, result.end); + return base; + } + // return caret position if using .caret() + return result; + }; + + base.saveCaret = function (start, end, $el) { + if (base.isCurrent()) { + var p; + if (typeof start === 'undefined') { + // grab & save current caret position + p = $keyboard.caret($el || base.$preview); + } else { + p = $keyboard.caret($el || base.$preview, start, end); + } + base.last.start = typeof start === 'undefined' ? p.start : start; + base.last.end = typeof end === 'undefined' ? p.end : end; + } + }; + + base.saveLastChange = function (val) { + base.last.val = val || base.getValue(base.$preview || base.$el); + if (base.isContentEditable) { + base.last.elms = base.el.cloneNode(true); + } + }; + + base.setScroll = function () { + // Set scroll so caret & current text is in view + // needed for virtual keyboard typing, NOT manual typing - fixes #23 + if (!base.isContentEditable && base.last.virtual) { + + var scrollWidth, clientWidth, adjustment, direction, + isTextarea = base.preview.nodeName === 'TEXTAREA', + value = base.last.val.substring(0, Math.max(base.last.start, base.last.end)); + + if (!base.$previewCopy) { + // clone preview + base.$previewCopy = base.$preview.clone() + .removeAttr('id') // fixes #334 + .css({ + position: 'absolute', + left: 0, + zIndex: -10, + visibility: 'hidden' + }) + .addClass($keyboard.css.inputClone); + // prevent submitting content on form submission + base.$previewCopy[0].disabled = true; + if (!isTextarea) { + // make input zero-width because we need an accurate scrollWidth + base.$previewCopy.css({ + 'white-space': 'pre', + 'width': 0 + }); + } + if (o.usePreview) { + // add clone inside of preview wrapper + base.$preview.after(base.$previewCopy); + } else { + // just slap that thing in there somewhere + base.$keyboard.prepend(base.$previewCopy); + } + } + + if (isTextarea) { + // need the textarea scrollHeight, so set the clone textarea height to be the line height + base.$previewCopy + .height(base.lineHeight) + .val(value); + // set scrollTop for Textarea + base.preview.scrollTop = base.lineHeight * + (Math.floor(base.$previewCopy[0].scrollHeight / base.lineHeight) - 1); + } else { + // add non-breaking spaces + base.$previewCopy.val(value.replace(/\s/g, '\xa0')); + + // if scrollAdjustment option is set to "c" or "center" then center the caret + adjustment = /c/i.test(o.scrollAdjustment) ? base.preview.clientWidth / 2 : o.scrollAdjustment; + scrollWidth = base.$previewCopy[0].scrollWidth - 1; + + // set initial state as moving right + if (typeof base.last.scrollWidth === 'undefined') { + base.last.scrollWidth = scrollWidth; + base.last.direction = true; + } + // if direction = true; we're scrolling to the right + direction = base.last.scrollWidth === scrollWidth ? + base.last.direction : + base.last.scrollWidth < scrollWidth; + clientWidth = base.preview.clientWidth - adjustment; + + // set scrollLeft for inputs; try to mimic the inherit caret positioning + scrolling: + // hug right while scrolling right... + if (direction) { + if (scrollWidth < clientWidth) { + base.preview.scrollLeft = 0; + } else { + base.preview.scrollLeft = scrollWidth - clientWidth; + } + } else { + // hug left while scrolling left... + if (scrollWidth >= base.preview.scrollWidth - clientWidth) { + base.preview.scrollLeft = base.preview.scrollWidth - adjustment; + } else if (scrollWidth - adjustment > 0) { + base.preview.scrollLeft = scrollWidth - adjustment; + } else { + base.preview.scrollLeft = 0; + } + } + + base.last.scrollWidth = scrollWidth; + base.last.direction = direction; + } + } + }; + + base.bindFocus = function () { + if (o.openOn) { + // make sure keyboard isn't destroyed + // Check if base exists, this is a case when destroy is called, before timers have fired + if (base && base.el.active) { + base.$el.bind(o.openOn + base.namespace, function () { + base.focusOn(); + }); + // remove focus from element (needed for IE since blur doesn't seem to work) + if ($(':focus')[0] === base.el) { + base.$el.blur(); + } + } + } + }; + + base.bindKeyboard = function () { + var evt, + keyCodes = $keyboard.keyCodes, + layout = $keyboard.builtLayouts[base.layout], + namespace = base.namespace + 'keybindings'; + base.$preview + .unbind(base.namespace) + .bind('click' + namespace + ' touchstart' + namespace, function () { + if (o.alwaysOpen && !base.isCurrent()) { + base.reveal(); + } + // update last caret position after user click, use at least 150ms or it doesn't work in IE + base.timer2 = setTimeout(function () { + if (base){ + base.saveCaret(); + } + }, 150); + + }) + .bind('keypress' + namespace, function (e) { + if (o.lockInput) { + return false; + } + if (!base.isCurrent()) { + return; + } + + var k = e.charCode || e.which, + // capsLock can only be checked while typing a-z + k1 = k >= keyCodes.A && k <= keyCodes.Z, + k2 = k >= keyCodes.a && k <= keyCodes.z, + str = base.last.key = String.fromCharCode(k); + // check, that keypress wasn't rise by functional key + // space is first typing symbol in UTF8 table + if (k < keyCodes.space) { //see #549 + return; + } + base.last.virtual = false; + base.last.event = e; + base.last.$key = []; // not a virtual keyboard key + if (base.checkCaret) { + base.saveCaret(); + } + + // update capsLock + if (k !== keyCodes.capsLock && (k1 || k2)) { + base.capsLock = (k1 && !e.shiftKey) || (k2 && e.shiftKey); + // if shifted keyset not visible, then show it + if (base.capsLock && !base.shiftActive) { + base.shiftActive = true; + base.showSet(); + } + } + + // restrict input - keyCode in keypress special keys: + // see http://www.asquare.net/javascript/tests/KeyCode.html + if (o.restrictInput) { + // allow navigation keys to work - Chrome doesn't fire a keypress event (8 = bksp) + if ((e.which === keyCodes.backSpace || e.which === 0) && + $.inArray(e.keyCode, base.alwaysAllowed)) { + return; + } + // quick key check + if ($.inArray(str, layout.acceptedKeys) === -1) { + e.preventDefault(); + // copy event object in case e.preventDefault() breaks when changing the type + evt = $.extend({}, e); + evt.type = $keyboard.events.inputRestricted; + base.$el.trigger(evt, [base, base.el]); + } + } else if ((e.ctrlKey || e.metaKey) && + (e.which === keyCodes.A || e.which === keyCodes.C || e.which === keyCodes.V || + (e.which >= keyCodes.X && e.which <= keyCodes.Z))) { + // Allow select all (ctrl-a), copy (ctrl-c), paste (ctrl-v) & cut (ctrl-x) & + // redo (ctrl-y)& undo (ctrl-z); meta key for mac + return; + } + // Mapped Keys - allows typing on a regular keyboard and the mapped key is entered + // Set up a key in the layout as follows: 'm(a):label'; m = key to map, (a) = actual keyboard key + // to map to (optional), ':label' = title/tooltip (optional) + // example: \u0391 or \u0391(A) or \u0391:alpha or \u0391(A):alpha + if (layout.hasMappedKeys && layout.mappedKeys.hasOwnProperty(str)) { + base.last.key = layout.mappedKeys[str]; + base.insertText(base.last.key); + e.preventDefault(); + } + if (typeof o.beforeInsert === 'function') { + base.insertText(base.last.key); + e.preventDefault(); + } + base.checkMaxLength(); + + }) + .bind('keyup' + namespace, function (e) { + if (!base.isCurrent()) { return; } + base.last.virtual = false; + switch (e.which) { + // Insert tab key + case keyCodes.tab: + // Added a flag to prevent from tabbing into an input, keyboard opening, then adding the tab + // to the keyboard preview area on keyup. Sadly it still happens if you don't release the tab + // key immediately because keydown event auto-repeats + if (base.tab && !o.lockInput) { + base.shiftActive = e.shiftKey; + // when switching inputs, the tab keyaction returns false + var notSwitching = $keyboard.keyaction.tab(base); + base.tab = false; + if (!notSwitching) { + return false; + } + } else { + e.preventDefault(); + } + break; + + // Escape will hide the keyboard + case keyCodes.escape: + if (!o.ignoreEsc) { + base.close(o.autoAccept && o.autoAcceptOnEsc ? 'true' : false); + } + return false; + } + + // throttle the check combo function because fast typers will have an incorrectly positioned caret + clearTimeout(base.throttled); + base.throttled = setTimeout(function () { + // fix error in OSX? see issue #102 + if (base && base.isVisible()) { + base.checkCombos(); + } + }, 100); + + base.checkMaxLength(); + + base.last.preVal = '' + base.last.val; + base.saveLastChange(); + + // don't alter "e" or the "keyup" event never finishes processing; fixes #552 + var event = $.Event( $keyboard.events.kbChange ); + // base.last.key may be empty string (shift, enter, tab, etc) when keyboard is first visible + // use e.key instead, if browser supports it + event.action = base.last.key; + base.$el.trigger(event, [base, base.el]); + + // change callback is no longer bound to the input element as the callback could be + // called during an external change event with all the necessary parameters (issue #157) + if ($.isFunction(o.change)) { + event.type = $keyboard.events.inputChange; + o.change(event, base, base.el); + return false; + } + if (o.acceptValid && o.autoAcceptOnValid) { + if ( + $.isFunction(o.validate) && + o.validate(base, base.getValue(base.$preview)) + ) { + base.$preview.blur(); + base.accept(); + } + } + }) + .bind('keydown' + namespace, function (e) { + base.last.keyPress = e.which; + // ensure alwaysOpen keyboards are made active + if (o.alwaysOpen && !base.isCurrent()) { + base.reveal(); + } + // prevent tab key from leaving the preview window + if (e.which === keyCodes.tab) { + // allow tab to pass through - tab to next input/shift-tab for prev + base.tab = true; + return false; + } + if (o.lockInput || e.timeStamp === base.last.timeStamp) { + return !o.lockInput; + } + + base.last.timeStamp = e.timeStamp; // fixes #659 + base.last.virtual = false; + switch (e.which) { + + case keyCodes.backSpace: + $keyboard.keyaction.bksp(base, null, e); + e.preventDefault(); + break; + + case keyCodes.enter: + $keyboard.keyaction.enter(base, null, e); + break; + + // Show capsLock + case keyCodes.capsLock: + base.shiftActive = base.capsLock = !base.capsLock; + base.showSet(); + break; + + case keyCodes.V: + // prevent ctrl-v/cmd-v + if (e.ctrlKey || e.metaKey) { + if (o.preventPaste) { + e.preventDefault(); + return; + } + base.checkCombos(); // check pasted content + } + break; + } + }) + .bind('mouseup touchend '.split(' ').join(namespace + ' '), function () { + base.last.virtual = true; + base.saveCaret(); + }); + + // prevent keyboard event bubbling + base.$keyboard.bind('mousedown click touchstart '.split(' ').join(base.namespace + ' '), function (e) { + e.stopPropagation(); + if (!base.isCurrent()) { + base.reveal(); + $(base.el.ownerDocument).trigger('checkkeyboard' + base.namespace); + } + base.setFocus(); + }); + + // If preventing paste, block context menu (right click) + if (o.preventPaste) { + base.$preview.bind('contextmenu' + base.namespace, function (e) { + e.preventDefault(); + }); + base.$el.bind('contextmenu' + base.namespace, function (e) { + e.preventDefault(); + }); + } + + }; + + base.bindButton = function(events, handler) { + var button = '.' + $keyboard.css.keyButton, + callback = function(e) { + e.stopPropagation(); + // save closest keyboard wrapper/input to check in checkClose function + e.$target = $(this).closest('.' + $keyboard.css.keyboard + ', .' + $keyboard.css.input); + handler.call(this, e); + }; + if ($.fn.on) { + // jQuery v1.7+ + base.$keyboard.on(events, button, callback); + } else if ($.fn.delegate) { + // jQuery v1.4.2 - 3.0.0 + base.$keyboard.delegate(button, events, callback); + } + return base; + }; + + base.unbindButton = function(namespace) { + if ($.fn.off) { + // jQuery v1.7+ + base.$keyboard.off(namespace); + } else if ($.fn.undelegate) { + // jQuery v1.4.2 - 3.0.0 (namespace only added in v1.6) + base.$keyboard.undelegate('.' + $keyboard.css.keyButton, namespace); + } + return base; + }; + + base.bindKeys = function () { + var kbcss = $keyboard.css; + base + .unbindButton(base.namespace + ' ' + base.namespace + 'kb') + // Change hover class and tooltip - moved this touchstart before option.keyBinding touchstart + // to prevent mousewheel lag/duplication - Fixes #379 & #411 + .bindButton('mouseenter mouseleave touchstart '.split(' ').join(base.namespace + ' '), function (e) { + if ((o.alwaysOpen || o.userClosed) && e.type !== 'mouseleave' && !base.isCurrent()) { + base.reveal(); + base.setFocus(); + } + if (!base.isCurrent() || this.disabled) { + return; + } + var $keys, txt, + last = base.last, + $this = $(this), + type = e.type; + + if (o.useWheel && base.wheel) { + $keys = base.getLayers($this); + txt = ($keys.length ? $keys.map(function () { + return $(this).attr('data-value') || ''; + }) + .get() : '') || [$this.text()]; + last.wheel_$Keys = $keys; + last.wheelLayers = txt; + last.wheelIndex = $.inArray($this.attr('data-value'), txt); + } + + if ((type === 'mouseenter' || type === 'touchstart') && base.el.type !== 'password' && + !$this.hasClass(o.css.buttonDisabled)) { + $this.addClass(o.css.buttonHover); + if (o.useWheel && base.wheel) { + $this.attr('title', function (i, t) { + // show mouse wheel message + return (base.wheel && t === '' && base.sets && txt.length > 1 && type !== 'touchstart') ? + o.wheelMessage : t; + }); + } + } + if (type === 'mouseleave') { + // needed or IE flickers really bad + $this.removeClass((base.el.type === 'password') ? '' : o.css.buttonHover); + if (o.useWheel && base.wheel) { + last.wheelIndex = 0; + last.wheelLayers = []; + last.wheel_$Keys = []; + $this + .attr('title', function (i, t) { + return (t === o.wheelMessage) ? '' : t; + }) + .html($this.attr('data-html')); // restore original button text + } + } + }) + // keyBinding = 'mousedown touchstart' by default + .bindButton(o.keyBinding.split(' ').join(base.namespace + ' ') + base.namespace + ' ' + + $keyboard.events.kbRepeater, function (e) { + e.preventDefault(); + // prevent errors when external triggers attempt to 'type' - see issue #158 + if (!base.$keyboard.is(':visible') || this.disabled) { + return false; + } + var action, + last = base.last, + $key = $(this), + // prevent mousedown & touchstart from both firing events at the same time - see #184 + timer = new Date().getTime(); + + if (o.useWheel && base.wheel) { + // get keys from other layers/keysets (shift, alt, meta, etc) that line up by data-position + // target mousewheel selected key + $key = last.wheel_$Keys.length && last.wheelIndex > -1 ? last.wheel_$Keys.eq(last.wheelIndex) : $key; + } + action = $key.attr('data-action'); + if (timer - (last.eventTime || 0) < o.preventDoubleEventTime) { + return; + } + last.eventTime = timer; + last.event = e; + last.virtual = true; + last.$key = $key; + last.key = $key.attr('data-value'); + last.keyPress = ''; + // Start caret in IE when not focused (happens with each virtual keyboard button click + base.setFocus(); + if (/^meta/.test(action)) { + action = 'meta'; + } + // keyaction is added as a string, override original action & text + if (action === last.key && typeof $keyboard.keyaction[action] === 'string') { + last.key = action = $keyboard.keyaction[action]; + } else if (action in $keyboard.keyaction && $.isFunction($keyboard.keyaction[action])) { + // stop processing if action returns false (close & cancel) + if ($keyboard.keyaction[action](base, this, e) === false) { + return false; + } + action = null; // prevent inserting action name + } + // stop processing if keyboard closed and keyaction did not return false - see #536 + if (!base.hasKeyboard()) { + return false; + } + if (typeof action !== 'undefined' && action !== null) { + last.key = $(this).hasClass(kbcss.keyAction) ? action : last.key; + base.insertText(last.key); + if (!base.capsLock && !o.stickyShift && !e.shiftKey) { + base.shiftActive = false; + base.showSet($key.attr('data-name')); + } + } + // set caret if caret moved by action function; also, attempt to fix issue #131 + $keyboard.caret(base.$preview, last); + base.checkCombos(); + e = $.extend({}, e, $.Event($keyboard.events.kbChange)); + e.target = base.el; + e.action = last.key; + base.$el.trigger(e, [base, base.el]); + last.preVal = '' + last.val; + base.saveLastChange(); + + if ($.isFunction(o.change)) { + e.type = $keyboard.events.inputChange; + o.change(e, base, base.el); + // return false to prevent reopening keyboard if base.accept() was called + return false; + } + + }) + // using 'kb' namespace for mouse repeat functionality to keep it separate + // I need to trigger a 'repeater.keyboard' to make it work + .bindButton('mouseup' + base.namespace + ' ' + 'mouseleave touchend touchmove touchcancel '.split(' ') + .join(base.namespace + 'kb '), function (e) { + base.last.virtual = true; + var offset, + $this = $(this); + if (e.type === 'touchmove') { + // if moving within the same key, don't stop repeating + offset = $this.offset(); + offset.right = offset.left + $this.outerWidth(); + offset.bottom = offset.top + $this.outerHeight(); + if (e.originalEvent.touches[0].pageX >= offset.left && + e.originalEvent.touches[0].pageX < offset.right && + e.originalEvent.touches[0].pageY >= offset.top && + e.originalEvent.touches[0].pageY < offset.bottom) { + return true; + } + } else if (/(mouseleave|touchend|touchcancel)/i.test(e.type)) { + $this.removeClass(o.css.buttonHover); // needed for touch devices + } else { + if (!o.noFocus && base.isCurrent() && base.isVisible()) { + base.$preview.focus(); + } + if (base.checkCaret) { + $keyboard.caret(base.$preview, base.last); + } + } + base.mouseRepeat = [false, '']; + clearTimeout(base.repeater); // make sure key repeat stops! + if (o.acceptValid && o.autoAcceptOnValid) { + if ( + $.isFunction(o.validate) && + o.validate(base, base.getValue()) + ) { + base.$preview.blur(); + base.accept(); + } + } + return false; + }) + // prevent form submits when keyboard is bound locally - issue #64 + .bindButton('click' + base.namespace, function () { + return false; + }) + // Allow mousewheel to scroll through other keysets of the same (non-action) key + .bindButton('mousewheel' + base.namespace, base.throttleEvent(function (e, delta) { + var $btn = $(this); + // no mouse repeat for action keys (shift, ctrl, alt, meta, etc) + if (!$btn || $btn.hasClass(kbcss.keyAction) || base.last.wheel_$Keys[0] !== this) { + return; + } + if (o.useWheel && base.wheel) { + // deltaY used by newer versions of mousewheel plugin + delta = delta || e.deltaY; + var n, + txt = base.last.wheelLayers || []; + if (txt.length > 1) { + n = base.last.wheelIndex + (delta > 0 ? -1 : 1); + if (n > txt.length - 1) { + n = 0; + } + if (n < 0) { + n = txt.length - 1; + } + } else { + n = 0; + } + base.last.wheelIndex = n; + $btn.html(txt[n]); + return false; + } + }, 30)) + .bindButton('mousedown touchstart '.split(' ').join(base.namespace + 'kb '), function () { + var $btn = $(this); + // no mouse repeat for action keys (shift, ctrl, alt, meta, etc) + if ( + !$btn || ( + $btn.hasClass(kbcss.keyAction) && + // mouse repeated action key exceptions + !$btn.is('.' + kbcss.keyPrefix + ('tab bksp space enter'.split(' ').join(',.' + kbcss.keyPrefix))) + ) + ) { + return; + } + if (o.repeatRate !== 0) { + // save the key, make sure we are repeating the right one (fast typers) + base.mouseRepeat = [true, $btn]; + setTimeout(function () { + // don't repeat keys if it is disabled - see #431 + if (base && base.mouseRepeat[0] && base.mouseRepeat[1] === $btn && !$btn[0].disabled) { + base.repeatKey($btn); + } + }, o.repeatDelay); + } + return false; + }); + }; + + // No call on tailing event + base.throttleEvent = function(cb, time) { + var interm; + return function() { + if (!interm) { + cb.apply(this, arguments); + interm = true; + setTimeout(function() { + interm = false; + }, time); + } + }; + }; + + base.execCommand = function(cmd, str) { + base.el.ownerDocument.execCommand(cmd, false, str); + base.el.normalize(); + if (o.reposition) { + base.reposition(); + } + }; + + base.getValue = function ($el) { + $el = $el || base.$preview; + return $el[base.isContentEditable ? 'text' : 'val'](); + }; + + base.setValue = function (txt, $el) { + $el = $el || base.$preview; + if (base.isContentEditable) { + if (txt !== $el.text()) { + $keyboard.replaceContent($el, txt); + base.saveCaret(); + } + } else { + $el.val(txt); + } + return base; + }; + + // Insert text at caret/selection - thanks to Derek Wickwire for fixing this up! + base.insertText = function (txt) { + if (!base.$preview) { return base; } + if (typeof o.beforeInsert === 'function') { + txt = o.beforeInsert(base.last.event, base, base.el, txt); + } + if (typeof txt === 'undefined' || txt === false) { + base.last.key = ''; + return base; + } + if (base.isContentEditable) { + return base.insertContentEditable(txt); + } + var t, + bksp = false, + isBksp = txt === '\b', + // use base.$preview.val() instead of base.preview.value (val.length includes carriage returns in IE). + val = base.getValue(), + pos = $keyboard.caret(base.$preview), + len = val.length; // save original content length + + // silly IE caret hacks... it should work correctly, but navigating using arrow keys in a textarea + // is still difficult + // in IE, pos.end can be zero after input loses focus + if (pos.end < pos.start) { + pos.end = pos.start; + } + if (pos.start > len) { + pos.end = pos.start = len; + } + + if (base.preview.nodeName === 'TEXTAREA') { + // This makes sure the caret moves to the next line after clicking on enter (manual typing works fine) + if ($keyboard.msie && val.substr(pos.start, 1) === '\n') { + pos.start += 1; + pos.end += 1; + } + } + + t = pos.start; + if (txt === '{d}') { + txt = ''; + pos.end += 1; + } + + if (isBksp) { + txt = ''; + bksp = isBksp && t === pos.end && t > 0; + } + val = val.substr(0, t - (bksp ? 1 : 0)) + txt + val.substr(pos.end); + t += bksp ? -1 : txt.length; + + base.setValue(val); + base.saveCaret(t, t); // save caret in case of bksp + base.setScroll(); + // see #506.. allow chaining of insertText + return base; + }; + + base.insertContentEditable = function (txt) { + base.$preview.focus(); + base.execCommand('insertText', txt); + base.saveCaret(); + return base; + }; + + // check max length + base.checkMaxLength = function () { + if (!base.$preview) { return; } + var start, caret, + val = base.getValue(), + len = base.isContentEditable ? $keyboard.getEditableLength(base.el) : val.length; + if (o.maxLength !== false && len > o.maxLength) { + start = $keyboard.caret(base.$preview).start; + caret = Math.min(start, o.maxLength); + + // prevent inserting new characters when maxed #289 + if (!o.maxInsert) { + val = base.last.val; + caret = start - 1; // move caret back one + } + base.setValue(val.substring(0, o.maxLength)); + // restore caret on change, otherwise it ends up at the end. + base.saveCaret(caret, caret); + } + if (base.$decBtn.length) { + base.checkDecimal(); + } + // allow chaining + return base; + }; + + // mousedown repeater + base.repeatKey = function (key) { + key.trigger($keyboard.events.kbRepeater); + if (base.mouseRepeat[0]) { + base.repeater = setTimeout(function () { + if (base){ + base.repeatKey(key); + } + }, base.repeatTime); + } + }; + + base.getKeySet = function () { + var sets = []; + if (base.altActive) { + sets.push('alt'); + } + if (base.shiftActive) { + sets.push('shift'); + } + if (base.metaActive) { + // base.metaActive contains the string name of the + // current meta keyset + sets.push(base.metaActive); + } + return sets.length ? sets.join('+') : 'normal'; + }; + + // make it easier to switch keysets via API + // showKeySet('shift+alt+meta1') + base.showKeySet = function (str) { + if (typeof str === 'string') { + base.last.keyset = [base.shiftActive, base.altActive, base.metaActive]; + base.shiftActive = /shift/i.test(str); + base.altActive = /alt/i.test(str); + if (/\bmeta/.test(str)) { + base.metaActive = true; + base.showSet(str.match(/\bmeta[\w-]+/i)[0]); + } else { + base.metaActive = false; + base.showSet(); + } + } else { + base.showSet(str); + } + // allow chaining + return base; + }; + + base.showSet = function (name) { + if (!base.hasKeyboard()) { return; } + o = base.options; // refresh options + var kbcss = $keyboard.css, + prefix = '.' + kbcss.keyPrefix, + active = o.css.buttonActive, + key = '', + toShow = (base.shiftActive ? 1 : 0) + (base.altActive ? 2 : 0); + if (!base.shiftActive) { + base.capsLock = false; + } + // check meta key set + if (base.metaActive) { + // remove "-shift" and "-alt" from meta name if it exists + if (base.shiftActive) { + name = (name || '').replace('-shift', ''); + } + if (base.altActive) { + name = (name || '').replace('-alt', ''); + } + // the name attribute contains the meta set name 'meta99' + key = (/^meta/i.test(name)) ? name : ''; + // save active meta keyset name + if (key === '') { + key = (base.metaActive === true) ? '' : base.metaActive; + } else { + base.metaActive = key; + } + // if meta keyset doesn't have a shift or alt keyset, then show just the meta key set + if ((!o.stickyShift && base.last.keyset[2] !== base.metaActive) || + ((base.shiftActive || base.altActive) && + !base.$keyboard.find('.' + kbcss.keySet + '-' + key + base.rows[toShow]).length)) { + base.shiftActive = base.altActive = false; + } + } else if (!o.stickyShift && base.last.keyset[2] !== base.metaActive && base.shiftActive) { + // switching from meta key set back to default, reset shift & alt if using stickyShift + base.shiftActive = base.altActive = false; + } + toShow = (base.shiftActive ? 1 : 0) + (base.altActive ? 2 : 0); + key = (toShow === 0 && !base.metaActive) ? '-normal' : (key === '') ? '' : '-' + key; + if (!base.$keyboard.find('.' + kbcss.keySet + key + base.rows[toShow]).length) { + // keyset doesn't exist, so restore last keyset settings + base.shiftActive = base.last.keyset[0]; + base.altActive = base.last.keyset[1]; + base.metaActive = base.last.keyset[2]; + return; + } + base.$keyboard + .find(prefix + 'alt,' + prefix + 'shift,.' + kbcss.keyAction + '[class*=meta]') + .removeClass(active) + .end() + .find(prefix + 'alt') + .toggleClass(active, base.altActive) + .end() + .find(prefix + 'shift') + .toggleClass(active, base.shiftActive) + .end() + .find(prefix + 'lock') + .toggleClass(active, base.capsLock) + .end() + .find('.' + kbcss.keySet) + .hide() + .end() + .find('.' + (kbcss.keyAction + prefix + key).replace('--', '-')) + .addClass(active); + + // show keyset using inline-block ( extender layout will then line up ) + base.$keyboard.find('.' + kbcss.keySet + key + base.rows[toShow])[0].style.display = 'inline-block'; + if (base.metaActive) { + base.$keyboard.find(prefix + base.metaActive) + // base.metaActive contains the string "meta#" or false + // without the !== false, jQuery UI tries to transition the classes + .toggleClass(active, base.metaActive !== false); + } + base.last.keyset = [base.shiftActive, base.altActive, base.metaActive]; + base.$el.trigger($keyboard.events.kbKeysetChange, [base, base.el]); + if (o.reposition) { + base.reposition(); + } + }; + + // check for key combos (dead keys) + base.checkCombos = function () { + // return val for close function + if ( !( + base.isVisible() || ( + base.hasKeyboard() && + base.$keyboard.hasClass( $keyboard.css.hasFocus ) + ) + ) ) { + return base.getValue(base.$preview || base.$el); + } + var r, t, t2, repl, + // use base.$preview.val() instead of base.preview.value + // (val.length includes carriage returns in IE). + val = base.getValue(), + pos = $keyboard.caret(base.$preview), + layout = $keyboard.builtLayouts[base.layout], + max = base.isContentEditable ? $keyboard.getEditableLength(base.el) : val.length, + // save original content length + len = max; + // return if val is empty; fixes #352 + if (val === '') { + // check valid on empty string - see #429 + if (o.acceptValid) { + base.checkValid(); + } + return val; + } + + // silly IE caret hacks... it should work correctly, but navigating using arrow keys in a textarea + // is still difficult + // in IE, pos.end can be zero after input loses focus + if (pos.end < pos.start) { + pos.end = pos.start; + } + if (pos.start > len) { + pos.end = pos.start = len; + } + // This makes sure the caret moves to the next line after clicking on enter (manual typing works fine) + if ($keyboard.msie && val.substr(pos.start, 1) === '\n') { + pos.start += 1; + pos.end += 1; + } + + if (o.useCombos) { + // keep 'a' and 'o' in the regex for ae and oe ligature (æ,œ) + // thanks to KennyTM: http://stackoverflow.com/q/4275077 + // original regex /([`\'~\^\"ao])([a-z])/mig moved to $.keyboard.comboRegex + if ($keyboard.msie) { + // old IE may not have the caret positioned correctly, so just check the whole thing + val = val.replace(base.regex, function (s, accent, letter) { + return (o.combos.hasOwnProperty(accent)) ? o.combos[accent][letter] || s : s; + }); + // prevent combo replace error, in case the keyboard closes - see issue #116 + } else if (base.$preview.length) { + // Modern browsers - check for combos from last two characters left of the caret + t = pos.start - (pos.start - 2 >= 0 ? 2 : 0); + // target last two characters + $keyboard.caret(base.$preview, t, pos.end); + // do combo replace + t = $keyboard.caret(base.$preview); + repl = function (txt) { + return (txt || '').replace(base.regex, function (s, accent, letter) { + return (o.combos.hasOwnProperty(accent)) ? o.combos[accent][letter] || s : s; + }); + }; + t2 = repl(t.text); + // add combo back + // prevent error if caret doesn't return a function + if (t && t.replaceStr && t2 !== t.text) { + if (base.isContentEditable) { + $keyboard.replaceContent(el, repl); + } else { + base.setValue(t.replaceStr(t2)); + } + } + val = base.getValue(); + } + } + + // check input restrictions - in case content was pasted + if (o.restrictInput && val !== '') { + t = layout.acceptedKeys.length; + + r = layout.acceptedKeysRegex; + if (!r) { + t2 = $.map(layout.acceptedKeys, function (v) { + // escape any special characters + return v.replace(base.escapeRegex, '\\$&'); + }); + if (base.alwaysAllowed.indexOf($keyboard.keyCodes.enter) > -1) { + t2.push('\\n'); // Fixes #686 + } + r = layout.acceptedKeysRegex = new RegExp('(' + t2.join('|') + ')', 'g'); + } + // only save matching keys + t2 = val.match(r); + if (t2) { + val = t2.join(''); + } else { + // no valid characters + val = ''; + len = 0; + } + } + + // save changes, then reposition caret + pos.start += max - len; + pos.end += max - len; + + base.setValue(val); + base.saveCaret(pos.start, pos.end); + // set scroll to keep caret in view + base.setScroll(); + base.checkMaxLength(); + + if (o.acceptValid) { + base.checkValid(); + } + return val; // return text, used for keyboard closing section + }; + + // Toggle accept button classes, if validating + base.checkValid = function () { + var kbcss = $keyboard.css, + $accept = base.$keyboard.find('.' + kbcss.keyPrefix + 'accept'), + valid = true; + if ($.isFunction(o.validate)) { + valid = o.validate(base, base.getValue(), false); + } + // toggle accept button classes; defined in the css + $accept + .toggleClass(kbcss.inputInvalid, !valid) + .toggleClass(kbcss.inputValid, valid) + // update title to indicate that the entry is valid or invalid + .attr('title', $accept.attr('data-title') + ' (' + o.display[valid ? 'valid' : 'invalid'] + ')'); + }; + + // Decimal button for num pad - only allow one (not used by default) + base.checkDecimal = function () { + // Check US '.' or European ',' format + if ((base.decimal && /\./g.test(base.preview.value)) || + (!base.decimal && /\,/g.test(base.preview.value))) { + base.$decBtn + .attr({ + 'disabled': 'disabled', + 'aria-disabled': 'true' + }) + .removeClass(o.css.buttonHover) + .addClass(o.css.buttonDisabled); + } else { + base.$decBtn + .removeAttr('disabled') + .attr({ + 'aria-disabled': 'false' + }) + .addClass(o.css.buttonDefault) + .removeClass(o.css.buttonDisabled); + } + }; + + // get other layer values for a specific key + base.getLayers = function ($el) { + var kbcss = $keyboard.css, + key = $el.attr('data-pos'), + $keys = $el.closest('.' + kbcss.keyboard) + .find('button[data-pos="' + key + '"]'); + return $keys.filter(function () { + return $(this) + .find('.' + kbcss.keyText) + .text() !== ''; + }) + .add($el); + }; + + // Go to next or prev inputs + // goToNext = true, then go to next input; if false go to prev + // isAccepted is from autoAccept option or true if user presses shift+enter + base.switchInput = function (goToNext, isAccepted) { + if ($.isFunction(o.switchInput)) { + o.switchInput(base, goToNext, isAccepted); + } else { + // base.$keyboard may be an empty array - see #275 (apod42) + if (base.$keyboard.length) { + base.$keyboard.hide(); + } + var kb, + stopped = false, + all = $('button, input, select, textarea, a, [contenteditable]') + .filter(':visible') + .not(':disabled'), + indx = all.index(base.$el) + (goToNext ? 1 : -1); + if (base.$keyboard.length) { + base.$keyboard.show(); + } + if (indx > all.length - 1) { + stopped = o.stopAtEnd; + indx = 0; // go to first input + } + if (indx < 0) { + stopped = o.stopAtEnd; + indx = all.length - 1; // stop or go to last + } + if (!stopped) { + isAccepted = base.close(isAccepted); + if (!isAccepted) { + return; + } + kb = all.eq(indx).data('keyboard'); + if (kb && kb.options.openOn.length) { + kb.focusOn(); + } else { + all.eq(indx).focus(); + } + } + } + return false; + }; + + // Close the keyboard, if visible. Pass a status of true, if the content was accepted + // (for the event trigger). + base.close = function (accepted) { + if (base.isOpen && base.$keyboard.length) { + clearTimeout(base.throttled); + var kbcss = $keyboard.css, + kbevents = $keyboard.events, + val = accepted ? base.checkCombos() : base.originalContent; + // validate input if accepted + if (accepted && $.isFunction(o.validate) && !o.validate(base, val, true)) { + val = base.originalContent; + accepted = false; + if (o.cancelClose) { + return; + } + } + base.isCurrent(false); + base.isOpen = o.alwaysOpen || o.userClosed; + if (base.isContentEditable && !accepted) { + // base.originalContent stores the HTML + base.$el.html(val); + } else { + base.setValue(val, base.$el); + } + base.$el + .removeClass(kbcss.isCurrent + ' ' + kbcss.inputAutoAccepted) + // add 'ui-keyboard-autoaccepted' to inputs - see issue #66 + .addClass((accepted || false) ? accepted === true ? '' : kbcss.inputAutoAccepted : '') + // trigger default change event - see issue #146 + .trigger(kbevents.inputChange); + // don't trigger an empty event - see issue #463 + if (!o.alwaysOpen) { + // don't trigger beforeClose if keyboard is always open + base.$el.trigger(kbevents.kbBeforeClose, [base, base.el, (accepted || false)]); + } + // save caret after updating value (fixes userClosed issue with changing focus) + $keyboard.caret(base.$preview, base.last); + + base.$el + .trigger(((accepted || false) ? kbevents.inputAccepted : kbevents.inputCanceled), [base, base.el]) + .trigger((o.alwaysOpen) ? kbevents.kbInactive : kbevents.kbHidden, [base, base.el]) + .blur(); + + // base is undefined if keyboard was destroyed - fixes #358 + if (base) { + // add close event time + base.last.eventTime = new Date().getTime(); + if (!(o.alwaysOpen || o.userClosed && accepted === 'true') && base.$keyboard.length) { + // free up memory + base.removeKeyboard(); + // rebind input focus - delayed to fix IE issue #72 + base.timer = setTimeout(function () { + if (base) { + base.bindFocus(); + } + }, 200); + } + if (!base.watermark && base.el.value === '' && base.inPlaceholder !== '') { + base.$el.addClass(kbcss.placeholder); + base.setValue(base.inPlaceholder, base.$el); + } + } + } + return !!accepted; + }; + + base.accept = function () { + return base.close(true); + }; + + base.checkClose = function (e) { + if (base.opening) { + return; + } + var kbcss = $.keyboard.css, + $target = e.$target || $(e.target).closest('.' + $keyboard.css.keyboard + ', .' + $keyboard.css.input); + if (!$target.length) { + $target = $(e.target); + } + // needed for IE to allow switching between keyboards smoothly + if ($target.length && $target.hasClass(kbcss.keyboard)) { + var kb = $target.data('keyboard'); + // only trigger on self + if ( + kb !== base && + !kb.$el.hasClass(kbcss.isCurrent) && + kb.options.openOn && + e.type === o.openOn + ) { + kb.focusOn(); + } + } else { + base.escClose(e, $target); + } + }; + + // callback functions called to check if the keyboard needs to be closed + // e.g. on escape or clicking outside the keyboard + base.escCloseCallback = { + // keep keyboard open if alwaysOpen or stayOpen is true - fixes mutliple + // always open keyboards or single stay open keyboard + keepOpen: function() { + return !base.isOpen; + } + }; + + base.escClose = function (e, $el) { + if (!base.isOpen) { + return; + } + if (e && e.type === 'keyup') { + return (e.which === $keyboard.keyCodes.escape && !o.ignoreEsc) ? + base.close(o.autoAccept && o.autoAcceptOnEsc ? 'true' : false) : + ''; + } + var shouldStayOpen = false, + $target = $el.length && $el || $(e.target); + $.each(base.escCloseCallback, function(i, callback) { + if (typeof callback === 'function') { + shouldStayOpen = shouldStayOpen || callback($target); + } + }); + if (shouldStayOpen) { + return; + } + // ignore autoaccept if using escape - good idea? + if (!base.isCurrent() && base.isOpen || base.isOpen && $target[0] !== base.el) { + // don't close if stayOpen is set; but close if a different keyboard is being opened + if ((o.stayOpen || o.userClosed) && !$target.hasClass($keyboard.css.input)) { + return; + } + // stop propogation in IE - an input getting focus doesn't open a keyboard if one is already open + if ($keyboard.allie) { + e.preventDefault(); + } + if (o.closeByClickEvent) { + // only close the keyboard if the user is clicking on an input or if they cause a click + // event (touchstart/mousedown will not force the close with this setting) + var name = $target[0] && $target[0].nodeName.toLowerCase(); + if (name === 'input' || name === 'textarea' || e.type === 'click') { + base.close(o.autoAccept ? 'true' : false); + } + } else { + // send 'true' instead of a true (boolean), the input won't get a 'ui-keyboard-autoaccepted' + // class name - see issue #66 + base.close(o.autoAccept ? 'true' : false); + } + } + }; + + // Build default button + base.keyBtn = $(' + + + +
+ + +
+ + +
+ +

+ Virtual Keyboard
+ +

+ + +
Original by + Jeremy Satterfield, + updated & maintained by Rob Garrison +
+ +
    +
  • ...
  • +
  • ...
  • +
  • ...
  • +
  • ...
  • +
  • ...
  • +
+ +
+ Click inside the input or textarea to open the keyboard
+ Click on the keyboard title, then scroll down to see its code +
+ +
+

+ Custom: Contenteditable +

+
This +is a content editable div with a custom keyboard +layout. Press Enter to add new lines.
+
+ + * Contenteditable support (v1.27.0-beta).
+ * usePreview disabled.
+ * Custom layout used. +
+
+

HTML

+
<div id="contenteditable" contenteditable="true">This
+is a <em>content editable</em> div with a custom keyboard
+<strong>layout</strong>. Press <kbd>Enter</kbd> to add new lines.</div>
+

Script

+
$.keyboard.keyaction.undo = function (base) {
+	base.execCommand('undo');
+	return false;
+};
+$.keyboard.keyaction.redo = function (base) {
+	base.execCommand('redo');
+	return false;
+};
+
+$('#contenteditable').keyboard({
+	usePreview: true, // disabled for contenteditable
+	useCombos: false,
+	autoAccept: true,
+	layout: 'custom',
+	customLayout: {
+		'normal': [
+			'` 1 2 3 4 5 6 7 8 9 0 - = {del} {b}',
+			'{tab} q w e r t y u i o p [ ] \\',
+			'a s d f g h j k l ; \' {enter}',
+			'{shift} z x c v b n m , . / {shift}',
+			'{accept} {space} {left} {right} {undo:Undo} {redo:Redo}'
+		],
+		'shift': [
+			'~ ! @ # $ % ^ & * ( ) _ + {del} {b}',
+			'{tab} Q W E R T Y U I O P { } |',
+			'A S D F G H J K L : " {enter}',
+			'{shift} Z X C V B N M < > ? {shift}',
+			'{accept} {space} {left} {right} {undo:Undo} {redo:Redo}'
+		]
+	},
+	display: {
+		del: '\u2326:Delete',
+		redo: '↻',
+		undo: '↺'
+	}
+})
+.addTyping();
+
+
+ +
+

+ QWERTY Text +

+ +
+ + * Placeholder (watermark).
+ * Autocomplete extension. +
+
+

HTML

+
<input id="text" type="text" placeholder=" Enter something...">
+

Script

+
// Autocomplete demo
+var availableTags = ["ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure",
+	"COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript",
+	"Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme" ];
+
+$('#text')
+	.keyboard({ layout: 'qwerty' })
+	.autocomplete({
+		source: availableTags
+	})
+	// position options added after v1.23.4
+	.addAutocomplete({
+		position : {
+			of : null,        // when null, element will default to kb.$keyboard
+			my : 'right top', // 'center top', (position under keyboard)
+			at : 'left top',  // 'center bottom',
+			collision: 'flip'
+		}
+	})
+	.addTyping();
+
+
+ +
+

+ QWERTY Password + +

+ +
+ + * Click icon to open keyboard.
+ * Stay open until accept/cancel/esc.
+ * Key hover disabled in this type.
+ * Demo: Reveal letters with Caret extension. +
+
+

HTML

+
<img id="passwd" class="tooltip-tipsy" title="Click to open the virtual keyboard" src="css/images/keyboard.svg">
+<input id="password" type="password">
+

Script

+
$('#password')
+	.keyboard({
+		openOn : null,
+		stayOpen : true,
+		layout : 'qwerty'
+	})
+	.addTyping();
+
+$('#password-opener').click(function(){
+	var kb = $('#password').getkeyboard();
+	// close the keyboard if the keyboard is visible and the button is clicked a second time
+	if ( kb.isOpen ) {
+		kb.close();
+	} else {
+		kb.reveal();
+	}
+});
+
+
+ +
+

+ QWERTY (mod) Text Area +

+ +
+ + * Locked input (no manual input).
+ * Known readonly bug in Safari.
+ * Caret extension. +
+
+

HTML

+
<textarea id="qwerty-mod"></textarea>
+

Script

+
$('#qwerty-mod')
+	.keyboard({
+		lockInput: true, // prevent manual keyboard entry
+		layout: 'custom',
+		customLayout: {
+			'normal': [
+				'` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',
+				'{tab} q w e r t y u i o p [ ] \\',
+				'a s d f g h j k l ; \' {enter}',
+				'{shift} z x c v b n m , . / {shift}',
+				'{accept} {space} {left} {right}'
+			],
+			'shift': [
+				'~ ! @ # $ % ^ & * ( ) _ + {bksp}',
+				'{tab} Q W E R T Y U I O P { } |',
+				'A S D F G H J K L : " {enter}',
+				'{shift} Z X C V B N M < > ? {shift}',
+				'{accept} {space} {left} {right}'
+			]
+		}
+	})
+	.addCaret({
+		// extra class name added to the caret
+		// "ui-keyboard-caret" class is always added
+		caretClass : '',
+		// *** for future use ***
+		// data-attribute containing the character(s) next to the caret
+		charAttr   : 'data-character',
+		// # character(s) next to the caret (can be negative for RTL)
+		charIndex  : 1,
+		// caret position adjustments
+		offsetX    : 0,
+		offsetY    : 0
+	})
+	.addTyping();
+

CSS

+
.ui-keyboard-caret {
+	background: #c00;
+	width: 1px;
+	margin-top: 3px;
+}
+
+
+ +
+

+ International + +

+ +
+ + * Bootswatch Darkly theme.
+ * Typing extension.
+ * See basic non-library theme. +
+
+

HTML

+
<img id="inter-type" class="tooltip-tipsy" title="Try out the typing extension!" src="css/images/keyboard.svg">
+<textarea id="inter"></textarea>
+

CSS

+
/* override bootstrap active state */
+button.btn-default:active {
+	background-color: #FFF;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+button.btn-default:active:hover {
+	background-color: #3276B1;
+}
+/* override Bootstrap excessive button padding */
+button.ui-keyboard-button.btn {
+	padding: 1px 6px;
+}
+/* Bootswatch Darkly input is too bright */
+.ui-keyboard-input.light, .ui-keyboard-preview.light { color: #222; background: #ddd; }
+.ui-keyboard-input.dark, .ui-keyboard-preview.dark { color: #ddd; background: #222; }
+
+

Script

+
$('#inter')
+	.keyboard({
+		layout: 'international',
+		css: {
+			// input & preview
+			// "label-default" for a darker background
+			// "light" for white text
+			input: 'form-control input-sm dark',
+			// keyboard container
+			container: 'center-block well',
+			// default state
+			buttonDefault: 'btn btn-default',
+			// hovered button
+			buttonHover: 'btn-primary',
+			// Action keys (e.g. Accept, Cancel, Tab, etc);
+			// this replaces "actionClass" option
+			buttonAction: 'active',
+			// used when disabling the decimal button {dec}
+			// when a decimal exists in the input area
+			buttonDisabled: 'disabled'
+		}
+	})
+	.addTyping();
+
+// Script - typing extension
+// simulate typing into the keyboard, use:
+// \t or {t} = tab, \b or {b} = backspace, \r or \n or {e} = enter
+// added {l} = caret left, {r} = caret right & {d} = delete
+$('#inter-type').click(function(){
+	$('#inter').getkeyboard().reveal().typeIn("{t}Hal{l}{l}{d}e{r}{r}l'o{b}o {e}{t}World", 500);
+	return false;
+});
+
+
+ +
+

+ Alphabetical +

+ +
+

HTML

+
<textarea id="alpha"></textarea>
+

Script

+
$('#alpha')
+	.keyboard({ layout: 'alpha' })
+	.addTyping();
+
+
+ +
+

+ Colemak +

+ +
+

HTML

+
<textarea id="colemak"></textarea>
+

Script

+
$('#colemak')
+	.keyboard({ layout: 'colemak' })
+	.addTyping();
+
+
+ +
+

+ Dvorak +

+ +
+

HTML

+
<textarea id="dvorak"></textarea>
+

Script

+
$('#dvorak')
+	.keyboard({ layout: 'dvorak' })
+	.addTyping();
+
+
+ + +
+

+ Num Pad +

+ +
+ + * Input restricted.
+ * Pasting (ctrl-v) not allowed.
+ * Auto accept content. +
+
+

HTML

+
<input id="num" class="alignRight" type="text">
+

Script

+
$('#num')
+	.keyboard({
+		layout : 'num',
+		restrictInput : true, // Prevent keys not in the displayed keyboard from being typed in
+		preventPaste : true,  // prevent ctrl-v and right click
+		autoAccept : true
+	})
+	.addTyping();
+
+
+ +
+

+ Custom: Hex +

+ +
+ + * maxLength = 6.
+ * Input restricted.
+ * Lowercase included.
+ * Valid @ length = 6. +
+
+

HTML

+
+<input id="hex" type="text">
+

Script

+
$('#hex')
+	.keyboard({
+		layout: 'custom',
+		customLayout: {
+			'normal' : [
+				'C D E F',
+				'8 9 A B',
+				'4 5 6 7',
+				'0 1 2 3',
+				'{bksp} {a} {c}'
+			]
+		},
+		maxLength : 6,
+		// Prevent keys not in the displayed keyboard from being typed in
+		restrictInput : true,
+		// include lower case characters (added v1.25.7)
+		restrictInclude : 'a b c d e f',
+		// don't use combos or A+E could become a ligature
+		useCombos : false,
+		// activate the "validate" callback function
+		acceptValid : true,
+		validate : function(keyboard, value, isClosing){
+			// only make valid if input is 6 characters in length
+			return value.length === 6;
+		}
+	})
+	.addTyping();
+
+
+ +
+

+ Custom: Meta Sets + +

+ +
+ + * Typing extension.
+ * Keyboard opens showing last keyset.
+ * userClosed set (accept/cancel to close). +
+
+

HTML

+
<textarea id="meta"></textarea>
+

Script

+
$('#meta')
+	.keyboard({
+		// keyboard will open showing last key set used
+		resetDefault: false,
+		userClosed: true, // keyboard open until user closes with accept or cancel
+		autoAccept: true, // required for userClosed: true
+		layout: 'custom',
+		display: {
+			'alt'    : 'AltGr:It\'s all Greek to me',
+			// in v1.26.8, meta keys can be named `meta` followed by any letter, underscore or dash.
+			// older versions would only allow the name `meta` followed by a number, then any letter or underscore
+			// see https://github.com/Mottie/Keyboard/issues/504
+			'meta1'  : '\u2666:end of alphabet', // Diamond with label that shows in the title (spaces are okay here)
+			'meta-2' : '\u2665:Russian',         // Heart
+			'meta3'  : '\u2663:zodiac',          // Club
+			'meta_9' : '\u2660:numbers'          // Spade
+		},
+		customLayout: {
+			'normal' : [
+				// Add labels using a ":" after the key's name and replace spaces with "_"
+				// without the labels this line is just 'a b c d e f g'
+				'a:a_letter,_that_sounds_like_"ey" b:a_bug_that_makes_honey c:is_when_I_look_around d:a_grade,_I_never_got e:is_what_girls_say_when_they_run_away_from_me f:u,_is_what_I_say_to_those_screaming_girls! g:gee,_is_that_the_end_of_my_wittiness?',
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'shift' : [
+				'A B C D E F G',
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'alt' : [
+				'\u03b1 \u03b2 \u03b3 \u03b4 \u03b5 \u03b6 \u03b7', // lower case Greek
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'alt-shift' : [
+				'\u0391 \u0392 \u0393 \u0394 \u0395 \u0396 \u0397', // upper case Greek
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta1' : [
+				't u v w x y z', // lower case end of alphabet
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta1-shift' : [
+				'T U V W X Y Z', // upper case
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta1-alt' : [
+				'0 9 8 7 6 5 4', // numbers
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta1-alt-shift' : [
+				') ( * & ^ % $', // shifted numbers
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta-2' : [
+				'\u0430 \u0431 \u0432 \u0433 \u0434 \u0435 \u0436', // lower case Russian
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta-2-shift' : [
+				'\u0410 \u0411 \u0412 \u0413 \u0414 \u0415 \u0416', // upper case Russian
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta3' : [
+				'\u2648 \u2649 \u264A \u264B \u264C \u264D \u264E', // Zodiac
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			],
+			'meta_9' : [
+				'1 2 3 4 5 6 7', // only because I ran out of ideas
+				'{shift} {alt} {meta1} {meta-2} {meta3} {meta_9}',
+				'{bksp} {sp:1} {accept} {cancel}'
+			]
+		}
+	})
+	.addTyping();
+
+// Script - typing extension
+var meta = $('#meta').getkeyboard();
+meta
+	.reveal()
+	.typeIn('aBcD1112389\u0411\u2648\u2649', 700, function(){
+		meta.accept();
+		alert('all done!');
+	});
+
+
+ +
+

+ Custom: Junk +

+ +
+ + * Use shift key - see action key sizes.
+ * Use the decimal - only one allowed.
+ * Toggle combo key included.
+ * Type in 'ae' and other combo keys.
+ * Accept content to see the callback. +
+
+

HTML

+
<textarea id="junk"></textarea>
+

Script

+
$('#junk')
+	.keyboard({
+		layout: 'custom',
+		customLayout: {
+			'normal' : [
+				'a e i o u y c',
+				'` \' " ~ ^ {dec} {combo}',
+				'{tab} {enter} {bksp}',
+				'{space}',
+				'{accept} {cancel} {shift}'
+			],
+			'shift' : [
+				'A E I O U Y C',
+				'` \' " ~ ^ {dec} {combo}',
+				'{t} {sp:1} {e} {sp:1} {b}',
+				'{space}',
+				'{a} {sp:1} {c} {sp:1} {s}'
+			]
+		},
+		// Added here as an example on how to add combos
+		combos : {
+			'a' : { e: '\u00e6' },
+			'A' : { E: '\u00c6' }
+		},
+		// example callback function
+		accepted : function(e, keyboard, el){ alert('The content "' + el.value + '" was accepted!'); }
+	})
+	.addTyping();
+
+
+ +
+

+ Custom: Mapped Keys +

+ +
+ + * No preview window.
+ * Type in a-g.
+ * Type in A-G (shifted).
+
+
+

HTML

+
<textarea id="map"></textarea>
+

Script

+
// *** Mapped keys ***
+$('#map').keyboard({
+	layout: 'custom',
+	customLayout: {
+		'normal' : [
+			// "n(a):title_or_tooltip"; n = new key, (a) = actual key, ":label" = title_or_tooltip (use an underscore "_" in place of a space " ")
+			'\u03b1(a):lower_case_alpha_(type_a) \u03b2(b):lower_case_beta_(type_b) \u03b3(c):lower_case_gamma_(type_c) \u03b4(d):lower_case_delta_(type_d) \u03b5(e):lower_case_epsilon_(type_e) \u03b6(f):lower_case_zeta_(type_f) \u03b7(g):lower_case_eta_(type_g)', // lower case Greek
+			'{shift} {accept} {cancel}'
+		],
+		'shift' : [
+			'\u0391(A) \u0392(B) \u0393(C) \u0394(D) \u0395(E) \u0396(F) \u0397(G)', // upper case Greek
+			'{shift} {accept} {cancel}'
+		]
+	},
+	usePreview: false // no preveiw
+});
+
+
+ +
+

+ Custom: Hidden +

+ Hidden input + + +
+

HTML

+
<a href="#" class="hiddenInput">Hidden input</a>
+<!-- DON'T use type="hidden" because IE doesn't like hidden inputs -->
+<input id="hidden" type="text" style="display:none;">
+

Script

+
// *** Hidden input example ***
+// click on a link - add focus to hidden input
+$('.hiddenInput').click(function(){
+	$('#hidden').data('keyboard').reveal();
+	return false;
+});
+// Initialize keyboard script on hidden input
+// set "position.of" to the same link as above
+$('#hidden')
+	.keyboard({
+		layout   : 'qwerty',
+		position : {
+			of : $('.hiddenInput'),
+			my : 'center top',
+			at : 'center top'
+		}
+	})
+	.addTyping();
+
+
+ +
+

+ Custom: iPad +

+ +
+ + * Thanks to gitaarik for sharing!. + +
+

HTML

+
<textarea id="ipad"></textarea>
+

Script

+
$('#ipad').keyboard({
+
+	display: {
+		'bksp'   :  "\u2190",
+		'accept' : 'return',
+		'normal' : 'ABC',
+		'meta1'  : '.?123',
+		'meta2'  : '#+='
+	},
+
+	layout: 'custom',
+	customLayout: {
+		'normal': [
+			'q w e r t y u i o p {bksp}',
+			'a s d f g h j k l {enter}',
+			'{s} z x c v b n m , . {s}',
+			'{meta1} {space} {meta1} {accept}'
+		],
+		'shift': [
+			'Q W E R T Y U I O P {bksp}',
+			'A S D F G H J K L {enter}',
+			'{s} Z X C V B N M ! ? {s}',
+			'{meta1} {space} {meta1} {accept}'
+		],
+		'meta1': [
+			'1 2 3 4 5 6 7 8 9 0 {bksp}',
+			'- / : ; ( ) \u20ac & @ {enter}',
+			'{meta2} . , ? ! \' " {meta2}',
+			'{normal} {space} {normal} {accept}'
+		],
+		'meta2': [
+			'[ ] { } # % ^ * + = {bksp}',
+			'_ \\ | ~ < > $ \u00a3 \u00a5 {enter}',
+			'{meta1} . , ? ! \' " {meta1}',
+			'{normal} {space} {normal} {accept}'
+		]
+	}
+
+});
+
+
+ +
+

+ Custom: iPad email +

+ +
+ + * Thanks to gitaarik for sharing!. + +
+

HTML

+
<textarea id="ipad-email"></textarea>
+

Script

+
$('#ipad-email').keyboard({
+
+	display: {
+		'bksp'   : '\u2190',
+		'enter'  : 'return',
+		'normal' : 'ABC',
+		'meta1'  : '.?123',
+		'meta2'  : '#+=',
+		'accept' : '\u21d3'
+	},
+
+	layout: 'custom',
+	customLayout: {
+		'normal': [
+			'q w e r t y u i o p {bksp}',
+			'a s d f g h j k l {enter}',
+			'{s} z x c v b n m @ . {s}',
+			'{meta1} {space} _ - {accept}'
+		],
+		'shift': [
+			'Q W E R T Y U I O P {bksp}',
+			'A S D F G H J K L {enter}',
+			'{s} Z X C V B N M @ . {s}',
+			'{meta1} {space} _ - {accept}'
+		],
+		'meta1': [
+			'1 2 3 4 5 6 7 8 9 0 {bksp}',
+			'` | { } % ^ * / \' {enter}',
+			'{meta2} $ & ~ # = + . {meta2}',
+			'{normal} {space} ! ? {accept}'
+		],
+		'meta2': [
+			'[ ] { } \u2039 \u203a ^ * " , {bksp}',
+			'\\ | / < > $ \u00a3 \u00a5 \u2022 {enter}',
+			'{meta1} \u20ac & ~ # = + . {meta1}',
+			'{normal} {space} ! ? {accept}'
+		]
+	}
+
+});
+
+
+ +
+

+ Custom: Lockable +

+ +
+ + * cursor arrow keys.
+ * keyboard enable/disable toggle.
+ * include {del} key (opposite of {bksp}) +
+
+

HTML

+
<input id="lockable" type="text">
+

Script

+
$('#lockable').keyboard({
+	layout: 'custom',
+	customLayout: {
+		'normal': [
+			'` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',
+			'{tab} q w e r t y u i o p [ ] \\',
+			'a s d f g h j k l ; \' {enter}',
+			'{shift} z x c v b n m , . / {shift}',
+			'{accept} {space} {left} {right} {sp:.2} {del} {toggle}'
+		],
+		'shift': [
+			'~ ! @ # $ % ^ & * ( ) _ + {bksp}',
+			'{tab} Q W E R T Y U I O P { } |',
+			'A S D F G H J K L : " {enter}',
+			'{shift} Z X C V B N M < > ? {shift}',
+			'{accept} {space} {left} {right} {sp:.2} {del} {toggle}'
+		]
+	},
+	css: {
+		// add dark themed class to keyboard popup
+		// to use bright svg padlock icon
+		popup : 'ui-keyboard-dark-theme'
+	}
+})
+.addTyping();
+
+
+ + +
+ + + +
+ + diff --git a/app/Resources/public/assets/keyboard/keyboard.jquery.json b/app/Resources/public/assets/keyboard/keyboard.jquery.json new file mode 100644 index 0000000000..903d3fde5f --- /dev/null +++ b/app/Resources/public/assets/keyboard/keyboard.jquery.json @@ -0,0 +1,40 @@ +{ + "name": "keyboard", + "title": "Keyboard", + "version": "1.28.7", + "description": "Virtual Keyboard using jQuery UI", + "author": { + "name": "Jeremy Satterfield", + "url": "https://github.com/jsatt" + }, + "maintainers": [ + { + "name": "Rob Garrison", + "url": "https://github.com/Mottie", + "email": "wowmotty@gmail.com" + } + ], + "licenses": [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/mit-license.php" + } + ], + "homepage": "http://wowmotty.blogspot.com/2010/11/jquery-ui-keyboard-widget.html", + "bugs": "https://github.com/Mottie/Keyboard/issues", + "docs": "https://github.com/Mottie/Keyboard/wiki", + "demo": "https://mottie.github.io/Keyboard/", + "dependencies": { + "jquery": ">=1.4.3" + }, + "keywords": [ + "customizable", + "keyboard", + "ui", + "accessibility", + "osk" + ], + "files": [ + "dist/**/*" + ] +} \ No newline at end of file diff --git a/app/Resources/public/assets/keyboard/languages/README.md b/app/Resources/public/assets/keyboard/languages/README.md new file mode 100644 index 0000000000..90b017aa05 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/README.md @@ -0,0 +1,241 @@ +# Language Files + +## I need your help! +The language file translations are incomplete :cry: + +File names are typically named after their [ISO 639-1](http://www.loc.gov/standards/iso639-2/php/English_list.php) two letter code. If a three letter code is needed, then please feel free to include it. + +Any missing language files, or language files with "untranslated" in the file name (e.g. `"mn.untranslated.js"`) indicate that no translation has been made for that language. If you are willing, your assistance would be greatly appreciated in making these translations! + +## What do I need to do? + +Start with the `_language_template.js` file. I'll try to break down each section to make it easier: + +### Naming the file +If you don't know the language ISO 639-1 or ISO 639-2 code, [look it up here](http://www.loc.gov/standards/iso639-2/php/English_list.php). I have been using the two letter code, but if the three letter code is needed, please feel free to use it. + +Now save the template file using the language code as the file name (e.g. `"ru.js"`) + +Inside the template, change "all" to the language code. Then change the `language` parameter to the native name of the language plus the English name in parentheses. In this example, lets say we're working on Russian, so the result would look like this: + +```js +jQuery.keyboard.language.ru = { + language: 'Русский (Russian)', +``` + +### Display text + +In this section, text that appears on the keyboard and in the tooltips will need to be translated. For example, if you look at the first line: + +```js +'a' : '\u2714:Accept (Shift+Enter)', +``` + +* The `'a'` should not be modified! + * This is the key used by the keyboard plugin to indicate that a smaller version of the accept key is being used. + * The full version equivalent would be `'accept'`, but really there is no difference between the two. You can make the text of the `'a'` key exactly match the `'accept'` key. +* The `\u2714` is the javascript unicode hex value for a [check mark](http://www.fileformat.info/info/unicode/char/2714/index.htm). + * The reason the unicode is used here is because of issues of files being converted to file types other than UTF-8 will corrupt the symbols. + * It is also acceptable to use `✔` or `✔` (decimal) here. + * See the [get unicode value](#getting-a-unicode-value) section for more information. +* The colon (`:`) separates the text of the keyboard action key from the title/tooltip. +* `"Accept (Shift+Enter)"` becomes the action key title/tooltip text and is only visible when the user hovers over the key with a mouse. + +### Decimal + +Within the display text is the `'dec'` definition. + +```js +'dec' : '.:Decimal', +``` + +This action key is used in the "num" (number pad) layout and will disable itself if the symbol is contained within the input/textarea content, since only one symbol is allowed. + +Some languages use the comma to indicate fractional values in the number format. In this case, change the value of this display text from a period to a comma. + +```js +'dec' : ',:Decimal', +``` + +And don't forget to modify or remove the tooltip! + +### Wheel message + +This message is displayed over non-action keys to indicate there are other keysets assigned to the key being hovered over, and using the mousewheel will allow the user quick access to those alternative keys. Only keys in the other keysets in the same position as the hovered key will be shown while scrolling. + +```js +wheelMessage : 'Use mousewheel to see other keys' +``` + +Some users/developers might find this tooltip annoying, so remove it as desired. + +### Combos + +This may be a difficult section to deal with, so ignore it as desired. + +* First off, combination (dead keys) have been included to allow typing a key that is typically found on standard US keyboards to allow easier typing in of accented or special characters. +* When the `useCombos` option is `true` (set as default), entering in `~a` (tilde + a) would result in `ã`. +* This section allows customizing this behavior. + +Skipping over the `comboRegex` definition for now, look at the `combos` definitions. Here is a simplified tilde definition: + +```js +'~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc" } +``` + +* The left side `'~'` defines the first key of the combination that the user will type in. +* The right side contains the second key of the combination. Notice that both lower and upper case letters have been included. +* So combining `'~'` with `'a'` will return `\u00e3` which is the javascript unicode hex value for this character: `ã`. +* Combining `'~'` with `'A'` will return `\u00c3` which becomes `Ã`, and so on. +* Add more, or remove combinations from this definition as desired. +* If using basic letters `a-z` as the second key of the combination, then no changes will be made to the `comboRegex` definition. + +Now lets say you want to add the combination `|0` (vertical bar + zero) to create `'ϕ'` (it's an example, just go with it; see the [get unicode value](#getting-a-unicode-value) section on how to get a unicode value) + +* A new combo will need to be added + + ```js + '|' : { 0:"\u0ed5" } + ``` + +* And the `comboRegex` will need to be updated + + ```js + // ** * <- new additions + comboRegex : /([`\'~\^\"ao\|])([a-z0])/mig + ``` + + See the next section for an explanation. + + If you don't know regex, feel free to [open an issue](https://github.com/Mottie/Keyboard/issues) and ask for assistance. + + +### Combo regular expression (`comboRegex`) + +The default `comboRegex` is as follows: + +```js +comboRegex : /([`\'~\^\"ao])([a-z])/mig, +``` + +It is split into two halves by parentheses + +```js +([`\'~\^\"ao]) // first character of combo +([a-z]) // second character of combo +``` + +In order to add a new combo, like the `|0` (vertical bar + zero) to create `'ϕ'` example, additions will be made in both halves of the regular expression + +```js +([`\'~\^\"ao\|]) +``` + +Adding `\|` to the first character because `|` has special meaning in regexp and should be escaped. I know some may argue that this particular character doesn't need to be escaped inside of square brackets, but I added it here just to be safe, and it doesn't hurt anything. + +```js +([a-z0]) +``` + +Adding `0` because it only targets letters `a-z` (case-insensitive) by default. + +The resulting definition becomes: + +```js +comboRegex : /([`\'~\^\"ao\|])([a-z0])/mig +``` + +### RTL + +If the language has a right-to-left direction, then set the `rtl` setting: + +```js +// language direction +rtl: true +``` + +This value defaults to `false` + +## Getting a Unicode Value + +### Can't type the character? + +Use [shapecatcher.com](http://shapecatcher.com/) +* This site allows you to draw the symbol, then choose the appropriate symbol from the results. +* A unicode value is included with the results as `0xhhhh`. Change the value to `\uhhhh` or `&#xhhhh`. + + +### Already have the character? + +To convert a character, or list of characters to its unicode value, use [Google Closure Compiler](http://closure-compiler.appspot.com/home) + +* Click "Reset" +* Then paste in some valid javascript... something like this: + + ```js + var a = 'Thìs ïs ã Têst'; + ``` + +* Click "Compile" +* On the right side a compressed result will appear + + ```js + var a="Th\u00ecs \u00efs \u00e3 T\u00east"; + ``` + +## Template Language Definition + +```js +jQuery.keyboard.language.all = { + language: 'All (All)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + } + */ +}; +``` diff --git a/app/Resources/public/assets/keyboard/languages/_language_template.js b/app/Resources/public/assets/keyboard/languages/_language_template.js new file mode 100644 index 0000000000..474f3ac05e --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/_language_template.js @@ -0,0 +1,58 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// "all" is used here for example purposes, by convention it should be the ISO 639-1 code for the specified language +// *********************** +jQuery.keyboard.language.all = { + language: 'All (English translation)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; diff --git a/app/Resources/public/assets/keyboard/languages/amh.js b/app/Resources/public/assets/keyboard/languages/amh.js new file mode 100644 index 0000000000..293b0c4022 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/amh.js @@ -0,0 +1,203 @@ +// Keyboard Language +// Ethiopic kezboard to support Amahric and Gǝʿǝz made by Pietro Liuzzo and Solomon Gebreyes Beyene. +// *********************** +jQuery.keyboard.language.amh = { + language: 'ፊደል (Fidal) Amharic and Gǝʿǝz', + display: { + 'a': '\u2714:መቀበል (Shift+Enter)', // check mark - same action as accept + 'accept': 'Accept:መቀበል (Shift+Enter)', + 'alt': 'AltGr:ተለዋጭ፡ ፊደል፡', + 'b': '\u2190:ማጥፊያ', // Left arrow (same as ←) + 'bksp': 'Bksp:ማጥፊያ', + 'c': '\u2716:መሠረዝ', // big X, close - same action as cancel + 'cancel': 'Cancel:መሠረዝ', + 'clear': 'C:ማፅዳት', // clear num pad + 'combo': '\u00f6:Toggle Combo Keys', + 'dec': '.:የአሀዝ፡ ቁጥር', // decimal point for num pad (optional), change '.' to ',' for European format + 'e': '\u21b5:መጀመር', // down, then left arrow - enter symbol + 'enter': 'Enter:መጀመር', + 'lock': '\u21ea Lock:አሮጌ፡ ለውጥ', // caps lock + 's': '\u21e7:መለወጥ', // thick hollow up arrow + 'shift': 'Shift:መለወጥ', + 'sign': '\u00b1:የሒሣብ፡ ምልክት፡ መቀየር', // +/- sign for num pad + 'space': ' :ክፍት፡ቦታ', + 't': '\u21e5:መግፊያ', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab': '\u21e5 Tab:መግፊያ' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage: 'Use mousewheel to see other keys', + + comboRegex: /([`\'~\^\"a-z0-9\{\}\[\]\|<>])([a-z0-9_\-\.\|`\'~\^\"!,=])/mig, + combos: { + a: { + a: '\u02be', '.': '\u1ea1', 1: "\u00e0", 2: "\u00e1", 3: "\u00e3", '=': "\u00e2", 9: "\u00e4", '-': "\u0101", ',': '\u1360' + }, + A: { + A: '\u02bf', '-': "\u0100", 1: "\u00c0", 2: "\u00c1", 3: "\u00c3", 9: "\u00c4", '=': "\u00c2" + }, + e: { + e: '\u01dd', '-': "\u0113", ',': '\u1367', 1: "\u00e8", 2: "\u00e9", 3: "\u1ebd", 9: "\u00eb", '=': "\u00ea" + }, + E: { + E: '\u018e', '-': "\u0112", 1: "\u00c8", 2: "\u00c9", 3: "\u1ebc", 9: "\u00cb", '=': "\u00ca" + }, + i: { + 1: "\u00ec", 2: "\u00ed", 3: "\u0129", 9: "\u00ef", 9: "\u00f6", '=': "\u00ee" + }, + I: { + 1: "\u00cc", 2: "\u00cd", 3: "\u0128", 9: "\u00cf", '=': "\u00ce" + }, + o: { + 1: "\u00f2", 2: "\u00f3", 3: "\u00f5", '=': "\u00f4" + }, + O: { + 1: "\u00d2", 2: "\u00d3", 3: "\u00d5", 9: "\u00d6", '=': "\u00d4" + }, + u: { + 1: "\u00f9", 2: "\u00fa", 3: "\u0169", 9: "\u00fc", '=': "\u00fb" + }, + U: { + 1: "\u00d9", 2: "\u00da", 3: "\u0168", 9: "\u00dc", '=': "\u00db" + }, + 'h': { + a: "\u1200", u: "\u1201", i: "\u1202", A: "\u1203", E: "\u1204", e: "\u1205", o: "\u1206", '!': '\u1207', '_': '\u1e2b', '.': '\u1e25' + }, + "l": { + a: "\u1208", u: "\u1209", i: "\u120a", A: "\u120b", E: "\u120c", e: "\u120d", o: "\u120e", '!': '\u120F' + }, + "H": { + a: "\u1210", u: "\u1211", i: "\u1212", A: "\u1213", E: "\u1214", e: "\u1215", o: "\u1216", '!': '\u1217', '_': '\u1e2a' + }, + "m": { + a: "\u1218", u: "\u1219", i: "\u121a", A: "\u121b", E: "\u121c", e: "\u121d", o: "\u121e", '!': '\u121F' + }, + "S": { + a: "\u1220", u: "\u1221", i: "\u1222", A: "\u1223", E: "\u1224", e: "\u1225", o: "\u1226", '!': '\u1227', '.': '\u1e62', '|': '\u0160', 6: "\u015A" + }, + "r": { + a: "\u1228", u: "\u1229", i: "\u122a", A: "\u122b", E: "\u122c", e: "\u122d", o: "\u122e", '!': '\u122F' + }, + "s": { + a: "\u1230", u: "\u1231", i: "\u1232", A: "\u1233", E: "\u1234", e: "\u1235", o: "\u1236", '!': '\u1237', '.': '\u1e63', '|': '\u0161', 6: "\u015b" + }, + "v": { + a: "\u1238", u: "\u1239", i: "\u123a", A: "\u123b", E: "\u123c", e: "\u123d", o: "\u123e", '!': '\u123F' + }, + "q": { + a: "\u1240", u: "\u1241", i: "\u1242", A: "\u1243", E: "\u1244", e: "\u1245", o: "\u1246", '!': '\u1247' + }, + "b": { + a: "\u1260", u: "\u1261", i: "\u1262", A: "\u1263", E: "\u1264", e: "\u1265", o: "\u1266", '!': '\u1267', ',': '\u1363' + }, + "B": { + a: "\u1268", u: "\u1269", i: "\u126A", A: "\u126B", E: "\u126C", e: "\u126D", o: "\u126E", '!': '\u126F' + }, + "t": { + a: "\u1270", u: "\u1271", i: "\u1272", A: "\u1273", E: "\u1274", e: "\u1275", o: "\u1276", '!': '\u1277', '.': '\u1e6d' + }, + "c": { + a: "\u1278", u: "\u1279", i: "\u127a", A: "\u127b", E: "\u127c", e: "\u127d", o: "\u127e", '!': '\u127F', '_': '\u010d\u0323', '|': '\u010d', ',': '\u1364' + }, + "x": { + a: "\u1280", u: "\u1281", i: "\u1282", A: "\u1283", E: "\u1284", e: "\u1285", o: "\u1286", '!': '\u1287' + }, + "n": { + a: "\u1290", u: "\u1291", i: "\u1292", A: "\u1293", E: "\u1294", e: "\u1295", o: "\u1296", '!': '\u1297', 3: "\u00f1" + }, + "N": { + a: "\u1298", u: "\u1299", i: "\u129a", A: "\u129b", E: "\u129c", e: "\u129d", o: "\u129e", '!': '\u129F', 3: "\u00d1" + }, + "'": { + a: "\u12a0", u: "\u12a1", i: "\u12a2", A: "\u12a3", E: "\u12a4", e: "\u12a5", o: "\u12a6", '!': '\u12A7' + }, + "k": { + a: "\u12a8", u: "\u12a9", i: "\u12aa", A: "\u12ab", E: "\u12ac", e: "\u12ad", o: "\u12ae", '!': '\u12AF' + }, + "K": { + a: "\u12b8", u: "\u12b9", i: "\u12ba", A: "\u12bb", E: "\u12bc", e: "\u12bd", o: "\u12be" + }, + "w": { + a: "\u12c8", u: "\u12c9", i: "\u12ca", A: "\u12cb", E: "\u12cc", e: "\u12cd", o: "\u12ce", '!': '\u12CF', '=': "\u02b7" + }, + "W": { + a: "\u12d0", u: "\u12d1", i: "\u12d2", A: "\u12d3", E: "\u12d4", e: "\u12d5", o: "\u12d6" + }, + "z": { + a: "\u12d8", u: "\u12d9", i: "\u12da", A: "\u12db", E: "\u12dc", e: "\u12dd", o: "\u12de", '!': '\u12DF', '|': '\u017e' + }, + "Z": { + a: "\u12e0", u: "\u12e1", i: "\u12e2", A: "\u12e3", E: "\u12e4", e: "\u12e5", o: "\u12e6", '!': '\u12E7', '|': '\u017d' + }, + "y": { + a: "\u12e8", u: "\u12e9", i: "\u12ea", A: "\u12eb", E: "\u12ec", e: "\u12ed", o: "\u12ee", '!': '\u12EF', 1: "\u1ef3", 2: "\u00fd", 3: "\u1ef9", 9: "\u00ff", '=': "\u0177" + }, + "d": { + a: "\u12f0", u: "\u12f1", i: "\u12f2", A: "\u12f3", E: "\u12f4", e: "\u12f5", o: "\u12f6", '!': '\u12F7', '.': '\u1e0d', ',': '\u1366' + }, + "L": { + a: "\u12F8", u: "\u12F9", i: "\u12FA", A: "\u12FB", E: "\u12FC", e: "\u12FD", o: "\u12FE", '!': '\u12FF' + }, + "D": { + a: "\u1300", u: "\u1301", i: "\u1302", A: "\u1303", E: "\u1304", e: "\u1305", o: "\u1306", '!': '\u1307', '.': '\u1e0c' + }, + "g": { + a: "\u1308", u: "\u1309", i: "\u130a", A: "\u130b", E: "\u130c", e: "\u130d", o: "\u130e", '!': '\u130F', '|': '\u01e7' + }, + "G": { + a: "\u1318", u: "\u1319", i: "\u131a", A: "\u131b", E: "\u131c", e: "\u131d", o: "\u131e", '!': '\u131F', '|': '\u01e6' + }, + "T": { + a: "\u1320", u: "\u1321", i: "\u1322", A: "\u1323", E: "\u1324", e: "\u1325", o: "\u1326", '!': '\u1327', '.': '\u1e6c' + }, + "C": { + a: "\u1328", u: "\u1329", i: "\u132a", A: "\u132b", E: "\u132c", e: "\u132d", o: "\u132e", '!': '\u132F' + }, + "p": { + a: "\u1330", u: "\u1331", i: "\u1332", A: "\u1333", E: "\u1334", e: "\u1335", o: "\u1336", '!': '\u1337', 6: "\u1e57" + }, + "j": { + a: "\u1338", u: "\u1339", i: "\u133a", A: "\u133b", E: "\u133c", e: "\u133d", o: "\u133e", '!': '\u133F' + }, + "J": { + a: "\u1340", u: "\u1341", i: "\u1342", A: "\u1343", E: "\u1344", e: "\u1345", o: "\u1346", '!': '\u1347' + }, + "f": { + a: "\u1348", u: "\u1349", i: "\u134a", A: "\u134b", E: "\u134c", e: "\u134d", o: "\u134e", '!': '\u134F', ',': '\u1368' + }, + "P": { + a: "\u1350", u: "\u1351", i: "\u1352", A: "\u1353", E: "\u1354", e: "\u1355", o: "\u1356", '!': '\u1357', 6: "\u1E56" + }, + "Q": { + a: "\u1250", u: "\u1251", i: "\u1252", A: "\u1253", E: "\u1254", e: "\u1255", o: "\u1256" + }, + "[": { + a: "\u1248", i: "\u124a", A: "\u124b", E: "\u124c", e: "\u124d" + }, + "]": { + a: "\u1288", i: "\u128a", A: "\u128b", E: "\u128c", e: "\u128d" + }, + "}": { + a: "\u12b0", i: "\u12b2", A: "\u12b3", E: "\u12b4", e: "\u12b5" + }, + "{": { + a: "\u1310", i: "\u1312", A: "\u1313", E: "\u1314", e: "\u1315" + }, + "M": { + a: "\u1380", i: "\u1381", E: "\u1382", e: "\u1383" + }, + "|": { + a: "\u1384", i: "\u1385", E: "\u1386", e: "\u1387" + }, + "<": { + a: "\u1388", i: "\u1389", E: "\u138A", e: "\u138B" + }, + ">": { + a: "\u138C", i: "\u138D", E: "\u138E", e: "\u138F" + }, + 'Y': { + 1: "\u1ef2", 2: "\u00dd", 3: "\u1ef8", 9: "\u0178", '=': "\u0176" + } + }, + // language direction + rtl: false +}; diff --git a/app/Resources/public/assets/keyboard/languages/ar.untranslated.js b/app/Resources/public/assets/keyboard/languages/ar.untranslated.js new file mode 100644 index 0000000000..7ecf492105 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ar.untranslated.js @@ -0,0 +1,32 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ar = ISO 639-1 code for Arabic +// *********************** +jQuery.keyboard.language.ar = { + language: '\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabic)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', + // language direction + rtl : true +}; diff --git a/app/Resources/public/assets/keyboard/languages/as.untranslated.js b/app/Resources/public/assets/keyboard/languages/as.untranslated.js new file mode 100644 index 0000000000..4cd64a21da --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/as.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// as = ISO 639-1 code for Assamese +// *********************** +jQuery.keyboard.language.as = { + language : '\u0985\u09b8\u09ae\u09c0\u09df\u09be (Assamese)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/be.untranslated.js b/app/Resources/public/assets/keyboard/languages/be.untranslated.js new file mode 100644 index 0000000000..3fdf74c4ff --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/be.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// be = ISO 639-1 code for Belarusian +// *********************** +jQuery.keyboard.language.be = { + language: '\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (Belarusian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/bg.untranslated.js b/app/Resources/public/assets/keyboard/languages/bg.untranslated.js new file mode 100644 index 0000000000..d943751dfe --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/bg.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// bg = ISO 639-1 code for Bulgarian +// *********************** +jQuery.keyboard.language.bg = { + language: '\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 (Bulgarian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/bn.untranslated.js b/app/Resources/public/assets/keyboard/languages/bn.untranslated.js new file mode 100644 index 0000000000..b3fdb68c86 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/bn.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// bn = ISO 639-1 code for Bengali +// *********************** +jQuery.keyboard.language.bn = { + language: '\u09ac\u09be\u0982\u09b2\u09be (Bengali)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/ca.untranslated.js b/app/Resources/public/assets/keyboard/languages/ca.untranslated.js new file mode 100644 index 0000000000..6becc6dd2b --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ca.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ca = ISO 639-1 code for Catalan +// *********************** +jQuery.keyboard.language.ca = { + language: 'Catalan (Catalan)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/da.untranslated.js b/app/Resources/public/assets/keyboard/languages/da.untranslated.js new file mode 100644 index 0000000000..dd96a14dc4 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/da.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// da = ISO 639-1 code for Danish +// *********************** +jQuery.keyboard.language.da = { + language: 'Dansk (Danish)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/de.js b/app/Resources/public/assets/keyboard/languages/de.js new file mode 100644 index 0000000000..741b81225d --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/de.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// de = ISO 639-1 code for German +// *********************** +jQuery.keyboard.language.de = { + language: 'Deutsch (German)', + display : { + 'a' : '\u2714:\u00dcbernehmen (Umschalt+Enter)', // check mark - same action as accept + 'accept' : '\u00dcbernehmen:\u00dcbernehmen (Umschalt+Enter)', + 'alt' : 'AltGr:Alt Graph', + 'b' : '\u2190:R\u00fccktaste', // Left arrow (same as ←) + 'bksp' : 'R\u00fcck:R\u00fccktaste', + 'c' : '\u2716:Abbrechen (Esc)', // big X, close - same action as cancel + 'cancel' : 'Abbrechen:Abbrechen (Esc)', + 'clear' : 'C:L\u00f6schen', // clear num pad + 'combo' : '\u00f6:Tottasten umschalten', + 'dec' : ',:Dezimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Eingabe', // down, then left arrow - enter symbol + 'enter' : 'Enter:Eingabe', + 'lock' : '\u21E9:Feststelltaste', // caps lock + 's' : '\u21e7:Umschalttaste', // thick hollow up arrow + 'shift' : 'Umschalt:Umschalttaste', + 'sign' : '\u00b1:Vorzeichen wechseln', // +/- sign for num pad + 'space' : ' :Leertaste', + 't' : '\u21e5:Tabulatortaste', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tabulatortaste' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Mausrad benutzen, um weitere Tasten zu sehen', +}; diff --git a/app/Resources/public/assets/keyboard/languages/es.js b/app/Resources/public/assets/keyboard/languages/es.js new file mode 100644 index 0000000000..63c9c525e4 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/es.js @@ -0,0 +1,29 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// es = ISO 639-1 code for Spanish +// *********************** +jQuery.keyboard.language.es = { + language: 'Espa\u00f1ol (Spanish)', + display : { + 'a' : '\u2714:Acceptar (Cambio+Inscribir)', // check mark - same action as accept + 'accept' : 'Acceptar:Acceptar (Cambio+Inscribir)', + 'alt' : 'AltGr:Grafemas Alternativos', + 'b' : '\u2190:Retroceso', // Left arrow (same as ←) + 'bksp' : 'Bksp:Retroceso', + 'c' : '\u2716:Cancelar (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancelar:Cancelar (Esc)', + 'clear' : 'C:Vaciar', // clear num pad + 'combo' : '\u00f6:Alternar las Teclas Combinados', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Inscribir', // down, then left arrow - enter symbol + 'enter' : 'Inscribir:Inscribir', + 'lock' : '\u21ea Bloq:Mayús', // caps lock + 's' : '\u21e7:Cambio', // thick hollow up arrow + 'shift' : 'Cambio:Cambio', + 'sign' : '\u00b1:Cambiar Signo', // +/- sign for num pad + 'space' : ' :Espacio', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + wheelMessage : 'Utilice la rueda del mouse para ver otras teclas' +}; diff --git a/app/Resources/public/assets/keyboard/languages/fa.js b/app/Resources/public/assets/keyboard/languages/fa.js new file mode 100644 index 0000000000..12ea97bbc5 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/fa.js @@ -0,0 +1,54 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// fa = ISO 639-1 code for Farsi +// *********************** +jQuery.keyboard.language.fa = { + language: '\u0641\u0627\u0631\u0633\u06cc (Farsi)', + display: { + 'a' : '\u2714:\u062a\u0623\u06cc\u06cc\u062f (Shift+Enter)', + 'accept' : '\u062a\u0623\u06cc\u06cc\u062f:\u062a\u0623\u06cc\u06cc\u062f (Shift+Enter)', + 'alt' : 'Lng:Alternate Graphemes', + 'b' : '\u2190:\u2b05 Backspace', + 'bksp' : '\u2b05 Bksp:\u2b05 Backspace', + 'c' : '\u2716:\u0627\u0646\u0635\u0631\u0627\u0641 (Esc)', + 'cancel' : '\u0627\u0646\u0635\u0631\u0627\u0641:\u0627\u0646\u0635\u0631\u0627\u0641 (Esc)', + 'clear' : 'C:Clear', + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', + 'e' : '\u21b5:Enter', + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', + 's' : '\u21e7:Shift', + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', + 'space' : ' :Space', + 't' : '\u21e5:Tab', + 'tab' : '\u21e5 Tab:Tab' + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage: 'Use mousewheel to see other keys', + rtl: true + + // uncomment, then include changes to the comboRegex here + //, comboRegex: /([`\'~\^\"ao])([a-z])/mig, + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + } + */ +}; diff --git a/app/Resources/public/assets/keyboard/languages/fr.js b/app/Resources/public/assets/keyboard/languages/fr.js new file mode 100644 index 0000000000..b8ca259c52 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/fr.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// fr = ISO 639-1 code for French +// *********************** +jQuery.keyboard.language.fr = { + language: 'Fran\u00e7ais (French)', + display : { + 'a' : '\u2714:Valider (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Valider:Valider (Shift+Enter)', + 'alt' : 'AltGr:Charact\u00e8re alternatif', + 'b' : '\u2190:Suppr arri\u00e8re', // Left arrow (same as ←) + 'bksp' : '\u2190Suppr:Suppr arri\u00e8re', + 'c' : '\u2716:Annuler', // big X, close - same action as cancel + 'cancel' : 'Annuler:Annuler (\u00c9chap)', + 'clear' : 'C:Effacer', // clear num pad + 'combo' : '\u00f6:Bacsuler les touches combo', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Entr\u00e9e', // down, then left arrow - enter symbol + 'enter' : 'Entr\u00e9e:Entr\u00e9e', + 'lock' : '\u21ea Verr Mag:Verouillage majuscule', // caps lock + 's' : '\u21e7:Majuscule', // thick hollow up arrow + 'shift' : 'Maj:Majuscule', + 'sign' : '\u00b1:Change de signe', // +/- sign for num pad + 'space' : ' :Espace', + 't' : '\u21e5:Tabulation', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tabulation' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Utiliser la molette de la souris pour voir les autres lettres', +}; diff --git a/app/Resources/public/assets/keyboard/languages/gu.untranslated.js b/app/Resources/public/assets/keyboard/languages/gu.untranslated.js new file mode 100644 index 0000000000..ddd6d22d13 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/gu.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// gu = ISO 639-1 code for Gujarati +// *********************** +jQuery.keyboard.language.gu = { + language : '\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0 (Gujarati)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/he.js b/app/Resources/public/assets/keyboard/languages/he.js new file mode 100644 index 0000000000..9b6db59294 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/he.js @@ -0,0 +1,32 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// he = ISO 639-1 code for Hebrew +// *********************** +jQuery.keyboard.language.he = { + language: '\u05e2\u05d1\u05e8\u05d9\u05ea (Hebrew)', + display : { + 'a' : '\u2714:אישור (Shift+Enter)', // check mark - same action as accept + 'accept' : 'אישור:אישור (Shift+Enter)', + 'alt' : 'Alt:תווים נוספים', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:ביטול (Esc)', // big X, close - same action as cancel + 'cancel' : 'ביטול:ביטול (Esc)', + 'clear' : 'C:ניקוי', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:נקודה עשרונית', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:שינוי סימן', // +/- sign for num pad + 'space' : ' :רווח', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'ניתן להשתמש בגלגלת העכבר כדי לראות מקשים נוספים', + // language direction + rtl : true +}; diff --git a/app/Resources/public/assets/keyboard/languages/hi.untranslated.js b/app/Resources/public/assets/keyboard/languages/hi.untranslated.js new file mode 100644 index 0000000000..0a66c4e37c --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/hi.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// hi = ISO 639-1 code for Hindi +// *********************** +jQuery.keyboard.language.hi = { + language: '\u0939\u093f\u0902\u0926\u0940 (Hindi)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/hu.js b/app/Resources/public/assets/keyboard/languages/hu.js new file mode 100644 index 0000000000..ebb759ad44 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/hu.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// hu = ISO 639-1 code for Hungarian +// *********************** +jQuery.keyboard.language.hu = { + language: 'Magyar (Hungarian)', + display : { + 'a' : '\u2714:Rendben (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Rendben:Rendben (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'T\u00f6r\u00f6l:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'M\u00e9gsem:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Haszn\u00e1ld az eg\u00e9r g\u00f6rget\u0151t a t\u00f6bbi billenty\u0171 \u00e1tv\u00e1lt\u00e1shoz', +}; diff --git a/app/Resources/public/assets/keyboard/languages/it.js b/app/Resources/public/assets/keyboard/languages/it.js new file mode 100644 index 0000000000..78787088a2 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/it.js @@ -0,0 +1,58 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// "all" is used here for example purposes, by convention it should be the ISO 639-1 code for the specified language +// *********************** +jQuery.keyboard.language.it = { + language: 'Italiano (Italian)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accetta (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accetta:Accetta (Shift+Enter)', + 'alt' : 'AltGr:Grafemi Alternativi', + 'b' : '\u2190:Cancella', // Left arrow (same as ←) + 'bksp' : 'Canc:Cancella', + 'c' : '\u2716:Annulla (Esc)', // big X, close - same action as cancel + 'cancel' : 'Annulla:Annulla (Esc)', + 'clear' : 'C:Pulisci', // clear num pad + 'combo' : '\u00f6:Tasti Combinati', + 'dec' : ',:Decimale', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Invio', // down, then left arrow - enter symbol + 'enter' : 'Invio:Invio', + 'lock' : '\u21ea Bloc:Bloc Maiusc', // caps lock + 's' : '\u21e7:Maiusc', // thick hollow up arrow + 'shift' : 'Maiusc:Maiusc', + 'sign' : '\u00b1:Cambia Segno', // +/- sign for num pad + 'space' : ' :Spazio', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Usa la rotella del mouse per vedere altri tasti' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; diff --git a/app/Resources/public/assets/keyboard/languages/ja.untranslated.js b/app/Resources/public/assets/keyboard/languages/ja.untranslated.js new file mode 100644 index 0000000000..a0546caeeb --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ja.untranslated.js @@ -0,0 +1,38 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ja = ISO 639-1 code for Japanese +// *********************** +jQuery.keyboard.language.ja = { + language: '\u65e5\u672c\u8a9e (Japanese)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab', // \u21b9 is the true tab symbol (left & right arrows) + + // these definitions are specific to the "ms-Japanese Hiragana" layout + 'default': '\u30ab \u30bf:Hiragana', // Harigana active; switch to Katakana + 'full' : '', + 'meta1' : 'Kana', // English half (normal) width active + 'meta2' : 'Kana', // English full width active + 'meta3' : '\u3072 \u3089:Katakana', // Kanakana full width active; switch to Hiragana + 'meta4' : '\u534a:full' // Kana half width active + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/kn.untranslated.js b/app/Resources/public/assets/keyboard/languages/kn.untranslated.js new file mode 100644 index 0000000000..fac9e2c403 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/kn.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// kn = ISO 639-1 code for Kannada +// *********************** +jQuery.keyboard.language.kn = { + Language : '\u0c95\u0ca8\u0ccd\u0ca8\u0ca1 (Kannada)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/lv.js b/app/Resources/public/assets/keyboard/languages/lv.js new file mode 100644 index 0000000000..de7a7f3e02 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/lv.js @@ -0,0 +1,41 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// lv = ISO 639-1 code for Latvian +// *********************** +jQuery.keyboard.language.lv = { + language: 'Latvie\u0161u (Latvian)', + display : { + 'a' : '\u2714:Pie\u0146emt (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Pie\u0146emt:Pie\u0146emt (Shift+Enter)', + 'alt' : 'AltGr:Altern\u0113\u0161anas tausti\u0146\u0161', + 'b' : '\u2190:Atpaka\u013Catk\u0101pe', // Left arrow (same as ←) + 'bksp' : 'Bksp:Atpaka\u013Catk\u0101pe', + 'c' : '\u2716:Atcelt (Esc)', // big X, close - same action as cancel + 'cancel' : 'Atcelt:Atcelt (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Izmanto peles riten\u012Bti, lai apskat\u012Btu citus tausti\u0146us', + // New combos using specific accents + combos : { + // duplicated from regular combos, used specific accents here instead + // acute & cedilla c C é É n N ó Ó s S z Z + "'" : { c:"\u0107", C:"\u0106", e:"\u00e9", E:"\u00c9", n:"\u0144", N:"\u0143", o:"\u00f3", O:"\u00d3", s:"\u015b", S:"\u015a", z:"\u017a", Z:"\u0179" }, + // diaeresis: ä Ä ö Ö ü Ü + '\u00a8' : { a:"\u00e4", A:"\u00c4", o:"\u00f6", O:"\u00d6", u:"\u00fc", U:"\u00dc" }, + // degree sign å Å e E g z Z + '\u00b0' : { a:"\u00e5", A:"\u00c5", e:"\u0117", E:"\u0116", g:"\u0121", z:"\u017c", Z:"\u017b" }, + }, + comboRegex : /([`\'~\^\"ao\u00a8\u00b0])([a-z])/mig +}; diff --git a/app/Resources/public/assets/keyboard/languages/mn.untranslated.js b/app/Resources/public/assets/keyboard/languages/mn.untranslated.js new file mode 100644 index 0000000000..b3b8d17ece --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/mn.untranslated.js @@ -0,0 +1,29 @@ +// Keyboard Language +// mn = ISO 639-1 code for Mongolian +// *********************** +jQuery.keyboard.language.mn = { + language: '\u041c\u043e\u043d\u0433\u043e\u043b (Mongolian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys' +}; diff --git a/app/Resources/public/assets/keyboard/languages/mr.untranslated.js b/app/Resources/public/assets/keyboard/languages/mr.untranslated.js new file mode 100644 index 0000000000..d28f572b30 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/mr.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// mr = ISO 639-1 code for Marathi +// *********************** +jQuery.keyboard.language.mr = { + language : '\u092e\u0930\u093e\u0920\u0940 (Marathi)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/my.js b/app/Resources/public/assets/keyboard/languages/my.js new file mode 100644 index 0000000000..28fef05395 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/my.js @@ -0,0 +1,62 @@ +/** + * Burmese Keyboard Language + * please update this section to match this language and email me with corrections! + * my = ISO 639-1 code for Burmese + * thanks to @laminko (https://github.com/laminko); + * see https://github.com/Mottie/Keyboard/pull/507 + * license for this file: WTFPL + */ +jQuery.keyboard.language.my = { + language: '\u1017\u1019\u102c (Burmese)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:\u101b\u103e\u1004\u103a\u1038\u101c\u1004\u103a\u1038\u101b\u1014\u103a', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:\u1012\u101e\u1019', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : '\u1021\u1001\u103c\u102c\u1038\u1001\u101c\u102f\u1010\u103a\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1019\u103c\u1004\u103a\u101b\u1005\u1031\u101b\u1014\u103a \u1019\u1031\u102c\u1000\u103a\u1005\u103a\u101d\u103e\u102e\u1038\u101c\u103a\u1000\u102d\u102f \u1021\u101e\u102f\u1036\u1038\u1015\u103c\u102f\u1015\u102b' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; diff --git a/app/Resources/public/assets/keyboard/languages/ne.untranslated.js b/app/Resources/public/assets/keyboard/languages/ne.untranslated.js new file mode 100644 index 0000000000..d2c2c4f874 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ne.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ne = ISO 639-1 code for Nepali +// *********************** +jQuery.keyboard.language.ne = { + language : '\u0928\u0947\u092a\u093e\u0932\u0940 (Nepali)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/pa.untranslated.js b/app/Resources/public/assets/keyboard/languages/pa.untranslated.js new file mode 100644 index 0000000000..d16e74b17c --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/pa.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pa = ISO 639-1 code for Punjabi +// *********************** +jQuery.keyboard.language.pa = { + language : '\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40 (Punjabi)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/pl.js b/app/Resources/public/assets/keyboard/languages/pl.js new file mode 100644 index 0000000000..f68382c726 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/pl.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pl = ISO 639-1 code for Polish +// *********************** +jQuery.keyboard.language.pl = { + language: 'Polski (Polish)', + display : { + 'a' : '\u2714:Akceptuj (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Akceptuj (Shift+Enter)', + 'alt' : 'AltGr:Polskie znaki', + 'b' : '\u2190:Cofnij', // Left arrow (same as ←) + 'bksp' : 'Bksp:Cofnij', + 'c' : '\u2716:Anuluj (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Anuluj (Esc)', + 'clear' : 'C:Czyść', // clear num pad + 'combo' : '\u00f6:Klawisze kombo', + 'dec' : '.:Dziesiętny', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Zmień znak', // +/- sign for num pad + 'space' : ' :Spacja', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Użyj rolki aby zobaczyć pozozstałe klawisze', +}; diff --git a/app/Resources/public/assets/keyboard/languages/pt.js b/app/Resources/public/assets/keyboard/languages/pt.js new file mode 100644 index 0000000000..b363c091fb --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/pt.js @@ -0,0 +1,39 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pt = ISO 639-1 code for Portuguese +// *********************** +jQuery.keyboard.language.pt = { + language: 'Portugu\u00eas (Portuguese)', + display : { + 'a' : '\u2714:Aceitar (Shift+Enter)', // ALTERNATE accept button - unicode for check mark symbol + 'accept' : 'Aceitar:Concluir (Shift+Enter)', // Accept button text + 'alt' : 'AltGr:Carateres Adicionais/CTRL+ALT', // Alt button text (AltGr is for international key sets) + 'b' : '\u2190:Retroceder', // ALTERNATE backspace button - unicode for left arrow. Same as ← ( ← ) - Left arrow + 'bksp' : '\u2190 Bksp:Retroceder', // Backspace button text + 'c' : '\u2716:Cancelar/Escape (Esc)', // ALTERNATE cancel button - unicode for big X + 'cancel' : 'Cancel:Cancelar/Escape(Esc)', // Cancel button text + 'clear' : 'C:Limpar', // Clear window content (used in num pad) + 'combo' : '\u00f6:Acentuação Automática', // (Toggle combo (diacritic) key + 'dec' : '.:Decimal', // Decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Introduzir/Mudar de Linha', // ALTERNATE enter button - unicode for down, then left arrow (enter symbol) + 'enter' : 'Enter\u21b5:Introduzir/Mudar de Linha', // Enter button text + 'lock' : '\u21ea Lock:CapsLock/Maiúsculas', // Caps lock button - unicode for double lined up arrow + 's' : '\u21e7:Shift/Maiúsculas', // ALTERNATE shift button - unicode for a thick up arrow + 'shift' : '\u21ea Shift:Maiúsculas-Minúsculas', // Shift button text + 'sign' : '\u00b1:Mudar Sinal', // Change sign (used in num pad) - unicode for a +- symbol + 'space' : ' :Espaço', // Space button text + 't' : '\u21e5:Tab/Tabela/Avançar', // ALTERNATE tab button - unicode for right arrow to bar (used since only one directional tabs available) + 'tab' : '\u21e5 Tab:Tabela/Avançar' // Tab button text (Note: \u21b9 is the true tab symbol (left & right arrows) but not used here) + }, + wheelMessage : 'Use a roda do rato/navegador para ver mais teclas', + + // Update regex for the combos above + comboRegex : /([`\'~\^\"ao\u00b4])([a-z])/mig, + // New combos using specific accents + combos : { + "\u00b4" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, // acute & cedilla + // remove apostrophe combo + "'" : {} + } + +}; diff --git a/app/Resources/public/assets/keyboard/languages/ro.js b/app/Resources/public/assets/keyboard/languages/ro.js new file mode 100644 index 0000000000..9c8c7f10c8 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ro.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ro = ISO 639-1 code for Romanian +// *********************** +jQuery.keyboard.language.ro = { + language: 'Rom\u00e2n\u0103 (Romanian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Schimba semnul', // +/- sign for num pad + 'space' : ' :Spatiu', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Foloseste rotita mouse-ului pentru a vedea si celelalte caractere', +}; diff --git a/app/Resources/public/assets/keyboard/languages/ru.js b/app/Resources/public/assets/keyboard/languages/ru.js new file mode 100644 index 0000000000..9420c055ba --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ru.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ru = ISO 639-1 code for Russian +// *********************** +jQuery.keyboard.language.ru = { + language: '\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)', + display : { + 'a' : '\u2714:Сохранить (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Сохранить:Сохранить (Shift+Enter)', + 'alt' : 'РУС:Русская клавиатура', + 'b' : '\u2190:Удалить символ слева', // Left arrow (same as ←) + 'bksp' : '\u21e6:Удалить символ слева', + 'c' : '\u2716:Отменить (Esc)', // big X, close - same action as cancel + 'cancel' : 'Отменить:Отменить (Esc)', + 'clear' : 'C:Очистить', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Ввод', // down, then left arrow - enter symbol + 'enter' : 'Ввод:Перевод строки', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Верхний регистр', // thick hollow up arrow + 'shift' : '\u21e7:Верхний регистр', + 'sign' : '\u00b1:Сменить знак', // +/- sign for num pad + 'space' : 'Пробел:', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/sq.js b/app/Resources/public/assets/keyboard/languages/sq.js new file mode 100644 index 0000000000..c7d8bd7c8f --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/sq.js @@ -0,0 +1,40 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// sq = ISO 639-1 code for Albanian +// *********************** +jQuery.keyboard.language.sq = { + language : 'Shqip (Albanian)', + display : { + 'a' : '\u2714:Prano (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Prano:Prano (Shift+Enter)', + 'alt' : 'Alt:Alternativ', + 'b' : '\u2190:Hap\u00ebsir\u00ebn Mbrapa', // Left arrow (same as ←) + 'bksp' : 'Bksp:Hap\u00ebsir\u00ebn Mbrapa', + 'c' : '\u2716:Anuloj (Arratisjes)', // big X, close - same action as cancel + 'cancel' : 'Anuloj:Anuloj (Arratisjes)', + 'clear' : 'C:Qart\u00eb', // clear num pad + 'combo' : '\u00f6:Kombinimi', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Shkruani', // down, then left arrow - enter symbol + 'enter' : 'Shkruani:Shkruani', + 'lock' : '\u21ea Bllokoj:Caps Lock', // caps lock + 'next' : 'Next \u21e8', + 'prev' : '\u21e6 Prev', + 's' : '\u21e7:Ndryshim', // thick hollow up arrow + 'shift' : 'Ndryshim:Ndryshim', + 'sign' : '\u00b1:Ndryshimi Regjistrohu', // +/- sign for num pad + 'space' : ' :Hap\u00ebsir\u00eb', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'P\u00ebrdorimi mousewheel p\u00ebr t\u00eb par\u00eb \u00e7el\u00ebsat e tjera', + + // New combos using specific accents + // Not sure what to do with these accents: ˇ ˘ ˙ ° ˛ ˝ + comboRegex : /([`\'~\^\"ao\/])([a-z])/gim, + combos : { + // new combos below ( forward slash + d, forward slash + l ) + '/' : { d:"\u0111", D:"\u0110", l:"\u0142", L:"\u0141" } // stroke đ Đ ł Ł + } +}; diff --git a/app/Resources/public/assets/keyboard/languages/sr.untranslated.js b/app/Resources/public/assets/keyboard/languages/sr.untranslated.js new file mode 100644 index 0000000000..1ec0d0a340 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/sr.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// sr = ISO 639-1 code for Serbian +// *********************** +jQuery.keyboard.language.sr = { + language: '\u0441\u0440\u043f\u0441\u043a\u0438 (Serbian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/sv.untranslated.js b/app/Resources/public/assets/keyboard/languages/sv.untranslated.js new file mode 100644 index 0000000000..9670286b76 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/sv.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// sv = ISO 639-1 code for Swedish +// *********************** +jQuery.keyboard.language.sv = { + language: 'Svenska (Swedish)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/ta.untranslated.js b/app/Resources/public/assets/keyboard/languages/ta.untranslated.js new file mode 100644 index 0000000000..c47842c248 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ta.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ta = ISO 639-1 code for Tamil +// *********************** +jQuery.keyboard.language.ta = { + language: '\u0ba4\u0bae\u0bbf\u0bb4\u0bcd (Tamil)', + display : { + 'a' : '\u2714:Validate (Shift+Enter)', // check mark - same action as accept + 'accept' : 'accept (Shift+Enter)', + 'alt' : 'Alt:More Characters', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Escape (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal point', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Sign for num pad', // +/- sign for num pad + 'space' : 'Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'You can use the mouse wheel to see additional keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/te.untranslated.js b/app/Resources/public/assets/keyboard/languages/te.untranslated.js new file mode 100644 index 0000000000..d62788d765 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/te.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// te = ISO 639-1 code for Telugu +// *********************** +jQuery.keyboard.language.te = { + language : '\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41 (Telugu)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/th.untranslated.js b/app/Resources/public/assets/keyboard/languages/th.untranslated.js new file mode 100644 index 0000000000..9464bd7416 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/th.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// th = ISO 639-1 code for Thai +// *********************** +jQuery.keyboard.language.th = { + language: '\u0e44\u0e17\u0e22 (Thai)', + display : { + 'a' : '\u2714:Validate (Shift+Enter)', // check mark - same action as accept + 'accept' : 'accept (Shift+Enter)', + 'alt' : 'Alt:More Characters', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Escape (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal point', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Sign for num pad', // +/- sign for num pad + 'space' : 'Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'You can use the mouse wheel to see additional keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/tr.untranslated.js b/app/Resources/public/assets/keyboard/languages/tr.untranslated.js new file mode 100644 index 0000000000..6381549e51 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/tr.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// tr = ISO 639-1 code for Turkish +// *********************** +jQuery.keyboard.language.tr = { + language: 'T\u00fcrk\u00e7e (Turkish)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/ur.untranslated.js b/app/Resources/public/assets/keyboard/languages/ur.untranslated.js new file mode 100644 index 0000000000..0fe7c5c8d9 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/ur.untranslated.js @@ -0,0 +1,30 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ur = ISO 639-1 code for Urdu +// *********************** +jQuery.keyboard.language.ur = { + language : '\u0627\u0631\u062f\u0648 (Urdu)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/languages/vi.untranslated.js b/app/Resources/public/assets/keyboard/languages/vi.untranslated.js new file mode 100644 index 0000000000..94f9ab76e7 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/vi.untranslated.js @@ -0,0 +1,66 @@ +// Keyboard Language +// please update this section to match this language and email me with corrections! +// vi = ISO 639-1 code for Vietnamese +// *********************** +jQuery.keyboard.language.vi = { + language: 'Ti\u1ebfng Vi\u1ec7t (Vietnamese)', + display : { + 'a' : '\u2714:Validate (Shift+Enter)', // check mark - same action as accept + 'accept' : 'accept (Shift+Enter)', + 'alt' : 'Alt:More Characters', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Escape (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal point', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Sign for num pad', // +/- sign for num pad + 'space' : 'Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'You can use the mouse wheel to see additional keys', + + comboRegex : /([ueoaidy\u01B0\u01A1\u0103\u00E2\u0055\u01AF\u01A0\u0102\u00C2\u00E2\u00F4\u00EA\u00C2\u00D4\u00CA])([a-z,0-9])/gim, + combos : { + + 'u' : { s:"\u00FA", f:"\u00F9", r:"\u1EE7", x:"\u0169", j:"\u1EE5", w:"\u01B0" }, + 'e' : { s:"\u00E9", f:"\u00E8", r:"\u1EBB", x:"\u1EBD", j:"\u1EB9", e:"\u00EA" }, + 'o' : { s:"\u00F3", f:"\u00F2", r:"\u1ECF", x:"\u00F5", j:"\u1ECD", w:"\u01A1", o:"\u00F4" }, + 'a' : { s:"\u00E1", f:"\u00E0", r:"\u1EA3", x:"\u00E3", j:"\u1EA1", w:"\u0103", a:"\u00E2" }, + 'i' : { s:"\u00ED", f:"\u00EC", r:"\u1EC9", x:"\u0129", j:"\u1ECB" }, + 'y' : { s:"\u00FD", f:"\u1EF3", r:"\u1EF7", x:"\u1EF9", j:"\u1EF5" }, + "\u01B0" : { s:"\u1EE9", f:"\u1EEB", r:"\u1EED", x:"\u1EEF", j:"\u1EF1" }, //u+ + "\u01A1" : { s:"\u1EDB", f:"\u1EDD", r:"\u1EDF", x:"\u1EE1", j:"\u1EE3" }, //o+ + "\u0103" : { s:"\u1EAF", f:"\u1EB1", r:"\u1EB3", x:"\u1EB5", j:"\u1EB7" }, //a( + "\u00E2" : { s:"\u1EA5", f:"\u1EA7", r:"\u1EA9", x:"\u1EAB", j:"\u1EAD" }, //a^ + + 'd' : { d:"\u0111" }, 'D' : { D:"\u0110" }, + + "\u0055" : { S:"\u00DA", F:"\u00D9", R:"\u1EE6", X:"\u0168", J:"\u1EE4", W:"\u01AF" }, //U+ + 'E' : { S:"\u00C9", F:"\u00C8", R:"\u1EBA", X:"\u1EBC", J:"\u1EB8", E:"\u00CA" }, + 'O' : { S:"\u00D3", F:"\u00D2", R:"\u1ECE", X:"\u00D5", J:"\u1ECC", W:"\u01A0", O:"\u00D4"}, + 'A' : { S:"\u00C1", F:"\u00C0", R:"\u1EA2", X:"\u00C3", J:"\u1EA0", W:"\u0102", A:"\u00C2" }, + 'I' : { S:"\u00CD", F:"\u00CC", R:"\u1EC8", X:"\u0128", J:"\u1ECA" }, + 'Y' : { S:"\u00DD", F:"\u1EF2", R:"\u1EF6", X:"\u1EF8", J:"\u1EF4" }, + + "\u01AF" : { S:"\u1EE8", F:"\u1EEA", R:"\u1EEC", X:"\u1EEE", J:"\u1EF0" }, //U+ + "\u01A0" : { S:"\u1EDA", F:"\u1EDC", R:"\u1EDE", X:"\u1EE0", J:"\u1EE2" }, // O+ + "\u0102" : { S:"\u1EAE", F:"\u1EB0", R:"\u1EB2", X:"\u1EB4", J:"\u1EB6" }, //A( + "\u00C2" : { S:"\u1EA4", F:"\u1EA6", R:"\u1EA8", X:"\u1EAA", J:"\u1EAC" }, //A^ + + "\u00F4" : { s:"\u1ED1", f:"\u1ED3", r:"\u1ED5", x:"\u1ED7", j:"\u1ED9" }, //o^ + "\u00EA" : { s:"\u1EBF", f:"\u1EC1", r:"\u1EC3", x:"\u1EC5", j:"\u1EC7" }, //e^ + + "\u00D4" : { S:"\u1ED0", F:"\u1ED2", R:"\u1ED4", X:"\u1ED6", J:"\u1ED8" }, //O^ + "\u00CA" : { S:"\u1EBE", F:"\u1EC0", R:"\u1EC2", X:"\u1EC4", J:"\u1EC6" } //E^ + + } +}; diff --git a/app/Resources/public/assets/keyboard/languages/zh.untranslated.js b/app/Resources/public/assets/keyboard/languages/zh.untranslated.js new file mode 100644 index 0000000000..f39bdab499 --- /dev/null +++ b/app/Resources/public/assets/keyboard/languages/zh.untranslated.js @@ -0,0 +1,29 @@ +// Keyboard Language +// zh = ISO 639-1 code for Chinese +// *********************** +jQuery.keyboard.language.zh = { + language: '\u4e2d\u6587\u4ed3\u9889\u8f93\u5165\u6cd5 (Chinese)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/layouts/_layout_template.js b/app/Resources/public/assets/keyboard/layouts/_layout_template.js new file mode 100644 index 0000000000..600abf3bc3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/_layout_template.js @@ -0,0 +1,34 @@ +/* keyboard layout template (copy of "international" from the core plugin) + */ +jQuery.keyboard.layouts['international'] = { + 'name' : 'international', + 'lang' : ['all'], // this setting must match the "all" language definition below + 'normal': [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} q w e r t y u i o p [ ] \\', + 'a s d f g h j k l ; \' {enter}', + '{shift} z x c v b n m , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} Q W E R T Y U I O P { } |', + 'A S D F G H J K L : " {enter}', + '{shift} Z X C V B N M < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '~ \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}', + '{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac', + '\u00e1 \u00df \u00f0 f g h j k \u00f8 \u00b6 \u00b4 {enter}', + '{shift} \u00e6 x \u00a9 v b \u00f1 \u00b5 \u00e7 > \u00bf {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ \u00b9 \u00b2 \u00b3 \u00a3 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00f7 {bksp}', + '{tab} \u00c4 \u00c5 \u00c9 \u00ae \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 \u00ab \u00bb \u00a6', + '\u00c4 \u00a7 \u00d0 F G H J K \u00d8 \u00b0 \u00a8 {enter}', + '{shift} \u00c6 X \u00a2 V B \u00d1 \u00b5 \u00c7 . \u00bf {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/albanian.js b/app/Resources/public/assets/keyboard/layouts/albanian.js new file mode 100644 index 0000000000..e1c6d53683 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/albanian.js @@ -0,0 +1,74 @@ +/* Albanian keyboard layouts + * contains layout: 'albanian-qwertz' & 'albanian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: jQuery('input').keyboard({ layout: 'albanian-qwertz' }); + * + * To do: add combos appropriate to the Albanian language + * missing caron, breve, ring, ogonek, double acute accent, diaeresis and cedilla accents. + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwertz-albanian + combined from http://en.wikipedia.org/wiki/File:Albanian_keyboard_layout.jpg, + http://ascii-table.com/keyboard.php/448 & http://www.google.com/webelements/ */ +jQuery.keyboard.layouts['albanian-qwertz'] = { + 'name' : 'Albanian-qwertz', + 'lang' : ['sq'], + 'normal' : [ + "\\ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t z u i o p \u00e7 '", + "a s d f g h j k l \u00eb [ ] {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '| ! " # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Z U I O P \u00c7 @", + "A S D F G H J K L \u00cb { } {enter}", + "{shift} > Y X C V B N M ; : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\\ ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} q w \u20ac r t z u i o p \u00f7 \u00d7", + "\u00e4 \u0111:Shortcut_(\/d) \u0110:Shortcut_(\/D) f g h j \u0142:Shortcut_(\/l) \u0141:Shortcut_(\/L) $ \u00df \u00a4 {enter}", + "{shift} < y x c @ { } \u00a7 < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* based on http://ascii-table.com/keyboard.php/452 */ +jQuery.keyboard.layouts['albanian-qwerty'] = { + 'name' : 'Albanian-qwerty', + 'lang' : ['sq'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u00eb '", + "a s d f g h j k l ; \u00e7 # {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}"], + 'shift' : [ + '\u00ac ! " \u00a7 $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P \u00cb @", + "A S D F G H J K L : \u00c7 ~ {enter}", + "{shift} \u00a6 Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "| 1 2 3 4 5 6 { } [ ] - = {bksp}", + "{tab} q w \u20ac r t y u i o p \u00f7 \u00d7", + "a s d f g h j k l ; \u00e7 # {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '| ! " \u00a7 $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W \u20AC R T Y U I O P \u00cb @", + "A S D F G H J K L : \u00c7 ~ {enter}", + "{shift} \u00a6 Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/arabic.js b/app/Resources/public/assets/keyboard/layouts/arabic.js new file mode 100644 index 0000000000..657c2c91c5 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/arabic.js @@ -0,0 +1,179 @@ +/* Arabic keyboard layouts + * contains layout: 'arabic-azerty', 'arabic-qwerty-1', 'arabic-qwerty-2', 'arabic-qwerty-3', 'arabic-qwerty-4' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'arabic-azerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/462 */ +jQuery.keyboard.layouts['arabic-azerty'] = { + 'name': 'Arabic-azerty', + 'lang': ['ar'], + 'normal' : [ + '\u00b2 & \u00e9 " \' ( - \u00e8 _ \u00e7 \u00e0 ) = {bksp}', + "{tab} a z e r t y u i o p ` $", + "q s d f g h j k l m \u00f9 \u066d {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u00b2 1 2 3 4 5 6 7 8 9 0 \u00b0 + {bksp}", + "{tab} A Z E R T Y U I O P \u0308 \u00a3", + "Q S D F G H J K L M \u066a \u00b5 {enter}", + "{shift} > W X C V B N ? . / \u00a7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '> & \u00e9 # { [ | \u0300 \\ ^ @ ] } {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '< 1 2 3 4 5 6 7 8 9 0 \u00b0 + {bksp}', + '{tab} \u064e \u064b \u064f \u064c \ufef9 \u0625 \u0060 \u00f7 \u00d7 \u061b \u062c \u00a4', + '\\ \u0633 [ ] \ufef7 \u0623 \u0640 \u060c / : \u00a8 \u0651 {enter}', + '{shift} | ~ \u0652 \u0650 \u064d \ufef5 \u0622 \' , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on http://ascii-table.com/keyboard.php/470 */ +jQuery.keyboard.layouts['arabic-qwerty-1'] = { + 'name': 'Arabic-qwerty-1', + 'lang': ['ar'], + 'normal' : [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u0630 \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f \\', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 {enter}', + '{shift} \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '\u0651 ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u00f7 \u00d7 \u061b > < |', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0623 \u0640 \u060c / : " {enter}', + '{shift} \u0626 \u0621 \u0624 \u0631 \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on keyboard layout from http://ascii-table.com/keyboard.php/238 */ +jQuery.keyboard.layouts['arabic-qwerty-2'] = { + 'name': 'Arabic-qwerty-2', + 'lang': ['ar'], + 'normal' : [ + '< 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' ` {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "> ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + 'A S D F G H J K L : " ~ {enter}', + "{shift} | Z X C V B N M , . ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '< \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '> ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u00f7 \u00d7 \u061b { }', + '\\ \u0633 \u064a \u0628 \ufef7 \u0623 \u062a \u060c \u0645 : " \u0651 {enter}', + '{shift} | \u0626 \u0621 \u0624 \u0631 \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on keyboard layout from http://ascii-table.com/keyboard.php/239 */ +jQuery.keyboard.layouts['arabic-qwerty-3'] = { + 'name': 'Arabic-qwerty-3', + 'lang': ['ar'], + 'normal' : [ + '< 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p \u00a2 |", + "a s d f g h j k l ; ' ` {enter}", + "{shift} \u0640 z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "> ! @ # $ % \u00ac & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u00a3 |", + 'A S D F G H J K L : " ~ {enter}', + "{shift} \u00a6 Z X C V B N M , . ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '< \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '> ! @ # $ % \u00ac & * ( ) _ + {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u00f7 \u00d7 \u061b \u00a3 |', + '\u0634 \u0633 \u064a \u0628 \ufef7 \u0623 \u062a \u060c / : " \u0651 {enter}', + '{shift} \u00a6 \u0626 \u0621 \u0624 \u0631 \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on keyboard layout from http://ascii-table.com/keyboard.php/253 */ +jQuery.keyboard.layouts['arabic-qwerty-4'] = { + 'name': 'Arabic-qwerty-4', + 'lang': ['ar'], + 'normal' : [ + '< 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' ` {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "> ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + 'A S D F G H J K L : " ~ {enter}', + "{shift} | Z X C V B N M , . ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '< \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '> ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} \u064e \u064b \u064f \u064c \ufef9 \u0625 \u0639 \u00f7 \u00d7 \u061b { }', + '\\ \u0633 \u064a \u0628 \ufef7 \u0623 \u062a \u060c \u002f : " \u0651 {enter}', + '{shift} | \u0626 \u0652 \u0650 \u064d \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/belarusian.js b/app/Resources/public/assets/keyboard/layouts/belarusian.js new file mode 100644 index 0000000000..08924bca0d --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/belarusian.js @@ -0,0 +1,43 @@ +/* Belarusian keyboard layouts + * contains layout: 'belarusian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'belarusian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/463 & http://www.google.com/webelements/ */ +jQuery.keyboard.layouts['belarusian-qwerty'] = { + 'name' : 'belarusian-qwerty', + 'lang' : ['be'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 ' \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0456 \u0442 \u044c \u0431 \u044e . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '\u0401 ! " \u2116 ; \u20ac : ? * ( ) _ + {bksp}', + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 ' /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0406 \u0422 \u042c \u0411 \u042e , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/bengali.js b/app/Resources/public/assets/keyboard/layouts/bengali.js new file mode 100644 index 0000000000..2f2865a015 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/bengali.js @@ -0,0 +1,77 @@ +/* Scandinavian keyboard layouts + * contains layout: 'bengali-qwerty-1' & 'bengali-qwerty-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'bengali-qwerty-1' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/480 & http://www.gate2home.com/?language=bn&sec=2 */ +jQuery.keyboard.layouts['bengali-qwerty-1'] = { + 'name' : 'bengali-qwerty-1', + 'lang' : ['bn'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '` \u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 - \u09c3 {bksp}', + '{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc \\', + '\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09b0 \u0995 \u09a4 \u099a \u099f {enter}', + '{shift} \u09ce \u0982 \u09ae \u09a8 \u09ac \u09b2 \u09b8 , . \u09df {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '~ \u09e7 \u09e8 \u09b0 \u09cd \u099c \u09a4 \u0995 \u09b6 ( ) \u0983 \u09c3 {bksp}', + '{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e |', + '\u0993 \u098f \u0985 \u0987 \u0989 \u09ab \u09b0 \u0996 \u09a5 \u099b \u09a0 {enter}', + '{shift} ? \u0981 \u09a3 \u09a8 \u09ac \u09b2 \u09b6 \u09b7 \u0964 \u09af {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on http://www.google.com/webelements/#!/virtualkeyboard */ +jQuery.keyboard.layouts['bengali-qwerty-2'] = { + 'name' : 'bengali-qwerty-2', + 'lang' : ['bn'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u0982 \u0981 \u09bc \u0983 \u09fa \u09f8 \u09f9 \u09f2 \u09f3 \u09e6 \u09f4 \u09e7 \u09f5 {bksp}', + '{tab} \u09e8 \u09f6 \u09e9 \u09f7 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u0985 \u0986 \u0987', + '\u0988 \u0989 \u098a \u098b \u09e0 \u098c \u09e1 \u098f \u0990 \u0993 \u0994 {enter}', + '{shift} \u0995 \u0996 \u0997 \u0998 \u0999 \u099a \u099b \u099c \u099d \u099e {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '\u099f \u09a0 \u09a1 \u09dc \u09a2 \u09dd \u09a3 \u09a4 \u09ce \u09a5 \u09a6 \u09a7 \u09a8 {bksp}', + '{tab} \u09aa \u09ab \u09ac \u09ad \u09ae \u09af \u09df \u09b0 \u09f0 \u09b2 \u09f1 \u09b6 \u09b7', + '\u09b8 \u09b9 \u09bd \u09be \u09bf \u09c0 \u09c1 \u09c2 \u09c3 \u09c4 \u09e2 {enter}', + '{shift} \u09e3 \u09c7 \u09c8 \u09cb \u09cc \u09cd \u09d7 {sp:3} {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/bulgarian.js b/app/Resources/public/assets/keyboard/layouts/bulgarian.js new file mode 100644 index 0000000000..a7cf53a0c6 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/bulgarian.js @@ -0,0 +1,43 @@ +/* Belarusian keyboard layouts + * contains layout: 'bulgarian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'bulgarian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* from http://ascii-table.com/keyboard.php/442 */ +jQuery.keyboard.layouts['bulgarian-qwerty'] = { + 'name' : 'bulgarian-qwerty', + 'lang' : ['bg'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '` 1 2 3 4 5 6 7 8 9 0 - . {bksp}', + "{tab} , \u0443 \u0435 \u0438 \u0448 \u0449 \u043a \u0441 \u0434 \u0437 \u0446 ; (", + "\u044c \u044f \u0430 \u043e \u0436 \u0433 \u0442 \u043d \u0432 \u043c \u0447 {enter}", + "{shift} \u044e \u0439 \u044a \u044d \u0444 \u0445 \u043f \u0440 \u043b \u0431 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '~ ! ? + " % = : / _ \u2116 I V {bksp}', + "{tab} \u044b \u0423 \u0415 \u0418 \u0428 \u0429 \u041a \u0421 \u0414 \u0417 \u0426 \u00a7 )", + "\u042c \u042f \u0410 \u041e \u0416 \u0413 \u0422 \u041d \u0412 \u041c \u0427 {enter}", + "{shift} \u042e \u0419 \u042a \u042d \u0424 \u0425 \u041f \u0420 \u041b \u0411 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/burmese.js b/app/Resources/public/assets/keyboard/layouts/burmese.js new file mode 100644 index 0000000000..4ad6a2a49f --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/burmese.js @@ -0,0 +1,43 @@ +/* Bermese keyboard layouts + * contains layout: 'burmese' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'burmese' }); + * + * thanks to @laminko (https://github.com/laminko); + * see https://github.com/Mottie/Keyboard/pull/507 + * license for this file: WTFPL + */ +jQuery.keyboard.layouts['burmese'] = { + 'name' : 'burmese', + 'lang' : ['my'], // this setting must match the "all" language definition below + 'normal': [ + '\u1050 \u1041 \u1042 \u1043 \u1044 \u1045 \u1046 \u1047 \u1048 \u1049 \u1040 - = {bksp}', + '{tab} \u1006 \u1010 \u1014 \u1019 \u1021 \u1015 \u1000 \u1004 \u101e \u1005 \u101f \u1029 \u104f', + '\u1031 \u103b \u102d \u103a \u102b \u1037 \u103c \u102f \u1030 \u1038 \' {enter}', + '{shift} \u1016 \u1011 \u1001 \u101c \u1018 \u100a \u102c , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '\u100e \u100d \u1052 \u100b \u1053 \u1054 \u1055 \u101b * ( ) _ + {bksp}', + '{tab} \u1008 \u101d \u1023 \u104e \u1024 \u104c \u1025 \u104d \u103f \u100f \u1027 \u102a \u1051', + '\u1017 \u103e \u102e \u1039 \u103d \u1036 \u1032 \u1012 \u1013 \u1002 " {enter}', + '{shift} \u1007 \u100c \u1003 \u1020 \u101a \u1009 \u1026 \u104a \u104b ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '~ \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}', + '{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac', + '\u00e1 \u00df \u00f0 f g h j k \u00f8 \u00b6 \u00b4 {enter}', + '{shift} \u00e6 x \u00a9 v b \u00f1 \u00b5 \u00e7 > \u00bf {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ \u00b9 \u00b2 \u00b3 \u00a3 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00f7 {bksp}', + '{tab} \u00c4 \u00c5 \u00c9 \u00ae \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 \u00ab \u00bb \u00a6', + '\u00c4 \u00a7 \u00d0 F G H J K \u00d8 \u00b0 \u00a8 {enter}', + '{shift} \u00c6 X \u00a2 V B \u00d1 \u00b5 \u00c7 . \u00bf {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/catalan.js b/app/Resources/public/assets/keyboard/layouts/catalan.js new file mode 100644 index 0000000000..2a54ceaf58 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/catalan.js @@ -0,0 +1,43 @@ +/* Catalan keyboard layouts + * contains layout: 'catalan-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'catalan-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/173-1 */ +jQuery.keyboard.layouts['catalan-qwerty'] = { + 'name' : 'catalan-qwerty', + 'lang' : ['ca'], + 'normal' : [ + "\u00ba 1 2 3 4 5 6 7 8 9 0 ' \u00a1 {bksp}", + "{tab} q w e r t y u i o p \u0300 +", + "a s d f g h j k l \u00f1 \u0301 \u00e7 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00aa ! " \u00b7 $ % & / ( ) = ? \u00bf {bksp}', + "{tab} Q W E R T Y U I O P \u0302 *", + "A S D F G H J K L \u00d1 \u0308 \u00c7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\\ \u007c @ # \u0303 5 \u00ac 7 8 9 0 \u0027 \u00a1 {bksp}', + "{tab} q w \u20ac r t y u i o p [ ]", + "a s d f g h j k l \u00f1 { } {enter}", + "{shift} \u007c z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '\u00aa ! " \u00b7 $ % & / ( ) = ? \u00bf {bksp}', + "{tab} Q W E R T Y U I O P [ ]", + "A S D F G H J K L \u00d1 { } {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/chinese.js b/app/Resources/public/assets/keyboard/layouts/chinese.js new file mode 100644 index 0000000000..d07c3f7091 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/chinese.js @@ -0,0 +1,41 @@ +/* Chinese keyboard layouts +* contains layout: 'chinese' +* +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'chinese' }); +* +* license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference +*/ +jQuery.keyboard.layouts['chinese'] = { + 'name' : 'chinese', + 'lang' : ['zh'], + 'normal' : [ + '\u20AC 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} \u624B \u7530 \u6C34 \u53E3 \u5EFF \u535C \u5C71 \u6208 \u4EBA \u5FC3 [ ] \\', + '\u65E5 \u5C38 \u6728 \u706B \u571F \u7AF9 \u5341 \u5927 \u4E2D ; \' {enter}', + '{shift} \uFF3A \u96E3 \u91D1 \u5973 \u6708 \u5F13 \u4E00 . - / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ) ( _ + {bksp}', + '{tab} q w e r t y u i o p { } |', + 'a s d f g h j k l : " {enter}', + '{shift} z x c v b n m , < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/danish.js b/app/Resources/public/assets/keyboard/layouts/danish.js new file mode 100644 index 0000000000..58cd1e4d53 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/danish.js @@ -0,0 +1,36 @@ +/* Danish keyboard layouts + * contains layout: 'danish-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'danish-qwerty' }); + * + * license for this file: WTFPL + */ + +/* qwerty by Torben Junker Kjær (jordbo.dk) - */ +jQuery.keyboard.layouts['danish-qwerty'] = { + 'name' : 'danish-qwerty', + 'lang' : ['da'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u0301 {b}", + "{tab} q w e r t y u i o p \u00e5 \u00a8", + "a s d f g h j k l \u00e6 \u00f8 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00bd ! " # \u00a4 % & / ( ) = ? \u0300 {b}', + "{tab} Q W E R T Y U I O P \u00c5 ^", + "A S D F G H J K L \u00c6 \u00d8 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u00a7 1 @ \u00a3 $ 5 6 { [ ] } + | {b}', + '{tab} q w € r t y u i o p \u00e5 ~', + "a s d f g h j k l \u00e6 \u00f8 ' {enter}", + '{shift} \\ z x c v b n \u00b5 , . - {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ethiopic.js b/app/Resources/public/assets/keyboard/layouts/ethiopic.js new file mode 100644 index 0000000000..cabee631d0 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ethiopic.js @@ -0,0 +1,34 @@ +/* keyboard layout template (copy of "international" from the core plugin) + */ +jQuery.keyboard.layouts['ethiopic'] = { + 'name' : 'Amharic', + 'lang' : ['amh'], + 'normal': [ + '` \u1369 \u136A \u136B \u136C \u136D \u136E \u136F \u1370 \u1371 0 \u1365 = {bksp}', + '{tab} \u1240 \u12c8 \u01dd \u1228 \u1270 \u12e8 u i o \u1330 \u1248 \u1288 \\', + 'a \u1230 \u12f0 \u1348 \u1308 \u1200 \u1338 \u12a8 \u1208:Shortcut_(l_+_e_=_\u120d) ; \u12a0 {enter}', + '{shift} \u12d8 \u1280 \u1278 \u1238 \u1260 \u1290 \u1218 \u1361 \u1362 / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '~ \u1372 \u1373 \u1374 \u1375 \u1376 \u1377 \u1378 \u1379 \u137A \u137B \u137C + {bksp}', + '{tab} \u1250 \u12d0 \u018e \u122f \u1320 Y U I O \u1350 \u1310 \u12b0 \u1384', + '\u0101 \u1220 \u1300 \u1358 \u1318 \u1210 \u1340 \u12b8 \u12f8 \u12A5\u130D\u12DA\u12A0\u1265\u1214\u122D\u1361 " {enter}', + '{shift} \u12e0 \u1359 \u1328 \u135A \u1268 \u1298 \u1380 \u1388 \u138C \u1208\u130D\u12DA\u12A0\u1265\u1214\u122D\u1361 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} q \u02b7 e r t y u i o \u1e57 [ ] \\', + 'a \u0161 d f \u01e7 \u1e2b j k l ; \u02be {enter}', + '{shift} \u017e x \u010d\u0323 \u010d b \u00f1 m , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} Q W E R T Y U I O \u1E56 { } |', + 'A \u0160 D F \u01e6 \u1e2a J K L : \u02bf {enter}', + '{shift} \u017d X \u010c\u0323 \u010c B \u00d1 M < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/french.js b/app/Resources/public/assets/keyboard/layouts/french.js new file mode 100644 index 0000000000..d323ddd631 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/french.js @@ -0,0 +1,109 @@ +/* French keyboard layouts + * contains layout: french-azerty-1 and 'french-azerty-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'french-azerty-1' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/189 & thanks to Nathana�l SEMHOUN: http://nathanael.semhoun.net */ +jQuery.keyboard.layouts['french-azerty-1'] = { + 'name' : 'french-azerty-1', + 'lang' : ['fr'], + 'normal' : [ + "\u00b2 & \u00e9 \" ' ( - \u00e8 _ \u00e7 \u00e0 ) = {bksp}", + "{tab} a z e r t y u i o p ^ $", + "q s d f g h j k l m \u00f9 * {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "{sp:1} 1 2 3 4 5 6 7 8 9 0 \u00b0 + {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 \u00a3", + "Q S D F G H J K L M % \u00b5 {enter}", + "{shift} > W X C V B N ? . / \u00a7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00b2 & ~ # { [ | ` \\ ^ @ ] } {bksp}", + "{tab} a z \u20ac r t y u i o p ^ \u00a4", + "q s d f g h j k l m \u00f9 * {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "{sp:1} 1 ~ # { [ | ` \\ ^ @ ] } {bksp}", + "{tab} A Z \u20ac R T Y U I O P \u00a8 \u00a4", + "Q S D F G H J K L M % \u00b5 {enter}", + "{shift} > W X C V B N ? . / \u00a7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], +}; + +jQuery.keyboard.layouts['french-azerty-2'] = { + 'name' : 'french-azerty-2', + 'lang' : ['fr'], + 'normal' : [ + "\u00b2 & \u00e9 \" ' ( - \u00e8 _ \u00e7 \u00e0 ) = {b}", + "{t} a z e r t y u i o p ^ $", + "q s d f g h j k l m \u00f9 * {e}", + "{s} < w x c v b n , ; : ! {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'shift' : [ + "{sp:1} 1 2 3 4 5 6 7 8 9 0 \u00b0 + {b}", + "{t} A Z E R T Y U I O P \u00a8 \u00a3", + "Q S D F G H J K L M % \u00b5 {e}", + "{s} > W X C V B N ? . / \u00a7 {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt' : [ + "\u00b2 & ~ # { [ | ` \\ ^ @ ] } {b}", + "{t} a z \u20ac r t y u i o p ^ \u00a4", + "q s d f g h j k l m \u00f9 * {e}", + "{s} < w x c v b n , ; : ! {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt-shift' : [ + "{sp:1} 1 ~ # { [ | ` \\ ^ @ ] } {b}", + "{t} A Z \u20ac R T Y U I O P \u00a8 \u00a4", + "Q S D F G H J K L M % \u00b5 {e}", + "{s} > W X C V B N ? . / \u00a7 {s}", + "{a} {alt} {space} {alt} {c}" + ], +}; + +jQuery.keyboard.layouts['french-bepo-V1.0rc2'] = { + 'name' : 'french-bepo-V1.0rc2', + 'lang' : ['fr'], + 'normal' : [ + "$ \" \u00AB \u00BB ( ) @ + - / * = % {b}", + "{t} b \u00e9 p o \u00e8 \u02c6 v d l j z w", + "a u i e , c t s r n m \u00E7 {enter}", + "{s} \u00ea \u00E0 y x . k \' q g h f {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'shift' : [ + "# 1 2 3 4 5 6 7 8 9 0 \u00b0 ` {b}", + "{t} B \u00c9 P O \u00c8 ! V D L J Z W", + "A U I E ; C T S R N M \u00c7 {enter}", + "{s} \u00ca \u00c0 Y X : K ? Q G H F {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt' : [ + "\u2013 \u2014 < > [ ] ^ \u00b1 \u2212 \u00f7 \u00d7 \u2260 \u2030 {b}", + "{t} | \u00b4 & \u0153 ` \u00a1 \u02c7 \u00f0 / \u0133 \u0259 \u02d8", + "\u00e6 \u00f9 \u00a8 \u20ac \u2019 \u00a9 \u00fe \u00df \u00ae ~ \u00af \u00b8 {enter}", + "{s} / \\ { } \u2026 ~ \u00bf \u00b0 \u00b5 \u2020 \u02db {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt-shift' : [ + "\u00b6 \u201e \u201c \u201d \u2264 \u2265 {empty} \u00ac \u00bc \u00bd \u00be \u2032 \u2033 {b}", + "{t} \u00A6 \u02DD \u00A7 \u0152 ` \u00A1 {empty} \u00D0 {empty} \u0132 \u018F \u02d8", + "\u00c6 \u00d9 \u02d9 \u00a4 \u031b \u017f \u00de \u1e9e \u2122 {empty} \u00ba , {enter}", + "{s} {empty} {empty} \u2018 \u2019 \u00B7 {empty} \u0309 \u0323 {empty} \u2021 \u00AA {s}", + "{a} {alt} {space} {alt} {c}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/german.js b/app/Resources/public/assets/keyboard/layouts/german.js new file mode 100644 index 0000000000..94c02e7229 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/german.js @@ -0,0 +1,63 @@ +/* German keyboard layouts + * contains layout: 'german-qwertz-1' & 'german-qwertz-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'german-qwertz-1' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* from http://ascii-table.com/keyboard.php/129 */ +jQuery.keyboard.layouts['german-qwertz-1'] = { + 'name' : 'german-qwertz-1', + 'lang' : ['de'], + 'normal' : [ + "\u0302 1 2 3 4 5 6 7 8 9 0 \u00df \u0301 {bksp}", + "{tab} q w e r t z u i o p \u00fc +", + "a s d f g h j k l \u00f6 \u00e4 # {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00b0 ! " \u00a7 $ % & / ( ) = ? \u0300 {bksp}', + "{tab} Q W E R T Z U I O P \u00dc *", + "A S D F G H J K L \u00d6 \u00c4 ' {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u0302 1 \u00b2 \u00b3 4 5 6 { [ ] } \\ \u0301 {bksp}', + "{tab} @ w \u20ac r t z u i o p \u00fc \u0303", + "a s d f g h j k l \u00f6 \u00e4 # {enter}", + "{shift} \u007c y x c v b n \u00b5 , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* from http://ascii-table.com/keyboard.php/150G-1 */ +jQuery.keyboard.layouts['german-qwertz-2'] = { + 'name' : 'german-qwertz-2', + 'lang' : ['de'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 ' \u0302 {bksp}", + "{tab} q w e r t z u i o p \u00fc \u0308", + "a s d f g h j k l \u00f6 \u00e4 $ {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00b0 + " * \u00e7 % & / ( ) = ? \u0300 {bksp}', + "{tab} Q W E R T Z U I O P \u00e8 !", + "A S D F G H J K L \u00e9 \u00e0 \u00a3 {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00a7 \u007c @ # 4 5 \u00ac \u00a6 \u00a2 9 0 \u0301 \u0303 {bksp}", + "{tab} q w \u20ac r t z u i o p [ ]", + "a s d f g h j k l \u00f6 { } {enter}", + "{shift} \\ y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/hebrew.js b/app/Resources/public/assets/keyboard/layouts/hebrew.js new file mode 100644 index 0000000000..387e175c2c --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/hebrew.js @@ -0,0 +1,36 @@ +/* Hebrew keyboard layouts + * contains layout: 'hebrew-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'hebrew-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/212 */ +jQuery.keyboard.layouts['hebrew-qwerty'] = { + 'name' : 'hebrew-qwerty', + 'lang' : ['he'], + 'normal' : [ + '; 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} / ' \u05e7 \u05e8 \u05d0 \u05d8 \u05d5 \u05df \u05dd \u05e4 [ ] \\", + "\u05e9 \u05d3 \u05d2 \u05db \u05e2 \u05d9 \u05d7 \u05dc \u05da \u05e3 , {enter}", + "{shift} \u05d6 \u05e1 \u05d1 \u05d4 \u05e0 \u05de \u05e6 \u05ea \u05e5 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/hindi.js b/app/Resources/public/assets/keyboard/layouts/hindi.js new file mode 100644 index 0000000000..85f9a27d7e --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/hindi.js @@ -0,0 +1,42 @@ +/* Hindi keyboard layouts +* contains layout: 'hindi' +* +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'hindi' }); +* +* license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference +*/ + +jQuery.keyboard.layouts['hindi'] = { + 'name' : 'hindi', + 'lang' : ['hi'], + 'normal' : [ + '` \u090D \u0945 \u094D\u0930 \u0930\u094D \u091C\u094D\u091E \u0924\u094D\u0930 \u0915\u094D\u0937 \u0936\u094D\u0930 \u096F \u0966 - \u0943 {bksp}', + '{tab} \u094C \u0948 \u093E \u0940 \u0942 \u092C \u0939 \u0917 \u0926 \u091C \u0921 \u093C \u0949 \\', + '\u094B \u0947 \u094D \u093F \u0941 \u092A \u0930 \u0915 \u0924 \u091A \u091F {enter}', + '{shift} \u0902 \u092E \u0928 \u0935 \u0932 \u0938 , . \u092F {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift' : [ + '~ \u0967 \u0968 \u0969 \u096A \u096B \u096C \u096D \u096E \u096F \u0966 \u0903 \u090B {bksp}', + '{tab} \u0914 \u0910 \u0906 \u0908 \u090A \u092D \u0919 \u0918 \u0927 \u091D \u0922 \u091E \u0911', + '\u0913 \u090F \u0905 \u0907 \u0909 \u092B \u0931 \u0916 \u0925 \u091B \u0920 {enter}', + '{shift} "" \u0901 \u0923 \u0928 \u0935 \u0933 \u0936 \u0937 \u0964 \u095F {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/hungarian.js b/app/Resources/public/assets/keyboard/layouts/hungarian.js new file mode 100644 index 0000000000..c84ceaab06 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/hungarian.js @@ -0,0 +1,63 @@ +/* hungarian keyboard layouts + * file codepage: this file use utf8 without bom, non ansi + * contains layout: 'hungarian-qwertz-1' & 'hungarian-qwertz-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'hungarian-qwerty-2' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwertz by Tóth Gergely (https://github.com/tgely) - */ +jQuery.keyboard.layouts['hungarian-qwertz-1'] = { + 'name' : 'hungarian-qwertz-1', + 'lang' : ['hu'], + "default" : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 \u0171 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ' \" + ! % / = ( ) \u00d6 \u00dc \u00d3 \u0170 {bksp}", + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{sp:1} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 \u00a4 {bksp}", + "{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7", + "\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts['hungarian-qwertz-2'] = { + 'name' : 'hungarian-qwertz-2', + 'lang' : ['hu'], + "default" : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 \u0171 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ' \" + ! % / = ( ) \u00d6 \u00dc \u00d3 {bksp}", + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 \u0170 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{sp:1} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7", + "\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df \u00a4 {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/hungarianansi.js b/app/Resources/public/assets/keyboard/layouts/hungarianansi.js new file mode 100644 index 0000000000..3ca35e273f --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/hungarianansi.js @@ -0,0 +1,63 @@ +/* hungarian ansi keyboard layouts + * file codepage: ansi + * contains layout: 'hungariansi-qwertz-1' & 'hungariansi-qwertz-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'hungarianansi-qwerty-2' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwertz by Tóth Gergely (https://github.com/tgely) - helped :http://www.fileformat.info/info/unicode/char/search.htm */ +jQuery.keyboard.layouts['hungarianansi-qwertz-1'] = { + 'name' : 'hungarianansi-qwertz-1', + 'lang' : ['hu'], + 'normal' : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 \u0171 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00a7 \u0027 " + ! % / = ( ) \u00d6 \u00dc \u00d3 \u0170 {bksp}', + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '{sp:1} \u007e \u02c7 \u005e \u02d8 \u00b0 \u02db \u0060 \u02d9 \u00b4 \u02dd \u00a8 \u00b8 \u00a4 {bksp}', // most of non used + '{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7', + '\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df {enter}', + '{shift} < > # & @ { } < ; > * {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +jQuery.keyboard.layouts['hungarianansi-qwertz-2'] = { + 'name' : 'hungarianansi-qwertz-2', + 'lang' : ['hu'], + 'normal' : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 \u0171 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00a7 \u0027 " + ! % / = ( ) \u00d6 \u00dc \u00d3 {bksp}', + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 \u0170 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '{sp:1} \u007e \u02c7 \u005e \u02d8 \u00b0 \u02db \u0060 \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}', // most of non used + '{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7', + '\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df \u00a4 {enter}', + '{shift} < > # & @ { } < ; > * {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/japanese.js b/app/Resources/public/assets/keyboard/layouts/japanese.js new file mode 100644 index 0000000000..b6a9668e94 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/japanese.js @@ -0,0 +1,88 @@ +/* Japanese (hiragana and katakana) keyboard layouts + * contains layouts for: 'japanese-kana' & 'japanese-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'japanese-kana' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + * + * Japanese layout by Paco Alcantara (https://github.com/pacoalcantara), based on: + * http://www.fileformat.info/info/unicode/char/search.htm + * http://www.tamasoft.co.jp/en/general-info/unicode.html + * http://ascii-table.com/keyboard.php/194 + * Preferably use 'japanese-kana' unless roma-ji characters are needed on input. + */ +jQuery.keyboard.layouts['japanese-kana'] = { + 'name' : 'japanese-kana', + 'lang' : ['ja'], + 'normal' : [ + '0 1 2 3 4 5 6 7 8 9', + '\u3042 \u3044 \u3046 \u3048 \u304a \u306f \u3072 \u3075 \u3078 \u307b', + '\u304b \u304d \u304f \u3051 \u3053 \u307e \u307f \u3080 \u3081 \u3082', + '\u3055 \u3057 \u3059 \u305b \u305d \u3084 \u3086 \u3088 {bksp}', + '\u305f \u3061 \u3064 \u3066 \u3068 \u3089 \u308a \u308b \u308c \u308d', + '\u306a \u306b \u306c \u306d \u306e \u308f \u3092 \u3093 \u3090 \u3091', + '\u3041 \u3043 \u3045 \u3047 \u3049 \u3099 \u309a \u0301 {shift}', + '\u3083 \u3085 \u3087 \u3063 \u0301 \u30fb \u30fc \u301c {alt}', + '{accept} {space} {cancel} {enter}' + ], + 'shift' : [ + '0 1 2 3 4 5 6 7 8 9', + '\u30a2 \u30a4 \u30a6 \u30a8 \u30aa \u30cf \u30d2 \u30d5 \u30d8 \u30db', + '\u30ab \u30ad \u30af \u30b1 \u30b3 \u30de \u30df \u30e0 \u30e1 \u30e2', + '\u30b5 \u30b7 \u30b9 \u30bb \u30bd \u30e4 \u30e6 \u30e8 {bksp}', + '\u30bf \u30c1 \u30c4 \u30c6 \u30c8 \u30e9 \u30ea \u30eb \u30ec \u30ed', + '\u30ca \u30cb \u30cc \u30cd \u30ce \u30ef \u30f2 \u30f3 \u30f0 \u30f1', + '\u30a1 \u30a3 \u30a5 \u30a7 \u30a9 \u3099 \u309a \u0301 {shift}', + '\u30e3 \u30e5 \u30e7 \u30c3 \u0301 \u30fb \u30fc \u301c {alt}', + '{accept} {space} {cancel} {enter}' + ], + 'alt' : [ + '0 1 2 3 4 5 6 7 8 9 - ^ \uffe5 {bksp}', + "{tab} q w e r t y u i o p \u0040 [", + "a s d f g h j k l ; : ] {enter}", + " {shift} z x c v b n m , . / \\ {shift}", + "{accept} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '0 1 2 3 4 5 6 7 8 9 - ^ \uffe5 {bksp}', + "{tab} Q W E R T Y U I O P \u0040 [", + "A S D F G H J K L ; : ] {enter}", + " {shift} Z X C V B N M , . / \\ {shift}", + "{accept} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts['japanese-qwerty'] = { + 'name' : 'japanese-qwerty', + 'lang' : ['ja'], + 'normal' : [ + "1 2 3 4 5 6 7 8 9 0 - ^ \u00a5 {bksp}", + "{tab} q w e r t y u i o p \u0040 [", + "a s d f g h j k l ; : ] {enter}", + "{shift} z x c v b n m , . / \\ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "! \" # $ % & \' ( ) \u0301 = ~ | {bksp}", + "{tab} Q W E R T Y U I O P \u0060 {", + "A S D F G H J K L + * } {enter}", + "{shift} Z X C V B N M < > ? _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u306c \u3075 \u3042 \u3046 \u3048 \u304a \u3084 \u3086 \u3088 \u308f \u307b \u3078 \uff70 {bksp}", + "{tab} \u305f \u3066 \u3044 \u3059 \u304b \u3093 \u306a \u306b \u3089 \u305b \uff9e \uff9f", + "\u3061 \u3068 \u3057 \u306f \u304d \u304f \u307e \u306e \u308a \u308c \u3051 \u3080 {enter}", + "{shift} \u3064 \u3055 \u305d \u3072 \u3053 \u307f \u3082 \u306d \u308b \u3081 \u308d {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u0301 \u0301 \u3041 \u3045 \u3047 \u3049 \u3083 \u3085 \u3087 \u3092 \u0301 \u0301 \u0301 {bksp}", + "{tab} \u0301 \u0301 \u3043 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \uff62", + "\u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u30f6 \uff63 {enter}", + "{shift} \u3063 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \uff64 \uff61 \uff65 \u00a6 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-combined.js b/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-combined.js new file mode 100644 index 0000000000..1ea67404e3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-combined.js @@ -0,0 +1,2683 @@ +/*** This file is dynamically generated *** +█████▄ ▄████▄ █████▄ ▄████▄ ██████ ███████▄ ▄████▄ █████▄ ██ ██████ ██ ██ +██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀▀██ +█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀ +*/ +/*! jQuery UI Virtual Keyboard - Original Layouts */ +/* Albanian keyboard layouts + * contains layout: 'albanian-qwertz' & 'albanian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: jQuery('input').keyboard({ layout: 'albanian-qwertz' }); + * + * To do: add combos appropriate to the Albanian language + * missing caron, breve, ring, ogonek, double acute accent, diaeresis and cedilla accents. + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwertz-albanian + combined from http://en.wikipedia.org/wiki/File:Albanian_keyboard_layout.jpg, + http://ascii-table.com/keyboard.php/448 & http://www.google.com/webelements/ */ +jQuery.keyboard.layouts['albanian-qwertz'] = { + 'name' : 'Albanian-qwertz', + 'lang' : ['sq'], + 'normal' : [ + "\\ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t z u i o p \u00e7 '", + "a s d f g h j k l \u00eb [ ] {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '| ! " # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Z U I O P \u00c7 @", + "A S D F G H J K L \u00cb { } {enter}", + "{shift} > Y X C V B N M ; : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\\ ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} q w \u20ac r t z u i o p \u00f7 \u00d7", + "\u00e4 \u0111:Shortcut_(\/d) \u0110:Shortcut_(\/D) f g h j \u0142:Shortcut_(\/l) \u0141:Shortcut_(\/L) $ \u00df \u00a4 {enter}", + "{shift} < y x c @ { } \u00a7 < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* based on http://ascii-table.com/keyboard.php/452 */ +jQuery.keyboard.layouts['albanian-qwerty'] = { + 'name' : 'Albanian-qwerty', + 'lang' : ['sq'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u00eb '", + "a s d f g h j k l ; \u00e7 # {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}"], + 'shift' : [ + '\u00ac ! " \u00a7 $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P \u00cb @", + "A S D F G H J K L : \u00c7 ~ {enter}", + "{shift} \u00a6 Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "| 1 2 3 4 5 6 { } [ ] - = {bksp}", + "{tab} q w \u20ac r t y u i o p \u00f7 \u00d7", + "a s d f g h j k l ; \u00e7 # {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '| ! " \u00a7 $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W \u20AC R T Y U I O P \u00cb @", + "A S D F G H J K L : \u00c7 ~ {enter}", + "{shift} \u00a6 Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Arabic keyboard layouts + * contains layout: 'arabic-azerty', 'arabic-qwerty-1', 'arabic-qwerty-2', 'arabic-qwerty-3', 'arabic-qwerty-4' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'arabic-azerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/462 */ +jQuery.keyboard.layouts['arabic-azerty'] = { + 'name': 'Arabic-azerty', + 'lang': ['ar'], + 'normal' : [ + '\u00b2 & \u00e9 " \' ( - \u00e8 _ \u00e7 \u00e0 ) = {bksp}', + "{tab} a z e r t y u i o p ` $", + "q s d f g h j k l m \u00f9 \u066d {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u00b2 1 2 3 4 5 6 7 8 9 0 \u00b0 + {bksp}", + "{tab} A Z E R T Y U I O P \u0308 \u00a3", + "Q S D F G H J K L M \u066a \u00b5 {enter}", + "{shift} > W X C V B N ? . / \u00a7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '> & \u00e9 # { [ | \u0300 \\ ^ @ ] } {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '< 1 2 3 4 5 6 7 8 9 0 \u00b0 + {bksp}', + '{tab} \u064e \u064b \u064f \u064c \ufef9 \u0625 \u0060 \u00f7 \u00d7 \u061b \u062c \u00a4', + '\\ \u0633 [ ] \ufef7 \u0623 \u0640 \u060c / : \u00a8 \u0651 {enter}', + '{shift} | ~ \u0652 \u0650 \u064d \ufef5 \u0622 \' , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on http://ascii-table.com/keyboard.php/470 */ +jQuery.keyboard.layouts['arabic-qwerty-1'] = { + 'name': 'Arabic-qwerty-1', + 'lang': ['ar'], + 'normal' : [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u0630 \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f \\', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 {enter}', + '{shift} \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '\u0651 ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u00f7 \u00d7 \u061b > < |', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0623 \u0640 \u060c / : " {enter}', + '{shift} \u0626 \u0621 \u0624 \u0631 \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on keyboard layout from http://ascii-table.com/keyboard.php/238 */ +jQuery.keyboard.layouts['arabic-qwerty-2'] = { + 'name': 'Arabic-qwerty-2', + 'lang': ['ar'], + 'normal' : [ + '< 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' ` {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "> ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + 'A S D F G H J K L : " ~ {enter}', + "{shift} | Z X C V B N M , . ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '< \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '> ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u00f7 \u00d7 \u061b { }', + '\\ \u0633 \u064a \u0628 \ufef7 \u0623 \u062a \u060c \u0645 : " \u0651 {enter}', + '{shift} | \u0626 \u0621 \u0624 \u0631 \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on keyboard layout from http://ascii-table.com/keyboard.php/239 */ +jQuery.keyboard.layouts['arabic-qwerty-3'] = { + 'name': 'Arabic-qwerty-3', + 'lang': ['ar'], + 'normal' : [ + '< 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p \u00a2 |", + "a s d f g h j k l ; ' ` {enter}", + "{shift} \u0640 z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "> ! @ # $ % \u00ac & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u00a3 |", + 'A S D F G H J K L : " ~ {enter}', + "{shift} \u00a6 Z X C V B N M , . ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '< \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '> ! @ # $ % \u00ac & * ( ) _ + {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u00f7 \u00d7 \u061b \u00a3 |', + '\u0634 \u0633 \u064a \u0628 \ufef7 \u0623 \u062a \u060c / : " \u0651 {enter}', + '{shift} \u00a6 \u0626 \u0621 \u0624 \u0631 \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on keyboard layout from http://ascii-table.com/keyboard.php/253 */ +jQuery.keyboard.layouts['arabic-qwerty-4'] = { + 'name': 'Arabic-qwerty-4', + 'lang': ['ar'], + 'normal' : [ + '< 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' ` {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "> ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + 'A S D F G H J K L : " ~ {enter}', + "{shift} | Z X C V B N M , . ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '< \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f', + '\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 \u0630 {enter}', + '{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \ufefb \u0649 \u0629 \u0648 \u0632 \u0638 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '> ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} \u064e \u064b \u064f \u064c \ufef9 \u0625 \u0639 \u00f7 \u00d7 \u061b { }', + '\\ \u0633 \u064a \u0628 \ufef7 \u0623 \u062a \u060c \u002f : " \u0651 {enter}', + '{shift} | \u0626 \u0652 \u0650 \u064d \ufef5 \u0622 \u0629 , . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* Belarusian keyboard layouts + * contains layout: 'belarusian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'belarusian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/463 & http://www.google.com/webelements/ */ +jQuery.keyboard.layouts['belarusian-qwerty'] = { + 'name' : 'belarusian-qwerty', + 'lang' : ['be'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 ' \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0456 \u0442 \u044c \u0431 \u044e . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '\u0401 ! " \u2116 ; \u20ac : ? * ( ) _ + {bksp}', + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 ' /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0406 \u0422 \u042c \u0411 \u042e , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Scandinavian keyboard layouts + * contains layout: 'bengali-qwerty-1' & 'bengali-qwerty-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'bengali-qwerty-1' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/480 & http://www.gate2home.com/?language=bn&sec=2 */ +jQuery.keyboard.layouts['bengali-qwerty-1'] = { + 'name' : 'bengali-qwerty-1', + 'lang' : ['bn'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '` \u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 - \u09c3 {bksp}', + '{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc \\', + '\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09b0 \u0995 \u09a4 \u099a \u099f {enter}', + '{shift} \u09ce \u0982 \u09ae \u09a8 \u09ac \u09b2 \u09b8 , . \u09df {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '~ \u09e7 \u09e8 \u09b0 \u09cd \u099c \u09a4 \u0995 \u09b6 ( ) \u0983 \u09c3 {bksp}', + '{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e |', + '\u0993 \u098f \u0985 \u0987 \u0989 \u09ab \u09b0 \u0996 \u09a5 \u099b \u09a0 {enter}', + '{shift} ? \u0981 \u09a3 \u09a8 \u09ac \u09b2 \u09b6 \u09b7 \u0964 \u09af {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* based on http://www.google.com/webelements/#!/virtualkeyboard */ +jQuery.keyboard.layouts['bengali-qwerty-2'] = { + 'name' : 'bengali-qwerty-2', + 'lang' : ['bn'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u0982 \u0981 \u09bc \u0983 \u09fa \u09f8 \u09f9 \u09f2 \u09f3 \u09e6 \u09f4 \u09e7 \u09f5 {bksp}', + '{tab} \u09e8 \u09f6 \u09e9 \u09f7 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u0985 \u0986 \u0987', + '\u0988 \u0989 \u098a \u098b \u09e0 \u098c \u09e1 \u098f \u0990 \u0993 \u0994 {enter}', + '{shift} \u0995 \u0996 \u0997 \u0998 \u0999 \u099a \u099b \u099c \u099d \u099e {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift' : [ + '\u099f \u09a0 \u09a1 \u09dc \u09a2 \u09dd \u09a3 \u09a4 \u09ce \u09a5 \u09a6 \u09a7 \u09a8 {bksp}', + '{tab} \u09aa \u09ab \u09ac \u09ad \u09ae \u09af \u09df \u09b0 \u09f0 \u09b2 \u09f1 \u09b6 \u09b7', + '\u09b8 \u09b9 \u09bd \u09be \u09bf \u09c0 \u09c1 \u09c2 \u09c3 \u09c4 \u09e2 {enter}', + '{shift} \u09e3 \u09c7 \u09c8 \u09cb \u09cc \u09cd \u09d7 {sp:3} {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* Belarusian keyboard layouts + * contains layout: 'bulgarian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'bulgarian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* from http://ascii-table.com/keyboard.php/442 */ +jQuery.keyboard.layouts['bulgarian-qwerty'] = { + 'name' : 'bulgarian-qwerty', + 'lang' : ['bg'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '` 1 2 3 4 5 6 7 8 9 0 - . {bksp}', + "{tab} , \u0443 \u0435 \u0438 \u0448 \u0449 \u043a \u0441 \u0434 \u0437 \u0446 ; (", + "\u044c \u044f \u0430 \u043e \u0436 \u0433 \u0442 \u043d \u0432 \u043c \u0447 {enter}", + "{shift} \u044e \u0439 \u044a \u044d \u0444 \u0445 \u043f \u0440 \u043b \u0431 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '~ ! ? + " % = : / _ \u2116 I V {bksp}', + "{tab} \u044b \u0423 \u0415 \u0418 \u0428 \u0429 \u041a \u0421 \u0414 \u0417 \u0426 \u00a7 )", + "\u042c \u042f \u0410 \u041e \u0416 \u0413 \u0422 \u041d \u0412 \u041c \u0427 {enter}", + "{shift} \u042e \u0419 \u042a \u042d \u0424 \u0425 \u041f \u0420 \u041b \u0411 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Bermese keyboard layouts + * contains layout: 'burmese' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'burmese' }); + * + * thanks to @laminko (https://github.com/laminko); + * see https://github.com/Mottie/Keyboard/pull/507 + * license for this file: WTFPL + */ +jQuery.keyboard.layouts['burmese'] = { + 'name' : 'burmese', + 'lang' : ['my'], // this setting must match the "all" language definition below + 'normal': [ + '\u1050 \u1041 \u1042 \u1043 \u1044 \u1045 \u1046 \u1047 \u1048 \u1049 \u1040 - = {bksp}', + '{tab} \u1006 \u1010 \u1014 \u1019 \u1021 \u1015 \u1000 \u1004 \u101e \u1005 \u101f \u1029 \u104f', + '\u1031 \u103b \u102d \u103a \u102b \u1037 \u103c \u102f \u1030 \u1038 \' {enter}', + '{shift} \u1016 \u1011 \u1001 \u101c \u1018 \u100a \u102c , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '\u100e \u100d \u1052 \u100b \u1053 \u1054 \u1055 \u101b * ( ) _ + {bksp}', + '{tab} \u1008 \u101d \u1023 \u104e \u1024 \u104c \u1025 \u104d \u103f \u100f \u1027 \u102a \u1051', + '\u1017 \u103e \u102e \u1039 \u103d \u1036 \u1032 \u1012 \u1013 \u1002 " {enter}', + '{shift} \u1007 \u100c \u1003 \u1020 \u101a \u1009 \u1026 \u104a \u104b ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '~ \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}', + '{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac', + '\u00e1 \u00df \u00f0 f g h j k \u00f8 \u00b6 \u00b4 {enter}', + '{shift} \u00e6 x \u00a9 v b \u00f1 \u00b5 \u00e7 > \u00bf {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ \u00b9 \u00b2 \u00b3 \u00a3 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00f7 {bksp}', + '{tab} \u00c4 \u00c5 \u00c9 \u00ae \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 \u00ab \u00bb \u00a6', + '\u00c4 \u00a7 \u00d0 F G H J K \u00d8 \u00b0 \u00a8 {enter}', + '{shift} \u00c6 X \u00a2 V B \u00d1 \u00b5 \u00c7 . \u00bf {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* Catalan keyboard layouts + * contains layout: 'catalan-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'catalan-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/173-1 */ +jQuery.keyboard.layouts['catalan-qwerty'] = { + 'name' : 'catalan-qwerty', + 'lang' : ['ca'], + 'normal' : [ + "\u00ba 1 2 3 4 5 6 7 8 9 0 ' \u00a1 {bksp}", + "{tab} q w e r t y u i o p \u0300 +", + "a s d f g h j k l \u00f1 \u0301 \u00e7 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00aa ! " \u00b7 $ % & / ( ) = ? \u00bf {bksp}', + "{tab} Q W E R T Y U I O P \u0302 *", + "A S D F G H J K L \u00d1 \u0308 \u00c7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\\ \u007c @ # \u0303 5 \u00ac 7 8 9 0 \u0027 \u00a1 {bksp}', + "{tab} q w \u20ac r t y u i o p [ ]", + "a s d f g h j k l \u00f1 { } {enter}", + "{shift} \u007c z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '\u00aa ! " \u00b7 $ % & / ( ) = ? \u00bf {bksp}', + "{tab} Q W E R T Y U I O P [ ]", + "A S D F G H J K L \u00d1 { } {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Chinese keyboard layouts +* contains layout: 'chinese' +* +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'chinese' }); +* +* license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference +*/ +jQuery.keyboard.layouts['chinese'] = { + 'name' : 'chinese', + 'lang' : ['zh'], + 'normal' : [ + '\u20AC 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} \u624B \u7530 \u6C34 \u53E3 \u5EFF \u535C \u5C71 \u6208 \u4EBA \u5FC3 [ ] \\', + '\u65E5 \u5C38 \u6728 \u706B \u571F \u7AF9 \u5341 \u5927 \u4E2D ; \' {enter}', + '{shift} \uFF3A \u96E3 \u91D1 \u5973 \u6708 \u5F13 \u4E00 . - / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ) ( _ + {bksp}', + '{tab} q w e r t y u i o p { } |', + 'a s d f g h j k l : " {enter}', + '{shift} z x c v b n m , < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Danish keyboard layouts + * contains layout: 'danish-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'danish-qwerty' }); + * + * license for this file: WTFPL + */ + +/* qwerty by Torben Junker Kjær (jordbo.dk) - */ +jQuery.keyboard.layouts['danish-qwerty'] = { + 'name' : 'danish-qwerty', + 'lang' : ['da'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u0301 {b}", + "{tab} q w e r t y u i o p \u00e5 \u00a8", + "a s d f g h j k l \u00e6 \u00f8 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00bd ! " # \u00a4 % & / ( ) = ? \u0300 {b}', + "{tab} Q W E R T Y U I O P \u00c5 ^", + "A S D F G H J K L \u00c6 \u00d8 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u00a7 1 @ \u00a3 $ 5 6 { [ ] } + | {b}', + '{tab} q w € r t y u i o p \u00e5 ~', + "a s d f g h j k l \u00e6 \u00f8 ' {enter}", + '{shift} \\ z x c v b n \u00b5 , . - {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* keyboard layout template (copy of "international" from the core plugin) + */ +jQuery.keyboard.layouts['ethiopic'] = { + 'name' : 'Amharic', + 'lang' : ['amh'], + 'normal': [ + '` \u1369 \u136A \u136B \u136C \u136D \u136E \u136F \u1370 \u1371 0 \u1365 = {bksp}', + '{tab} \u1240 \u12c8 \u01dd \u1228 \u1270 \u12e8 u i o \u1330 \u1248 \u1288 \\', + 'a \u1230 \u12f0 \u1348 \u1308 \u1200 \u1338 \u12a8 \u1208:Shortcut_(l_+_e_=_\u120d) ; \u12a0 {enter}', + '{shift} \u12d8 \u1280 \u1278 \u1238 \u1260 \u1290 \u1218 \u1361 \u1362 / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '~ \u1372 \u1373 \u1374 \u1375 \u1376 \u1377 \u1378 \u1379 \u137A \u137B \u137C + {bksp}', + '{tab} \u1250 \u12d0 \u018e \u122f \u1320 Y U I O \u1350 \u1310 \u12b0 \u1384', + '\u0101 \u1220 \u1300 \u1358 \u1318 \u1210 \u1340 \u12b8 \u12f8 \u12A5\u130D\u12DA\u12A0\u1265\u1214\u122D\u1361 " {enter}', + '{shift} \u12e0 \u1359 \u1328 \u135A \u1268 \u1298 \u1380 \u1388 \u138C \u1208\u130D\u12DA\u12A0\u1265\u1214\u122D\u1361 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} q \u02b7 e r t y u i o \u1e57 [ ] \\', + 'a \u0161 d f \u01e7 \u1e2b j k l ; \u02be {enter}', + '{shift} \u017e x \u010d\u0323 \u010d b \u00f1 m , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} Q W E R T Y U I O \u1E56 { } |', + 'A \u0160 D F \u01e6 \u1e2a J K L : \u02bf {enter}', + '{shift} \u017d X \u010c\u0323 \u010c B \u00d1 M < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* French keyboard layouts + * contains layout: french-azerty-1 and 'french-azerty-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'french-azerty-1' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/189 & thanks to Nathana�l SEMHOUN: http://nathanael.semhoun.net */ +jQuery.keyboard.layouts['french-azerty-1'] = { + 'name' : 'french-azerty-1', + 'lang' : ['fr'], + 'normal' : [ + "\u00b2 & \u00e9 \" ' ( - \u00e8 _ \u00e7 \u00e0 ) = {bksp}", + "{tab} a z e r t y u i o p ^ $", + "q s d f g h j k l m \u00f9 * {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "{sp:1} 1 2 3 4 5 6 7 8 9 0 \u00b0 + {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 \u00a3", + "Q S D F G H J K L M % \u00b5 {enter}", + "{shift} > W X C V B N ? . / \u00a7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00b2 & ~ # { [ | ` \\ ^ @ ] } {bksp}", + "{tab} a z \u20ac r t y u i o p ^ \u00a4", + "q s d f g h j k l m \u00f9 * {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "{sp:1} 1 ~ # { [ | ` \\ ^ @ ] } {bksp}", + "{tab} A Z \u20ac R T Y U I O P \u00a8 \u00a4", + "Q S D F G H J K L M % \u00b5 {enter}", + "{shift} > W X C V B N ? . / \u00a7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], +}; + +jQuery.keyboard.layouts['french-azerty-2'] = { + 'name' : 'french-azerty-2', + 'lang' : ['fr'], + 'normal' : [ + "\u00b2 & \u00e9 \" ' ( - \u00e8 _ \u00e7 \u00e0 ) = {b}", + "{t} a z e r t y u i o p ^ $", + "q s d f g h j k l m \u00f9 * {e}", + "{s} < w x c v b n , ; : ! {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'shift' : [ + "{sp:1} 1 2 3 4 5 6 7 8 9 0 \u00b0 + {b}", + "{t} A Z E R T Y U I O P \u00a8 \u00a3", + "Q S D F G H J K L M % \u00b5 {e}", + "{s} > W X C V B N ? . / \u00a7 {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt' : [ + "\u00b2 & ~ # { [ | ` \\ ^ @ ] } {b}", + "{t} a z \u20ac r t y u i o p ^ \u00a4", + "q s d f g h j k l m \u00f9 * {e}", + "{s} < w x c v b n , ; : ! {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt-shift' : [ + "{sp:1} 1 ~ # { [ | ` \\ ^ @ ] } {b}", + "{t} A Z \u20ac R T Y U I O P \u00a8 \u00a4", + "Q S D F G H J K L M % \u00b5 {e}", + "{s} > W X C V B N ? . / \u00a7 {s}", + "{a} {alt} {space} {alt} {c}" + ], +}; + +jQuery.keyboard.layouts['french-bepo-V1.0rc2'] = { + 'name' : 'french-bepo-V1.0rc2', + 'lang' : ['fr'], + 'normal' : [ + "$ \" \u00AB \u00BB ( ) @ + - / * = % {b}", + "{t} b \u00e9 p o \u00e8 \u02c6 v d l j z w", + "a u i e , c t s r n m \u00E7 {enter}", + "{s} \u00ea \u00E0 y x . k \' q g h f {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'shift' : [ + "# 1 2 3 4 5 6 7 8 9 0 \u00b0 ` {b}", + "{t} B \u00c9 P O \u00c8 ! V D L J Z W", + "A U I E ; C T S R N M \u00c7 {enter}", + "{s} \u00ca \u00c0 Y X : K ? Q G H F {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt' : [ + "\u2013 \u2014 < > [ ] ^ \u00b1 \u2212 \u00f7 \u00d7 \u2260 \u2030 {b}", + "{t} | \u00b4 & \u0153 ` \u00a1 \u02c7 \u00f0 / \u0133 \u0259 \u02d8", + "\u00e6 \u00f9 \u00a8 \u20ac \u2019 \u00a9 \u00fe \u00df \u00ae ~ \u00af \u00b8 {enter}", + "{s} / \\ { } \u2026 ~ \u00bf \u00b0 \u00b5 \u2020 \u02db {s}", + "{a} {alt} {space} {alt} {c}" + ], + 'alt-shift' : [ + "\u00b6 \u201e \u201c \u201d \u2264 \u2265 {empty} \u00ac \u00bc \u00bd \u00be \u2032 \u2033 {b}", + "{t} \u00A6 \u02DD \u00A7 \u0152 ` \u00A1 {empty} \u00D0 {empty} \u0132 \u018F \u02d8", + "\u00c6 \u00d9 \u02d9 \u00a4 \u031b \u017f \u00de \u1e9e \u2122 {empty} \u00ba , {enter}", + "{s} {empty} {empty} \u2018 \u2019 \u00B7 {empty} \u0309 \u0323 {empty} \u2021 \u00AA {s}", + "{a} {alt} {space} {alt} {c}" + ] +}; + +/* German keyboard layouts + * contains layout: 'german-qwertz-1' & 'german-qwertz-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'german-qwertz-1' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* from http://ascii-table.com/keyboard.php/129 */ +jQuery.keyboard.layouts['german-qwertz-1'] = { + 'name' : 'german-qwertz-1', + 'lang' : ['de'], + 'normal' : [ + "\u0302 1 2 3 4 5 6 7 8 9 0 \u00df \u0301 {bksp}", + "{tab} q w e r t z u i o p \u00fc +", + "a s d f g h j k l \u00f6 \u00e4 # {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00b0 ! " \u00a7 $ % & / ( ) = ? \u0300 {bksp}', + "{tab} Q W E R T Z U I O P \u00dc *", + "A S D F G H J K L \u00d6 \u00c4 ' {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u0302 1 \u00b2 \u00b3 4 5 6 { [ ] } \\ \u0301 {bksp}', + "{tab} @ w \u20ac r t z u i o p \u00fc \u0303", + "a s d f g h j k l \u00f6 \u00e4 # {enter}", + "{shift} \u007c y x c v b n \u00b5 , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* from http://ascii-table.com/keyboard.php/150G-1 */ +jQuery.keyboard.layouts['german-qwertz-2'] = { + 'name' : 'german-qwertz-2', + 'lang' : ['de'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 ' \u0302 {bksp}", + "{tab} q w e r t z u i o p \u00fc \u0308", + "a s d f g h j k l \u00f6 \u00e4 $ {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00b0 + " * \u00e7 % & / ( ) = ? \u0300 {bksp}', + "{tab} Q W E R T Z U I O P \u00e8 !", + "A S D F G H J K L \u00e9 \u00e0 \u00a3 {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00a7 \u007c @ # 4 5 \u00ac \u00a6 \u00a2 9 0 \u0301 \u0303 {bksp}", + "{tab} q w \u20ac r t z u i o p [ ]", + "a s d f g h j k l \u00f6 { } {enter}", + "{shift} \\ y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hebrew keyboard layouts + * contains layout: 'hebrew-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'hebrew-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/212 */ +jQuery.keyboard.layouts['hebrew-qwerty'] = { + 'name' : 'hebrew-qwerty', + 'lang' : ['he'], + 'normal' : [ + '; 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} / ' \u05e7 \u05e8 \u05d0 \u05d8 \u05d5 \u05df \u05dd \u05e4 [ ] \\", + "\u05e9 \u05d3 \u05d2 \u05db \u05e2 \u05d9 \u05d7 \u05dc \u05da \u05e3 , {enter}", + "{shift} \u05d6 \u05e1 \u05d1 \u05d4 \u05e0 \u05de \u05e6 \u05ea \u05e5 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hindi keyboard layouts +* contains layout: 'hindi' +* +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'hindi' }); +* +* license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference +*/ + +jQuery.keyboard.layouts['hindi'] = { + 'name' : 'hindi', + 'lang' : ['hi'], + 'normal' : [ + '` \u090D \u0945 \u094D\u0930 \u0930\u094D \u091C\u094D\u091E \u0924\u094D\u0930 \u0915\u094D\u0937 \u0936\u094D\u0930 \u096F \u0966 - \u0943 {bksp}', + '{tab} \u094C \u0948 \u093E \u0940 \u0942 \u092C \u0939 \u0917 \u0926 \u091C \u0921 \u093C \u0949 \\', + '\u094B \u0947 \u094D \u093F \u0941 \u092A \u0930 \u0915 \u0924 \u091A \u091F {enter}', + '{shift} \u0902 \u092E \u0928 \u0935 \u0932 \u0938 , . \u092F {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift' : [ + '~ \u0967 \u0968 \u0969 \u096A \u096B \u096C \u096D \u096E \u096F \u0966 \u0903 \u090B {bksp}', + '{tab} \u0914 \u0910 \u0906 \u0908 \u090A \u092D \u0919 \u0918 \u0927 \u091D \u0922 \u091E \u0911', + '\u0913 \u090F \u0905 \u0907 \u0909 \u092B \u0931 \u0916 \u0925 \u091B \u0920 {enter}', + '{shift} "" \u0901 \u0923 \u0928 \u0935 \u0933 \u0936 \u0937 \u0964 \u095F {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* hungarian keyboard layouts + * file codepage: this file use utf8 without bom, non ansi + * contains layout: 'hungarian-qwertz-1' & 'hungarian-qwertz-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'hungarian-qwerty-2' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwertz by Tóth Gergely (https://github.com/tgely) - */ +jQuery.keyboard.layouts['hungarian-qwertz-1'] = { + 'name' : 'hungarian-qwertz-1', + 'lang' : ['hu'], + "default" : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 \u0171 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ' \" + ! % / = ( ) \u00d6 \u00dc \u00d3 \u0170 {bksp}", + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{sp:1} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 \u00a4 {bksp}", + "{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7", + "\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts['hungarian-qwertz-2'] = { + 'name' : 'hungarian-qwertz-2', + 'lang' : ['hu'], + "default" : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 \u0171 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ' \" + ! % / = ( ) \u00d6 \u00dc \u00d3 {bksp}", + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 \u0170 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{sp:1} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7", + "\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df \u00a4 {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* hungarian ansi keyboard layouts + * file codepage: ansi + * contains layout: 'hungariansi-qwertz-1' & 'hungariansi-qwertz-2' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'hungarianansi-qwerty-2' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwertz by Tóth Gergely (https://github.com/tgely) - helped :http://www.fileformat.info/info/unicode/char/search.htm */ +jQuery.keyboard.layouts['hungarianansi-qwertz-1'] = { + 'name' : 'hungarianansi-qwertz-1', + 'lang' : ['hu'], + 'normal' : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 \u0171 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00a7 \u0027 " + ! % / = ( ) \u00d6 \u00dc \u00d3 \u0170 {bksp}', + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '{sp:1} \u007e \u02c7 \u005e \u02d8 \u00b0 \u02db \u0060 \u02d9 \u00b4 \u02dd \u00a8 \u00b8 \u00a4 {bksp}', // most of non used + '{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7', + '\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df {enter}', + '{shift} < > # & @ { } < ; > * {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +jQuery.keyboard.layouts['hungarianansi-qwertz-2'] = { + 'name' : 'hungarianansi-qwertz-2', + 'lang' : ['hu'], + 'normal' : [ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00fa", + "a s d f g h j k l \u00e9 \u00e1 \u0171 {enter}", + "{shift} \u00ed y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00a7 \u0027 " + ! % / = ( ) \u00d6 \u00dc \u00d3 {bksp}', + "{tab} Q W E R T Z U I O P \u0150 \u00da", + "A S D F G H J K L \u00c9 \u00c1 \u0170 {enter}", + "{shift} \u00cd Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '{sp:1} \u007e \u02c7 \u005e \u02d8 \u00b0 \u02db \u0060 \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}', // most of non used + '{tab} \\ | \u00c4 {sp:1} {sp:1} {sp:1} \u20ac \u00cd {sp:1} {sp:1} \u00f7 \u00d7', + '\u00e4 \u0111 \u0110 [ ] {sp:1} \u00ed \u0142 \u0141 $ \u00df \u00a4 {enter}', + '{shift} < > # & @ { } < ; > * {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* Japanese (hiragana and katakana) keyboard layouts + * contains layouts for: 'japanese-kana' & 'japanese-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'japanese-kana' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + * + * Japanese layout by Paco Alcantara (https://github.com/pacoalcantara), based on: + * http://www.fileformat.info/info/unicode/char/search.htm + * http://www.tamasoft.co.jp/en/general-info/unicode.html + * http://ascii-table.com/keyboard.php/194 + * Preferably use 'japanese-kana' unless roma-ji characters are needed on input. + */ +jQuery.keyboard.layouts['japanese-kana'] = { + 'name' : 'japanese-kana', + 'lang' : ['ja'], + 'normal' : [ + '0 1 2 3 4 5 6 7 8 9', + '\u3042 \u3044 \u3046 \u3048 \u304a \u306f \u3072 \u3075 \u3078 \u307b', + '\u304b \u304d \u304f \u3051 \u3053 \u307e \u307f \u3080 \u3081 \u3082', + '\u3055 \u3057 \u3059 \u305b \u305d \u3084 \u3086 \u3088 {bksp}', + '\u305f \u3061 \u3064 \u3066 \u3068 \u3089 \u308a \u308b \u308c \u308d', + '\u306a \u306b \u306c \u306d \u306e \u308f \u3092 \u3093 \u3090 \u3091', + '\u3041 \u3043 \u3045 \u3047 \u3049 \u3099 \u309a \u0301 {shift}', + '\u3083 \u3085 \u3087 \u3063 \u0301 \u30fb \u30fc \u301c {alt}', + '{accept} {space} {cancel} {enter}' + ], + 'shift' : [ + '0 1 2 3 4 5 6 7 8 9', + '\u30a2 \u30a4 \u30a6 \u30a8 \u30aa \u30cf \u30d2 \u30d5 \u30d8 \u30db', + '\u30ab \u30ad \u30af \u30b1 \u30b3 \u30de \u30df \u30e0 \u30e1 \u30e2', + '\u30b5 \u30b7 \u30b9 \u30bb \u30bd \u30e4 \u30e6 \u30e8 {bksp}', + '\u30bf \u30c1 \u30c4 \u30c6 \u30c8 \u30e9 \u30ea \u30eb \u30ec \u30ed', + '\u30ca \u30cb \u30cc \u30cd \u30ce \u30ef \u30f2 \u30f3 \u30f0 \u30f1', + '\u30a1 \u30a3 \u30a5 \u30a7 \u30a9 \u3099 \u309a \u0301 {shift}', + '\u30e3 \u30e5 \u30e7 \u30c3 \u0301 \u30fb \u30fc \u301c {alt}', + '{accept} {space} {cancel} {enter}' + ], + 'alt' : [ + '0 1 2 3 4 5 6 7 8 9 - ^ \uffe5 {bksp}', + "{tab} q w e r t y u i o p \u0040 [", + "a s d f g h j k l ; : ] {enter}", + " {shift} z x c v b n m , . / \\ {shift}", + "{accept} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '0 1 2 3 4 5 6 7 8 9 - ^ \uffe5 {bksp}', + "{tab} Q W E R T Y U I O P \u0040 [", + "A S D F G H J K L ; : ] {enter}", + " {shift} Z X C V B N M , . / \\ {shift}", + "{accept} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts['japanese-qwerty'] = { + 'name' : 'japanese-qwerty', + 'lang' : ['ja'], + 'normal' : [ + "1 2 3 4 5 6 7 8 9 0 - ^ \u00a5 {bksp}", + "{tab} q w e r t y u i o p \u0040 [", + "a s d f g h j k l ; : ] {enter}", + "{shift} z x c v b n m , . / \\ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "! \" # $ % & \' ( ) \u0301 = ~ | {bksp}", + "{tab} Q W E R T Y U I O P \u0060 {", + "A S D F G H J K L + * } {enter}", + "{shift} Z X C V B N M < > ? _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u306c \u3075 \u3042 \u3046 \u3048 \u304a \u3084 \u3086 \u3088 \u308f \u307b \u3078 \uff70 {bksp}", + "{tab} \u305f \u3066 \u3044 \u3059 \u304b \u3093 \u306a \u306b \u3089 \u305b \uff9e \uff9f", + "\u3061 \u3068 \u3057 \u306f \u304d \u304f \u307e \u306e \u308a \u308c \u3051 \u3080 {enter}", + "{shift} \u3064 \u3055 \u305d \u3072 \u3053 \u307f \u3082 \u306d \u308b \u3081 \u308d {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u0301 \u0301 \u3041 \u3045 \u3047 \u3049 \u3083 \u3085 \u3087 \u3092 \u0301 \u0301 \u0301 {bksp}", + "{tab} \u0301 \u0301 \u3043 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \uff62", + "\u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \u30f6 \uff63 {enter}", + "{shift} \u3063 \u0301 \u0301 \u0301 \u0301 \u0301 \u0301 \uff64 \uff61 \uff65 \u00a6 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Latvian keyboard layouts + * contains layout: 'latvian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'latvian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ +jQuery.keyboard.layouts['latvian-qwerty'] = { + 'name' : 'latvian-qwerty', + 'lang' : ['lv'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u00B0", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00ac 1 \u00AB \u00BB \u20AC 5 \u2019 7 8 9 0 \u2013 = {bksp}", + "{tab} q w \u0113 \u0157 t y \u016B \u012B \u014D p [ ] \u00B0", + "\u0101 \u0161 d f \u0123 h j \u0137 \u013C ; \u00B4 {enter}", + "{shift} \u017E x \u010D v b \u0146 m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '~ 1 2 3 4 \u00A7 \u00AB 7 \u00B1 \u00D7 0 \u2014 = {bksp}', + "{tab} Q W \u0112 \u0156 T Y \u016A \u012A \u014C P { } |", + '\u0100 \u0160 D F \u0122 H J \u0136 \u013B : \u00A8 {enter}', + "{shift} \u017D X \u010C V B \u0145 M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Mongolian keyboard layouts +* contains layout: 'mongolian' +* +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'mongolian' }); +* +* license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference +*/ +jQuery.keyboard.layouts['mongolian'] = { + 'name' : 'mongolian', + 'lang' : ['mn'], + 'normal' : [ + '= \u2116 - " \u20AE : . _ , % ? \u0435 \u0449 {bksp}', + '{tab} \u0444 \u0446 \u0443 \u0436 \u044d \u043D \u0433 \u0448 \u04af \u0437 \u043A \u044A \\', + '\u0439 \u044B \u0431 \u04e9 \u0430 \u0445 \u0440 \u043e \u043B \u0434 \u043f {enter}', + '{shift} \u044F \u0447 \u0451 \u0441 \u043c \u0438 \u0442 \u044c \u0432 \u044e {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + + 'shift' : [ + '+ 1 2 3 4 5 6 7 8 9 0 \u0415 \u0429 {bksp}', + '{tab} \u0424 \u0426 \u0423 \u0416 \u042d \u041D \u0413 \u0428 \u04AE \u0417 \u041a \u042A |', + '\u0419 \u042B \u0411 \u04e8 \u0410 \u0425 \u0420 \u041e \u041b \u0414 \u041f {enter}', + '{shift} \u042F \u0427 \u0401 \u0421 \u041c \u0418 \u0422 \u042c \u0412 \u042e {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Persian (Farsi) keyboard layouts +* translate by Majid Ramezani -> majid.r830@gmail.com +* --------------------------------------------------------------------------------------------------------- +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'Persian' }); +* in select add - > "Persian (Farsi), persian, Persian", +* +* based on http://unicode-table.com/en/# +*/ + +jQuery.keyboard.layouts['Persian'] = { + 'name': 'Persian (Farsi)', + 'lang': ['fa'], + 'normal': [ + '~ \u06f1 \u06f2 \u06f3 \u06f4 \u06f5 \u06f6 \u06f7 \u06f8 \u06f9 \u06f0 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \u067e', + '{lock} \u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u06af {enter}', + '{shift} \u0638 \u0637 \u0632 \u0698 \u0631 \u0630 \u062f \u0678 \u0648 . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '\u00a9 \u0021 \u0040 \u0023 \u0024 \u0025 \u005e \u0026 \u002a \u0028 \u0029 \u005f \u002b {bksp}', + '{tab} \u064b \u064c \u064d \u00ae \u060c \u061b \u002c \u005d \u005b \u007d \u007b \u00d7 \u00b1', + '{lock} \u064e \u064f \u0650 \u0651 \u06c0 \u0622 \u0640 \u00ab \u00bb : " {enter}', + '{shift} \u0629 \u064a \u00b0 \u0624 \u0625 \u0623 \u0621 \u003c \u003e \u00a6 \u00f7 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} q w e r t y u i o p [ ] \\', + '{lock} a s d f g h j k l ; \' {enter}', + '{shift} z x c v b n m , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} Q W E R T Y U I O P { } |', + '{lock} A S D F G H J K L : " {enter}', + '{shift} Z X C V B N M < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* Polish keyboard layouts + * contains layout: 'polish-qwerty' + * Author: Piotr Roznicki + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'polish-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +jQuery.keyboard.layouts['polish-qwerty'] = { + 'name' : 'polish-qwerty', + 'lang' : ['pl'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u00B0", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w \u0119 r t y \u20ac i \u00f3 p [ ] \u00B0", + '\u0105 \u015b d f g h j k \u0142 : " {enter}', + "{shift} \u017c \u017a \u0107 v b \u0144 m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Portuguese (pt) keyboard layout + * contains layout: 'portuguese-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'portuguese-pt' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + + * Portuguese-pt layout by Luiz Castelo-Branco ( translations at Castelo-Branco . org ), based on: + * http://ascii-table.com/keyboard.php/163 and/with + * Unicode 6.2 from http://www.unicode.org/Public/6.2.0/charts/CodeCharts.pdf + +*/ + +// portuguese-pt +jQuery.keyboard.layouts['portuguese-qwerty'] = { + 'name' : 'portuguese-qwerty', + 'lang' : ['pt'], + 'normal' : [ + "\u005C 1 2 3 4 5 6 7 8 9 0 \u0027 \u00ab {bksp}", + "{tab} q w e r t y u i o p \u002b \u00b4", + "a s d f g h j k l \u00e7 \u00ba \u007e {enter}", + "{shift} \u003c z x c v b n m \u002c \u002e \u002d {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ], + 'shift' : [ + "\u007c \u0021 \u0022 \u0023 \u0024 \u0025 \u0026 \u002f \u0028 \u0029 \u003d \u003F \u00bb {bksp}", + "{tab} Q W E R T Y U I O P \u002a \u0060", + "A S D F G H J K L \u00c7 \u00aa \u005e {enter}", + "{shift} \u003e Z X C V B N M \u003b \u003a \u005f {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ], + // AltGr + 'alt' : [ + "\u005C 1 \u0040 \u00a3 \u00a7 \u20ac 6 \u007b \u005b \u005d \u007d \u0027 \u00ab {bksp}", + "{tab} q w \u20ac r t y u i o p \u0308 \u00b4", + "a s d f g h j k l \u00e7 \u00ba \u007e {enter}", + "{shift} \u003c z x c v b n m \u002c \u002e \u002d {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ], + 'alt-shift' : [ + "\u007c \u0021 \u0022 \u0023 \u0024 \u0025 \u0026 \u002f \u0028 \u0029 \u003d \u003F \u00bb {bksp}", + "{tab} Q W \u20ac R T Y U I O P \u0308 \u0060", + "A S D F G H J K L \u00c7 \u00aa \u005e {enter}", + "{shift} \u003e Z X C V B N M \u003b \u003a \u005f {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ] + +}; + +/* Romanian keyboard layouts + * contains layout: Romanian National Standard SR 13392:2004 + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'romanian' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://en.wikipedia.org/wiki/Romanian_keyboard_layout for the actual (standard) layout. +More details http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdrost.html and http://ascii-table.com/keyboard.php/446 (for the actual codes)*/ + +/* Submitted July 2014 - Alex Florea */ + +jQuery.keyboard.layouts['romanian'] = { + 'normal' : [ + "\u201e 1 2 3 4 5 6 7 8 9 0 \u002d \u003d {bksp}", + "{tab} q w e r t y u i o p \u0103 \u00ee \u00e2", + "a s d f g h j k l \u0219 \u021b {enter}", + "{shift} \u005c z x c v b n m \u002c \u002e \u002f {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u201d \u0021 \u0040 \u0023 \u0024 \u0025 \u005e \u0026 \u002a \u0028 \u0029 \u005f \u002b {bksp}", + "{tab} Q W E R T Y U I O P \u0102 \u00ce \u00c2", + "A S D F G H J K L \u0218 \u021a {enter}", + "{shift} \u007c Z X C V B N M \u003b \u003a ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0060 \u0303 \u030c \u0302 \u0306 \u030a \u0328 \u0300 \u0307 \u0301 \u030b \u0308 \u0327 {bksp}", + "{tab} a z \u20ac r t y u i o p \u007b \u007d \u005c", + "a \u00df \u0111 f g h j k \u0142 \u003b \u0027 {enter}", + "{shift} \u005c z x \u00a9 v b n m \u003c \u003e \u002f {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u007e 1 2 3 4 5 6 7 8 9 0 \u2013 \u00b1 {bksp}", + "{tab} q w e r t y u i o p \u007b \u007d \u007c", + "a s \u0110 f g h j k \u0141 \u003a \u0022 {enter}", + "{shift} \u005c z x c v b n m \u00ab \u00bb \u002f {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], +}; + +/* Russian keyboard layouts + * contains layout: 'russian-qwerty' & 'russian-mac' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'russian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* Thanks to Yury Kotlyarov (https://github.com/yura) */ +jQuery.keyboard.layouts['russian-qwerty'] = { + 'name' : 'Russian-qwerty', + 'lang' : ['ru'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '\u0401 ! " \u2116 ; \u20ac : ? * ( ) _ + {bksp}', + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts["russian-mac"] = { + 'name' : 'Russian-mac', + 'lang' : ['ru'], + "default": [ + "] 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \u0451", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift: [ + '[ ! " \u2116 % : , . ; ( ) _ + {bksp}', + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a \u0401", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt: [ + "] ! @ # $ % ^ & * ( ) \u2013 \u00bb {bksp}", + "{tab} \u0458 \u045f \u045c \u00ae \u2020 \u045a \u0453 \u0455 \u045e \u2018 \u201c \u044a \u0451", + "\u0192 \u044b \u045b \u00f7 \u00a9 } \u00b0 \u0459 \u2206 \u2026 \u044d {enter}", + "{shift} \u0452 \u2248 \u2260 \u00b5 \u0438 \u2122 ~ \u2264 \u2265 \u201c {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift": [ + "[ | \" \u00a3 \u20ac \u221e \u00ac \u00b6 \u221a ' ` \u2014 \u00ab {bksp}", + "{tab} \u0408 \u040f \u040c \u00ae \u2020 \u040a \u0403 \u0405 \u040e \u2019 \u201d \u042a \u0401 ", + "\u0192 \u042b \u040b \u00f7 \u00a9 { \u2022 \u0409 \u2206 \u2026 \u042d {enter}", + "{shift} \u0402 \u2248 \u2260 \u00b5 \u0418 \u2122 ~ < > \u201e {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian keyboard layouts + * contains layout: 'sr-Cyrl' & 'sr' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'russian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* Serbian Cyrillic Keyboard Layout (српски) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sr-Cyrl"] = { + 'name' : "Serbian Cyrillic (sr-Cyrl)", + 'lang' : ['sr'], + "default" : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + " \u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! " # $ % & / ( ) = ? * {bksp}', + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + " \u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + " \u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian Latin Keyboard Layout (Srpski) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts.sr = { + 'name' : "Serbian Latin (sr)", + 'lang' : ['sr'], + "default" : [ + "\u00b8 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + " a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift : [ + '\u00a8 ! " # $ % & / ( ) = ? * {bksp}', + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + " A S D F G H J K L \u010c \u0106 {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt : [ + "\u00b8 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + " a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian Cyrillic Keyboard Layout (српски) for Mac */ +jQuery.keyboard.layouts["sr-Cyrl-mac"] = { + 'name' : "Serbian Cyrillic for Mac (sr-Cyrl)", + 'lang' : ['sr'], + "default" : [ + "< 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + " \u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift : [ + '> ! " # $ % & / ( ) = ? * {bksp}', + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + " \u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt : [ + "` \u2020 \u00b0 \u20ac \u201e \u2122 \u221e \u00a3 \u0490 \u00b6 \u2022 \u2013 = {bksp}", + "{tab} q w e r t y u i o p [ ] \u2018", + ' a s d f g h j k l ; " {enter}', + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # \u201c % ^ & * ( ) \u2014 + {bksp}", + "{tab} Q W E R T Y U I O P { } \u2019", + " A S D F G H J K L : \u201d {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian Latin Keyboard Layout (Srpski) for Mac */ +jQuery.keyboard.layouts["sr-mac"] = { + 'name' : "Serbian Latin for Mac (sr)", + 'lang' : ['sr'], + "default" : [ + "< 1 2 3 4 5 6 7 8 9 0 / + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + " a s d f g h j k l \u010d \u0107 {enter}", + "{shift} y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift : [ + "> ! \" # $ % & ' ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + " A S D F G H J K L \u010c \u0106 {enter}", + "{shift} Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt : [ + "` \u00a1 \u2122 \u00a3 \u00a2 \u221e \u00a7 \u00b6 \u2022 \u00aa \u00ba - \u2260 {bksp}", + "{tab} \u0153 \u2211 \u00b4 \u00ae \u2020 \u2014 \u00a8 ^ \u00f8 \u03c0 [ ] ", + "\u00e5 \u00df \u2202 \u0192 \u00a9 \u030f \u2206 \u0311 \u00ac \u2026 ^ {enter}", + "{shift} \u03a9 \u2248 \u00e7 \u221a \u222b ~ \u00b5 \u2264 \u2265 \u00f7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u2044 @ \u2039 \u203a \u20ac \u0131 \u2013 \u00b0 \u00b7 \u201a _ \u00b1 {bksp}", + "{tab} \u0152 \u201e \u2030 \u201c \u2018 \u201d \u2019 \u00c9 \u00d8 \u220f { } |", + "\u00c5 \u00cd \u00ce \u00cf \u00cc \u00d3 \u00d4 \uf8ff \u00d2 \u00e6 \u00c6 {enter}", + "{shift} \u00ab \u00bb \u00c7 \u25ca \u00d1 \u02c6 \u00af \u00c8 \u02c7 \u00bf {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Spanish keyboard layouts + * contains layouts: 'spanish-qwerty' and 'spanish-qwerty-sp' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'spanish-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + * + * Spanish layouts by Paco Alcantara (https://github.com/pacoalcantara) + * Based on: http://ascii-table.com/keyboard.php/171 and http://ascii-table.com/keyboard.php/071-2 + */ +jQuery.keyboard.layouts['spanish-qwerty'] = { + 'name' : 'spanish-qwerty', + 'lang' : ['es'], + 'normal' : [ + "\u007c 1 2 3 4 5 6 7 8 9 0 \' \u00bf {bksp}", + "{tab} q w e r t y u i o p \u0301 +", + "a s d f g h j k l \u00f1 \u007b \u007d {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u00b0 ! \" # $ % & / ( ) = ? \u00a1 {bksp}", + "{tab} Q W E R T Y U I O P \u0308 *", + "A S D F G H J K L \u00d1 \u005b \u005d {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00ac 1 2 3 4 5 6 7 8 9 0 \\ \u00bf {bksp}", + "{tab} @ w e r t y u i o p \u0301 \u0303", + "a s d f g h j k l \u00f1 \u0302 \u0300 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u00b0 ! \" # $ % & / ( ) = ? \u00a1 {bksp}", + "{tab} Q W E R T Y U I O P \u0308 *", + "A S D F G H J K L \u00d1 \u005b \u005d {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts['spanish-qwerty-sp'] = { + 'name' : 'spanish-qwerty-sp', + 'lang' : ['es'], + 'normal' : [ + "\u00ba 1 2 3 4 5 6 7 8 9 0 \' \u00a1 {bksp}", + "{tab} q w e r t y u i o p \u0300 +", + "a s d f g h j k l \u00f1 \u0301 \u00e7 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u00aa ! \" \u00b7 $ % & / ( ) = ? \u00bf {bksp}", + "{tab} Q W E R T Y U I O P \u005e *", + "A S D F G H J K L \u00d1 \u0308 \u00c7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\\ \u007c @ # 4 5 \u00ac 7 8 9 0 \u0027 \u00a1 {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l \u00f1 { } {enter}", + "{shift} \u007c z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u00aa ! \" \u00b7 $ % & / ( ) = ? \u00bf {bksp}", + "{tab} Q W E R T Y U I O P [ ]", + "A S D F G H J K L \u00d1 { } {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Swedish keyboard layouts + * contains layout: 'swedish-qwerty' & 'swedish-dvorak' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'swedish-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwerty by Mika Perreri Korhonen (https://github.com/jouk0) - */ +jQuery.keyboard.layouts['swedish-qwerty'] = { + 'name' : 'swedish-qwerty', + 'lang' : ['sv'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u0301 {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u0308", + "a s d f g h j k l \u00f6 \u00e4 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00bd ! " # \u00a4 % & / ( ) = ? \u0300 {bksp}', + "{tab} Q W E R T Y U I O P \u00c5 \u0302", + "A S D F G H J K L \u00d6 \u00c4 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u00a7 1 @ \u00a3 $ 5 6 { [ ] } \\ \u0301 {bksp}', + '{tab} q w € r t y u i o p \u00e5 \u0303', + "a s d f g h j k l \u00f6 \u00e4 ' {enter}", + '{shift} | z x c v b n \u00b5 , . - {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* dvorak - from http://www.ludd.luth.se/~torger/se_dvorak.html */ +jQuery.keyboard.layouts['swedish-dvorak'] = { + 'name' : 'swedish-qwerty', + 'lang' : ['sv'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u0301 {bksp}", + "{tab} \u00f6 \u00e5 \u00e4 p y f g c r l q \u00a8", + "a o e u i d h t n s - < {enter}", + "{shift} ' , . j k x b m w v z {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00bd ! " # \u00a4 % & / ( ) = ? ` {bksp}', + "{tab} \u00d6 \u00c5 \u00c4 P Y F G C R L Q ^", + "A O E U I D H T N S _ > {enter}", + "{shift} * ; : J K X B M W V Z {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00a7 1 @ \u00a3 $ 5 6 { [ ] } \\ \u00b4 {bksp}", + "{tab} \u00f6 \u00e5 \u00e4 p y f g c r l q ~", + "a o e u i d h t n s - | {enter}", + "{shift} ' , . j k x b m w v z {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Tamil keyboard layouts + * contains layout: 'tamil-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'tamil-tamil99-mod' }); + * + * Copyright 2013, Muthiah Annamalai + * + * Author : Muthiah Annamalai + * + * This file derives from general keyboard jQuery plugin. + * You may reuse this file under MIT License + * + * Acknowledgements : Thamiza project contributors Mugunth, Sethu have reference implementations of + * of the keyboard + */ + +/* based on Tamil99 keyboard layout - modified Tamil 99 keyboard */ +jQuery.keyboard.layouts['tamil-tamil99-mod'] = { + 'name' : 'tamil-tamil99-mod', + 'lang' : ['ta'], + 'normal' : [ + /* ா ி ீ ு ூ ெ ே ை ொ ோ ௌ ஃ */ + "\u0BBE \u0BBF \u0BC0 \u0BC1 \u0BC2 \u0BC6 \u0BC7 \u0BC8 \u0BCA \u0BCB \u0BCC \u0B83 {bksp}", + /* ஆ ஈ ஊ ஐ ஏ ள ற ன ட ண ச ஞ \ */ + "{tab} \u0b86 \u0b88 \u0b8a \u0b90 \u0b8f \u0bb3 \u0bb1 \u0ba9 \u0b9f \u0ba3 \u0b9a \u0b9e ", + /* அ இ உ ் எ க ப ம த ந ய */ + "\u0b85 \u0b87 \u0b89 \u0bcd \u0b8e \u0b95 \u0baa \u0bae \u0ba4 \u0ba8 \u0baf {enter}", + /* ஔ ஒ ஓ வ ங ல ர , . ழ */ + "{shift} \u0b94 \u0b93 \u0b92 \u0bb5 \u0b99 \u0bb2 \u0bb0 , . \u0bb4 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + /* numeric key row */ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + /* sanskrit row */ + /* ஸ ஷ ஜ ஹ ஶ்ரீ க்ஷ */ + "{tab} \u0bb8 \u0bb7 \u0b9c \u0bb9 \u0bb6\u0bcd\u0bb0\u0bc0 \u0b95\u0bcd\u0bb7 \u0020 [ ] { } ", + /* ௹ ௺ ௸ ஃ \u0020 \u0020 \u0020 \" : ; \' {enter} */ + "\u0bf9 \u0bfa \u0bf8 \u0b83 \u0020 \u0020 \u0020 \" : ; \' {enter}", + /* ௳ ௴ ௵ ௶ ௷ */ + "{shift} \u0bf3 \u0bf4 \u0bf5 \u0bf6 \u0bf7 \u0020 / \u0020 \u0020 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0060 1 2 3 4 5 6 7 8 9 0 - \u003D {bksp}", + "{tab} q w e r t y u i o p \u005B \u005D \u005C", + "a s d f g h j k l ; \u0027 {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u007E | @ # $ % \u00ac & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ! \u00a6 \u00a2", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M { } ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Thai keyboard layouts + * contains layout: 'thai-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'thai-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/190 */ +jQuery.keyboard.layouts['thai-qwerty'] = { + 'name' : 'thai-qwerty', + 'lang' : ['th'], + 'normal' : [ + "\u005F \u0E45 \u002F \u002D \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E05 \u0E08 \u0E02 \u0E0A {bksp}", + "{tab} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03 ", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{shift} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {bksp}", + "{tab} \u0E50 \u0022 \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 \u002C \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B \u002E {enter}", + "{shift} ( ) \u0E09 \u0E2E \u0E3A \u0E4C \u003F \u0E12 \u0E2C \u0E26 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0060 1 2 3 4 5 6 7 8 9 0 - \u003D {bksp}", + "{tab} q w e r t y u i o p \u005B \u005D \u005C", + "a s d f g h j k l ; \u0027 {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u007E | @ # $ % \u00ac & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ! \u00a6 \u00a2", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M { } ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Turkish keyboard layouts + * contains layout: 'turkish-q' & 'turkish-f' + * + * Contributor Baris Aydinoglu + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'turkish-q' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* from http://ascii-table.com/keyboard.php/179 */ +jQuery.keyboard.layouts['turkish-q'] = { + 'name' : 'turkish-q', + 'lang' : ['tr'], + 'normal' : [ + "\u0022 1 2 3 4 5 6 7 8 9 0 \u002a \u002d {bksp}", + "{tab} q w e r t y u \u0131 o p \u011f \u00fc", + "{lock} a s d f g h j k l \u015f \u0069 , {enter}", + "{shift} < z x c v b n m \u00f6 \u00e7 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00e9 ! \u0027 \u0302 + % & / ( ) = ? \u005f {bksp}', + "{tab} Q W E R T Y U \u0049 O P \u011e \u00DC", + "{lock} A S D F G H J K L \u015e \u0130 ; {enter}", + "{shift} > Z X C V B N M \u00d6 \u00c7 : {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0022 1 \u00a3 # $ \u00bd 6 { [ ] } \u005c \u002d {bksp}", + "{tab} @ w \u20ac r t y u \u0131 o p \u0308 \u0303", + "{lock} a s d f g h j k l \u0301 \u0069 \u0300 {enter}", + "{shift} | z x c v b n m \u00f6 \u00e7 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* from http://ascii-table.com/keyboard.php/440 */ +jQuery.keyboard.layouts['turkish-f'] = { + 'name' : 'turkish-f', + 'lang' : ['tr'], + 'normal' : [ + "\u002B \u0031 \u0032 \u0033 \u0034 \u0035 \u0036 \u0037 \u0038 \u0039 \u0030 \u002F \u002D {bksp}", + "{tab} \u0066 \u0067 \u011F \u0131 \u006F \u0064 \u0072 \u006E \u0068 \u0070 \u0071 \u0077", + "{lock} \u0075 \u0069 \u0065 \u0061 \u00FC \u0074 \u006B \u006D \u006C \u0079 \u015F \u0078 {enter}", + "{shift} \u003C \u006A \u00F6 \u0076 \u0063 \u00E7 \u007A \u0073 \u0062 \u002E \u002C {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u002A \u0021 \u0022 \u0302 \u0024 \u0025 \u0026 \u0027 \u0028 \u0029 \u003D \u003F \u005F {bksp}", + "{tab} \u0046 \u0047 \u011E \u0049 \u004F \u0044 \u0052 \u004E \u0048 \u0050 \u0051 \u0057", + "{lock} \u0055 \u0130 \u0045 \u0041 \u00DC \u0054 \u004B \u004D \u004C \u0059 \u015E \u0058 {enter}", + "{shift} \u003E \u004A \u00D6 \u0056 \u0043 \u00C7 \u005A \u0053 \u0042 \u003A \u003B {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00AC \u00B9 \u00B2 \u0023 \u00BC \u00BD \u00BE \u007B \u005B \u005D \u007D \u005C \u002D {bksp}", + "{tab} \u0040 \u0067 \u011F \u0131 \u006F \u00A5 \u0072 \u006E \u0068 \u00A3 \u0308 \u0303", + "{lock} \u0075 \u00DF \u20AC \u0061 \u00FC \u0074 \u006B \u006D \u006C \u0301 \u015F \u0300 {enter}", + "{shift} \u007C \u00AB \u00BB \u0076 \u0063 \u00E7 \u007A \u0073 \u00D7 \u00F7 \u002C {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Vietnamese keyboard layouts + Telex key combinations (see https://github.com/Mottie/Keyboard/pull/136) + * contains layout: 'vietnamese-qwerty' + * Vinh Can Code: tbvinh@gmail.com + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'vietnamese-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/461 */ +jQuery.keyboard.layouts['vietnamese-qwerty'] = { + 'name' : 'vietnamese-qwerty', + 'lang' : ['vi'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m < > , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : ' {enter}", + "{shift} Z X C V B N M < > ; : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '{empty} \u0103 \u00e2 \u00ea \u00f4 {empty} \u031b {empty} {empty} {empty} \u0111 \u002d \u20ab {bksp}', + "{tab} {empty} {empty} {empty} {empty} {empty} \u00ff {empty} {empty} \u0153 {empty} \u01b0 \u01a1 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } \u0302 {enter}", + "{shift} {empty} {empty} \u00e7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '{empty} \u0102 \u00c2 \u00ca \u00d4 {empty} {empty} {empty} {empty} {empty} \u0110 \u005f + {bksp}', + "{tab} {empty} {empty} {empty} {empty} {empty} \u0178 {empty} {empty} \u0152 {empty} \u01af \u01a0 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } \u0308 {enter}", + "{shift} {empty} {empty} \u00c7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +// Keyboard Language +// Ethiopic kezboard to support Amahric and Gǝʿǝz made by Pietro Liuzzo and Solomon Gebreyes Beyene. +// *********************** +jQuery.keyboard.language.amh = { + language: 'ፊደል (Fidal) Amharic and Gǝʿǝz', + display: { + 'a': '\u2714:መቀበል (Shift+Enter)', // check mark - same action as accept + 'accept': 'Accept:መቀበል (Shift+Enter)', + 'alt': 'AltGr:ተለዋጭ፡ ፊደል፡', + 'b': '\u2190:ማጥፊያ', // Left arrow (same as ←) + 'bksp': 'Bksp:ማጥፊያ', + 'c': '\u2716:መሠረዝ', // big X, close - same action as cancel + 'cancel': 'Cancel:መሠረዝ', + 'clear': 'C:ማፅዳት', // clear num pad + 'combo': '\u00f6:Toggle Combo Keys', + 'dec': '.:የአሀዝ፡ ቁጥር', // decimal point for num pad (optional), change '.' to ',' for European format + 'e': '\u21b5:መጀመር', // down, then left arrow - enter symbol + 'enter': 'Enter:መጀመር', + 'lock': '\u21ea Lock:አሮጌ፡ ለውጥ', // caps lock + 's': '\u21e7:መለወጥ', // thick hollow up arrow + 'shift': 'Shift:መለወጥ', + 'sign': '\u00b1:የሒሣብ፡ ምልክት፡ መቀየር', // +/- sign for num pad + 'space': ' :ክፍት፡ቦታ', + 't': '\u21e5:መግፊያ', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab': '\u21e5 Tab:መግፊያ' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage: 'Use mousewheel to see other keys', + + comboRegex: /([`\'~\^\"a-z0-9\{\}\[\]\|<>])([a-z0-9_\-\.\|`\'~\^\"!,=])/mig, + combos: { + a: { + a: '\u02be', '.': '\u1ea1', 1: "\u00e0", 2: "\u00e1", 3: "\u00e3", '=': "\u00e2", 9: "\u00e4", '-': "\u0101", ',': '\u1360' + }, + A: { + A: '\u02bf', '-': "\u0100", 1: "\u00c0", 2: "\u00c1", 3: "\u00c3", 9: "\u00c4", '=': "\u00c2" + }, + e: { + e: '\u01dd', '-': "\u0113", ',': '\u1367', 1: "\u00e8", 2: "\u00e9", 3: "\u1ebd", 9: "\u00eb", '=': "\u00ea" + }, + E: { + E: '\u018e', '-': "\u0112", 1: "\u00c8", 2: "\u00c9", 3: "\u1ebc", 9: "\u00cb", '=': "\u00ca" + }, + i: { + 1: "\u00ec", 2: "\u00ed", 3: "\u0129", 9: "\u00ef", 9: "\u00f6", '=': "\u00ee" + }, + I: { + 1: "\u00cc", 2: "\u00cd", 3: "\u0128", 9: "\u00cf", '=': "\u00ce" + }, + o: { + 1: "\u00f2", 2: "\u00f3", 3: "\u00f5", '=': "\u00f4" + }, + O: { + 1: "\u00d2", 2: "\u00d3", 3: "\u00d5", 9: "\u00d6", '=': "\u00d4" + }, + u: { + 1: "\u00f9", 2: "\u00fa", 3: "\u0169", 9: "\u00fc", '=': "\u00fb" + }, + U: { + 1: "\u00d9", 2: "\u00da", 3: "\u0168", 9: "\u00dc", '=': "\u00db" + }, + 'h': { + a: "\u1200", u: "\u1201", i: "\u1202", A: "\u1203", E: "\u1204", e: "\u1205", o: "\u1206", '!': '\u1207', '_': '\u1e2b', '.': '\u1e25' + }, + "l": { + a: "\u1208", u: "\u1209", i: "\u120a", A: "\u120b", E: "\u120c", e: "\u120d", o: "\u120e", '!': '\u120F' + }, + "H": { + a: "\u1210", u: "\u1211", i: "\u1212", A: "\u1213", E: "\u1214", e: "\u1215", o: "\u1216", '!': '\u1217', '_': '\u1e2a' + }, + "m": { + a: "\u1218", u: "\u1219", i: "\u121a", A: "\u121b", E: "\u121c", e: "\u121d", o: "\u121e", '!': '\u121F' + }, + "S": { + a: "\u1220", u: "\u1221", i: "\u1222", A: "\u1223", E: "\u1224", e: "\u1225", o: "\u1226", '!': '\u1227', '.': '\u1e62', '|': '\u0160', 6: "\u015A" + }, + "r": { + a: "\u1228", u: "\u1229", i: "\u122a", A: "\u122b", E: "\u122c", e: "\u122d", o: "\u122e", '!': '\u122F' + }, + "s": { + a: "\u1230", u: "\u1231", i: "\u1232", A: "\u1233", E: "\u1234", e: "\u1235", o: "\u1236", '!': '\u1237', '.': '\u1e63', '|': '\u0161', 6: "\u015b" + }, + "v": { + a: "\u1238", u: "\u1239", i: "\u123a", A: "\u123b", E: "\u123c", e: "\u123d", o: "\u123e", '!': '\u123F' + }, + "q": { + a: "\u1240", u: "\u1241", i: "\u1242", A: "\u1243", E: "\u1244", e: "\u1245", o: "\u1246", '!': '\u1247' + }, + "b": { + a: "\u1260", u: "\u1261", i: "\u1262", A: "\u1263", E: "\u1264", e: "\u1265", o: "\u1266", '!': '\u1267', ',': '\u1363' + }, + "B": { + a: "\u1268", u: "\u1269", i: "\u126A", A: "\u126B", E: "\u126C", e: "\u126D", o: "\u126E", '!': '\u126F' + }, + "t": { + a: "\u1270", u: "\u1271", i: "\u1272", A: "\u1273", E: "\u1274", e: "\u1275", o: "\u1276", '!': '\u1277', '.': '\u1e6d' + }, + "c": { + a: "\u1278", u: "\u1279", i: "\u127a", A: "\u127b", E: "\u127c", e: "\u127d", o: "\u127e", '!': '\u127F', '_': '\u010d\u0323', '|': '\u010d', ',': '\u1364' + }, + "x": { + a: "\u1280", u: "\u1281", i: "\u1282", A: "\u1283", E: "\u1284", e: "\u1285", o: "\u1286", '!': '\u1287' + }, + "n": { + a: "\u1290", u: "\u1291", i: "\u1292", A: "\u1293", E: "\u1294", e: "\u1295", o: "\u1296", '!': '\u1297', 3: "\u00f1" + }, + "N": { + a: "\u1298", u: "\u1299", i: "\u129a", A: "\u129b", E: "\u129c", e: "\u129d", o: "\u129e", '!': '\u129F', 3: "\u00d1" + }, + "'": { + a: "\u12a0", u: "\u12a1", i: "\u12a2", A: "\u12a3", E: "\u12a4", e: "\u12a5", o: "\u12a6", '!': '\u12A7' + }, + "k": { + a: "\u12a8", u: "\u12a9", i: "\u12aa", A: "\u12ab", E: "\u12ac", e: "\u12ad", o: "\u12ae", '!': '\u12AF' + }, + "K": { + a: "\u12b8", u: "\u12b9", i: "\u12ba", A: "\u12bb", E: "\u12bc", e: "\u12bd", o: "\u12be" + }, + "w": { + a: "\u12c8", u: "\u12c9", i: "\u12ca", A: "\u12cb", E: "\u12cc", e: "\u12cd", o: "\u12ce", '!': '\u12CF', '=': "\u02b7" + }, + "W": { + a: "\u12d0", u: "\u12d1", i: "\u12d2", A: "\u12d3", E: "\u12d4", e: "\u12d5", o: "\u12d6" + }, + "z": { + a: "\u12d8", u: "\u12d9", i: "\u12da", A: "\u12db", E: "\u12dc", e: "\u12dd", o: "\u12de", '!': '\u12DF', '|': '\u017e' + }, + "Z": { + a: "\u12e0", u: "\u12e1", i: "\u12e2", A: "\u12e3", E: "\u12e4", e: "\u12e5", o: "\u12e6", '!': '\u12E7', '|': '\u017d' + }, + "y": { + a: "\u12e8", u: "\u12e9", i: "\u12ea", A: "\u12eb", E: "\u12ec", e: "\u12ed", o: "\u12ee", '!': '\u12EF', 1: "\u1ef3", 2: "\u00fd", 3: "\u1ef9", 9: "\u00ff", '=': "\u0177" + }, + "d": { + a: "\u12f0", u: "\u12f1", i: "\u12f2", A: "\u12f3", E: "\u12f4", e: "\u12f5", o: "\u12f6", '!': '\u12F7', '.': '\u1e0d', ',': '\u1366' + }, + "L": { + a: "\u12F8", u: "\u12F9", i: "\u12FA", A: "\u12FB", E: "\u12FC", e: "\u12FD", o: "\u12FE", '!': '\u12FF' + }, + "D": { + a: "\u1300", u: "\u1301", i: "\u1302", A: "\u1303", E: "\u1304", e: "\u1305", o: "\u1306", '!': '\u1307', '.': '\u1e0c' + }, + "g": { + a: "\u1308", u: "\u1309", i: "\u130a", A: "\u130b", E: "\u130c", e: "\u130d", o: "\u130e", '!': '\u130F', '|': '\u01e7' + }, + "G": { + a: "\u1318", u: "\u1319", i: "\u131a", A: "\u131b", E: "\u131c", e: "\u131d", o: "\u131e", '!': '\u131F', '|': '\u01e6' + }, + "T": { + a: "\u1320", u: "\u1321", i: "\u1322", A: "\u1323", E: "\u1324", e: "\u1325", o: "\u1326", '!': '\u1327', '.': '\u1e6c' + }, + "C": { + a: "\u1328", u: "\u1329", i: "\u132a", A: "\u132b", E: "\u132c", e: "\u132d", o: "\u132e", '!': '\u132F' + }, + "p": { + a: "\u1330", u: "\u1331", i: "\u1332", A: "\u1333", E: "\u1334", e: "\u1335", o: "\u1336", '!': '\u1337', 6: "\u1e57" + }, + "j": { + a: "\u1338", u: "\u1339", i: "\u133a", A: "\u133b", E: "\u133c", e: "\u133d", o: "\u133e", '!': '\u133F' + }, + "J": { + a: "\u1340", u: "\u1341", i: "\u1342", A: "\u1343", E: "\u1344", e: "\u1345", o: "\u1346", '!': '\u1347' + }, + "f": { + a: "\u1348", u: "\u1349", i: "\u134a", A: "\u134b", E: "\u134c", e: "\u134d", o: "\u134e", '!': '\u134F', ',': '\u1368' + }, + "P": { + a: "\u1350", u: "\u1351", i: "\u1352", A: "\u1353", E: "\u1354", e: "\u1355", o: "\u1356", '!': '\u1357', 6: "\u1E56" + }, + "Q": { + a: "\u1250", u: "\u1251", i: "\u1252", A: "\u1253", E: "\u1254", e: "\u1255", o: "\u1256" + }, + "[": { + a: "\u1248", i: "\u124a", A: "\u124b", E: "\u124c", e: "\u124d" + }, + "]": { + a: "\u1288", i: "\u128a", A: "\u128b", E: "\u128c", e: "\u128d" + }, + "}": { + a: "\u12b0", i: "\u12b2", A: "\u12b3", E: "\u12b4", e: "\u12b5" + }, + "{": { + a: "\u1310", i: "\u1312", A: "\u1313", E: "\u1314", e: "\u1315" + }, + "M": { + a: "\u1380", i: "\u1381", E: "\u1382", e: "\u1383" + }, + "|": { + a: "\u1384", i: "\u1385", E: "\u1386", e: "\u1387" + }, + "<": { + a: "\u1388", i: "\u1389", E: "\u138A", e: "\u138B" + }, + ">": { + a: "\u138C", i: "\u138D", E: "\u138E", e: "\u138F" + }, + 'Y': { + 1: "\u1ef2", 2: "\u00dd", 3: "\u1ef8", 9: "\u0178", '=': "\u0176" + } + }, + // language direction + rtl: false +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// de = ISO 639-1 code for German +// *********************** +jQuery.keyboard.language.de = { + language: 'Deutsch (German)', + display : { + 'a' : '\u2714:\u00dcbernehmen (Umschalt+Enter)', // check mark - same action as accept + 'accept' : '\u00dcbernehmen:\u00dcbernehmen (Umschalt+Enter)', + 'alt' : 'AltGr:Alt Graph', + 'b' : '\u2190:R\u00fccktaste', // Left arrow (same as ←) + 'bksp' : 'R\u00fcck:R\u00fccktaste', + 'c' : '\u2716:Abbrechen (Esc)', // big X, close - same action as cancel + 'cancel' : 'Abbrechen:Abbrechen (Esc)', + 'clear' : 'C:L\u00f6schen', // clear num pad + 'combo' : '\u00f6:Tottasten umschalten', + 'dec' : ',:Dezimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Eingabe', // down, then left arrow - enter symbol + 'enter' : 'Enter:Eingabe', + 'lock' : '\u21E9:Feststelltaste', // caps lock + 's' : '\u21e7:Umschalttaste', // thick hollow up arrow + 'shift' : 'Umschalt:Umschalttaste', + 'sign' : '\u00b1:Vorzeichen wechseln', // +/- sign for num pad + 'space' : ' :Leertaste', + 't' : '\u21e5:Tabulatortaste', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tabulatortaste' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Mausrad benutzen, um weitere Tasten zu sehen', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// es = ISO 639-1 code for Spanish +// *********************** +jQuery.keyboard.language.es = { + language: 'Espa\u00f1ol (Spanish)', + display : { + 'a' : '\u2714:Acceptar (Cambio+Inscribir)', // check mark - same action as accept + 'accept' : 'Acceptar:Acceptar (Cambio+Inscribir)', + 'alt' : 'AltGr:Grafemas Alternativos', + 'b' : '\u2190:Retroceso', // Left arrow (same as ←) + 'bksp' : 'Bksp:Retroceso', + 'c' : '\u2716:Cancelar (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancelar:Cancelar (Esc)', + 'clear' : 'C:Vaciar', // clear num pad + 'combo' : '\u00f6:Alternar las Teclas Combinados', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Inscribir', // down, then left arrow - enter symbol + 'enter' : 'Inscribir:Inscribir', + 'lock' : '\u21ea Bloq:Mayús', // caps lock + 's' : '\u21e7:Cambio', // thick hollow up arrow + 'shift' : 'Cambio:Cambio', + 'sign' : '\u00b1:Cambiar Signo', // +/- sign for num pad + 'space' : ' :Espacio', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + wheelMessage : 'Utilice la rueda del mouse para ver otras teclas' +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// fa = ISO 639-1 code for Farsi +// *********************** +jQuery.keyboard.language.fa = { + language: '\u0641\u0627\u0631\u0633\u06cc (Farsi)', + display: { + 'a' : '\u2714:\u062a\u0623\u06cc\u06cc\u062f (Shift+Enter)', + 'accept' : '\u062a\u0623\u06cc\u06cc\u062f:\u062a\u0623\u06cc\u06cc\u062f (Shift+Enter)', + 'alt' : 'Lng:Alternate Graphemes', + 'b' : '\u2190:\u2b05 Backspace', + 'bksp' : '\u2b05 Bksp:\u2b05 Backspace', + 'c' : '\u2716:\u0627\u0646\u0635\u0631\u0627\u0641 (Esc)', + 'cancel' : '\u0627\u0646\u0635\u0631\u0627\u0641:\u0627\u0646\u0635\u0631\u0627\u0641 (Esc)', + 'clear' : 'C:Clear', + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', + 'e' : '\u21b5:Enter', + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', + 's' : '\u21e7:Shift', + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', + 'space' : ' :Space', + 't' : '\u21e5:Tab', + 'tab' : '\u21e5 Tab:Tab' + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage: 'Use mousewheel to see other keys', + rtl: true + + // uncomment, then include changes to the comboRegex here + //, comboRegex: /([`\'~\^\"ao])([a-z])/mig, + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + } + */ +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// fr = ISO 639-1 code for French +// *********************** +jQuery.keyboard.language.fr = { + language: 'Fran\u00e7ais (French)', + display : { + 'a' : '\u2714:Valider (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Valider:Valider (Shift+Enter)', + 'alt' : 'AltGr:Charact\u00e8re alternatif', + 'b' : '\u2190:Suppr arri\u00e8re', // Left arrow (same as ←) + 'bksp' : '\u2190Suppr:Suppr arri\u00e8re', + 'c' : '\u2716:Annuler', // big X, close - same action as cancel + 'cancel' : 'Annuler:Annuler (\u00c9chap)', + 'clear' : 'C:Effacer', // clear num pad + 'combo' : '\u00f6:Bacsuler les touches combo', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Entr\u00e9e', // down, then left arrow - enter symbol + 'enter' : 'Entr\u00e9e:Entr\u00e9e', + 'lock' : '\u21ea Verr Mag:Verouillage majuscule', // caps lock + 's' : '\u21e7:Majuscule', // thick hollow up arrow + 'shift' : 'Maj:Majuscule', + 'sign' : '\u00b1:Change de signe', // +/- sign for num pad + 'space' : ' :Espace', + 't' : '\u21e5:Tabulation', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tabulation' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Utiliser la molette de la souris pour voir les autres lettres', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// he = ISO 639-1 code for Hebrew +// *********************** +jQuery.keyboard.language.he = { + language: '\u05e2\u05d1\u05e8\u05d9\u05ea (Hebrew)', + display : { + 'a' : '\u2714:אישור (Shift+Enter)', // check mark - same action as accept + 'accept' : 'אישור:אישור (Shift+Enter)', + 'alt' : 'Alt:תווים נוספים', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:ביטול (Esc)', // big X, close - same action as cancel + 'cancel' : 'ביטול:ביטול (Esc)', + 'clear' : 'C:ניקוי', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:נקודה עשרונית', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:שינוי סימן', // +/- sign for num pad + 'space' : ' :רווח', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'ניתן להשתמש בגלגלת העכבר כדי לראות מקשים נוספים', + // language direction + rtl : true +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// hu = ISO 639-1 code for Hungarian +// *********************** +jQuery.keyboard.language.hu = { + language: 'Magyar (Hungarian)', + display : { + 'a' : '\u2714:Rendben (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Rendben:Rendben (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'T\u00f6r\u00f6l:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'M\u00e9gsem:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Haszn\u00e1ld az eg\u00e9r g\u00f6rget\u0151t a t\u00f6bbi billenty\u0171 \u00e1tv\u00e1lt\u00e1shoz', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// "all" is used here for example purposes, by convention it should be the ISO 639-1 code for the specified language +// *********************** +jQuery.keyboard.language.it = { + language: 'Italiano (Italian)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accetta (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accetta:Accetta (Shift+Enter)', + 'alt' : 'AltGr:Grafemi Alternativi', + 'b' : '\u2190:Cancella', // Left arrow (same as ←) + 'bksp' : 'Canc:Cancella', + 'c' : '\u2716:Annulla (Esc)', // big X, close - same action as cancel + 'cancel' : 'Annulla:Annulla (Esc)', + 'clear' : 'C:Pulisci', // clear num pad + 'combo' : '\u00f6:Tasti Combinati', + 'dec' : ',:Decimale', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Invio', // down, then left arrow - enter symbol + 'enter' : 'Invio:Invio', + 'lock' : '\u21ea Bloc:Bloc Maiusc', // caps lock + 's' : '\u21e7:Maiusc', // thick hollow up arrow + 'shift' : 'Maiusc:Maiusc', + 'sign' : '\u00b1:Cambia Segno', // +/- sign for num pad + 'space' : ' :Spazio', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Usa la rotella del mouse per vedere altri tasti' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// lv = ISO 639-1 code for Latvian +// *********************** +jQuery.keyboard.language.lv = { + language: 'Latvie\u0161u (Latvian)', + display : { + 'a' : '\u2714:Pie\u0146emt (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Pie\u0146emt:Pie\u0146emt (Shift+Enter)', + 'alt' : 'AltGr:Altern\u0113\u0161anas tausti\u0146\u0161', + 'b' : '\u2190:Atpaka\u013Catk\u0101pe', // Left arrow (same as ←) + 'bksp' : 'Bksp:Atpaka\u013Catk\u0101pe', + 'c' : '\u2716:Atcelt (Esc)', // big X, close - same action as cancel + 'cancel' : 'Atcelt:Atcelt (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Izmanto peles riten\u012Bti, lai apskat\u012Btu citus tausti\u0146us', + // New combos using specific accents + combos : { + // duplicated from regular combos, used specific accents here instead + // acute & cedilla c C é É n N ó Ó s S z Z + "'" : { c:"\u0107", C:"\u0106", e:"\u00e9", E:"\u00c9", n:"\u0144", N:"\u0143", o:"\u00f3", O:"\u00d3", s:"\u015b", S:"\u015a", z:"\u017a", Z:"\u0179" }, + // diaeresis: ä Ä ö Ö ü Ü + '\u00a8' : { a:"\u00e4", A:"\u00c4", o:"\u00f6", O:"\u00d6", u:"\u00fc", U:"\u00dc" }, + // degree sign å Å e E g z Z + '\u00b0' : { a:"\u00e5", A:"\u00c5", e:"\u0117", E:"\u0116", g:"\u0121", z:"\u017c", Z:"\u017b" }, + }, + comboRegex : /([`\'~\^\"ao\u00a8\u00b0])([a-z])/mig +}; + +/** + * Burmese Keyboard Language + * please update this section to match this language and email me with corrections! + * my = ISO 639-1 code for Burmese + * thanks to @laminko (https://github.com/laminko); + * see https://github.com/Mottie/Keyboard/pull/507 + * license for this file: WTFPL + */ +jQuery.keyboard.language.my = { + language: '\u1017\u1019\u102c (Burmese)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:\u101b\u103e\u1004\u103a\u1038\u101c\u1004\u103a\u1038\u101b\u1014\u103a', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:\u1012\u101e\u1019', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : '\u1021\u1001\u103c\u102c\u1038\u1001\u101c\u102f\u1010\u103a\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1019\u103c\u1004\u103a\u101b\u1005\u1031\u101b\u1014\u103a \u1019\u1031\u102c\u1000\u103a\u1005\u103a\u101d\u103e\u102e\u1038\u101c\u103a\u1000\u102d\u102f \u1021\u101e\u102f\u1036\u1038\u1015\u103c\u102f\u1015\u102b' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pl = ISO 639-1 code for Polish +// *********************** +jQuery.keyboard.language.pl = { + language: 'Polski (Polish)', + display : { + 'a' : '\u2714:Akceptuj (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Akceptuj (Shift+Enter)', + 'alt' : 'AltGr:Polskie znaki', + 'b' : '\u2190:Cofnij', // Left arrow (same as ←) + 'bksp' : 'Bksp:Cofnij', + 'c' : '\u2716:Anuluj (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Anuluj (Esc)', + 'clear' : 'C:Czyść', // clear num pad + 'combo' : '\u00f6:Klawisze kombo', + 'dec' : '.:Dziesiętny', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Zmień znak', // +/- sign for num pad + 'space' : ' :Spacja', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Użyj rolki aby zobaczyć pozozstałe klawisze', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pt = ISO 639-1 code for Portuguese +// *********************** +jQuery.keyboard.language.pt = { + language: 'Portugu\u00eas (Portuguese)', + display : { + 'a' : '\u2714:Aceitar (Shift+Enter)', // ALTERNATE accept button - unicode for check mark symbol + 'accept' : 'Aceitar:Concluir (Shift+Enter)', // Accept button text + 'alt' : 'AltGr:Carateres Adicionais/CTRL+ALT', // Alt button text (AltGr is for international key sets) + 'b' : '\u2190:Retroceder', // ALTERNATE backspace button - unicode for left arrow. Same as ← ( ← ) - Left arrow + 'bksp' : '\u2190 Bksp:Retroceder', // Backspace button text + 'c' : '\u2716:Cancelar/Escape (Esc)', // ALTERNATE cancel button - unicode for big X + 'cancel' : 'Cancel:Cancelar/Escape(Esc)', // Cancel button text + 'clear' : 'C:Limpar', // Clear window content (used in num pad) + 'combo' : '\u00f6:Acentuação Automática', // (Toggle combo (diacritic) key + 'dec' : '.:Decimal', // Decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Introduzir/Mudar de Linha', // ALTERNATE enter button - unicode for down, then left arrow (enter symbol) + 'enter' : 'Enter\u21b5:Introduzir/Mudar de Linha', // Enter button text + 'lock' : '\u21ea Lock:CapsLock/Maiúsculas', // Caps lock button - unicode for double lined up arrow + 's' : '\u21e7:Shift/Maiúsculas', // ALTERNATE shift button - unicode for a thick up arrow + 'shift' : '\u21ea Shift:Maiúsculas-Minúsculas', // Shift button text + 'sign' : '\u00b1:Mudar Sinal', // Change sign (used in num pad) - unicode for a +- symbol + 'space' : ' :Espaço', // Space button text + 't' : '\u21e5:Tab/Tabela/Avançar', // ALTERNATE tab button - unicode for right arrow to bar (used since only one directional tabs available) + 'tab' : '\u21e5 Tab:Tabela/Avançar' // Tab button text (Note: \u21b9 is the true tab symbol (left & right arrows) but not used here) + }, + wheelMessage : 'Use a roda do rato/navegador para ver mais teclas', + + // Update regex for the combos above + comboRegex : /([`\'~\^\"ao\u00b4])([a-z])/mig, + // New combos using specific accents + combos : { + "\u00b4" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, // acute & cedilla + // remove apostrophe combo + "'" : {} + } + +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ro = ISO 639-1 code for Romanian +// *********************** +jQuery.keyboard.language.ro = { + language: 'Rom\u00e2n\u0103 (Romanian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Schimba semnul', // +/- sign for num pad + 'space' : ' :Spatiu', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Foloseste rotita mouse-ului pentru a vedea si celelalte caractere', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ru = ISO 639-1 code for Russian +// *********************** +jQuery.keyboard.language.ru = { + language: '\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)', + display : { + 'a' : '\u2714:Сохранить (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Сохранить:Сохранить (Shift+Enter)', + 'alt' : 'РУС:Русская клавиатура', + 'b' : '\u2190:Удалить символ слева', // Left arrow (same as ←) + 'bksp' : '\u21e6:Удалить символ слева', + 'c' : '\u2716:Отменить (Esc)', // big X, close - same action as cancel + 'cancel' : 'Отменить:Отменить (Esc)', + 'clear' : 'C:Очистить', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Ввод', // down, then left arrow - enter symbol + 'enter' : 'Ввод:Перевод строки', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Верхний регистр', // thick hollow up arrow + 'shift' : '\u21e7:Верхний регистр', + 'sign' : '\u00b1:Сменить знак', // +/- sign for num pad + 'space' : 'Пробел:', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// sq = ISO 639-1 code for Albanian +// *********************** +jQuery.keyboard.language.sq = { + language : 'Shqip (Albanian)', + display : { + 'a' : '\u2714:Prano (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Prano:Prano (Shift+Enter)', + 'alt' : 'Alt:Alternativ', + 'b' : '\u2190:Hap\u00ebsir\u00ebn Mbrapa', // Left arrow (same as ←) + 'bksp' : 'Bksp:Hap\u00ebsir\u00ebn Mbrapa', + 'c' : '\u2716:Anuloj (Arratisjes)', // big X, close - same action as cancel + 'cancel' : 'Anuloj:Anuloj (Arratisjes)', + 'clear' : 'C:Qart\u00eb', // clear num pad + 'combo' : '\u00f6:Kombinimi', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Shkruani', // down, then left arrow - enter symbol + 'enter' : 'Shkruani:Shkruani', + 'lock' : '\u21ea Bllokoj:Caps Lock', // caps lock + 'next' : 'Next \u21e8', + 'prev' : '\u21e6 Prev', + 's' : '\u21e7:Ndryshim', // thick hollow up arrow + 'shift' : 'Ndryshim:Ndryshim', + 'sign' : '\u00b1:Ndryshimi Regjistrohu', // +/- sign for num pad + 'space' : ' :Hap\u00ebsir\u00eb', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'P\u00ebrdorimi mousewheel p\u00ebr t\u00eb par\u00eb \u00e7el\u00ebsat e tjera', + + // New combos using specific accents + // Not sure what to do with these accents: ˇ ˘ ˙ ° ˛ ˝ + comboRegex : /([`\'~\^\"ao\/])([a-z])/gim, + combos : { + // new combos below ( forward slash + d, forward slash + l ) + '/' : { d:"\u0111", D:"\u0110", l:"\u0142", L:"\u0141" } // stroke đ Đ ł Ł + } +}; diff --git a/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-greywyvern.js b/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-greywyvern.js new file mode 100644 index 0000000000..deb011f86e --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-greywyvern.js @@ -0,0 +1,2800 @@ +/*! Layouts from greywyvern.com *//* + All layouts in this file have been generated & modified from the + Javascript Graphical / Virtual Keyboard Interface + (http://www.greywyvern.com/code/javascript/keyboard) + + Copyright (c) 2014 - GreyWyvern + Licenced for free distribution under the BSDL + + *** action key language translations not included *** + + Arabic keyboard layout by Srinivas Reddy + Armenian Eastern and Western keyboard layouts by Hayastan Project (www.hayastan.co.uk) + Assamese keyboard layout by Kanchan Gogoi + Basic Japanese Hiragana/Katakana keyboard layout by Damjan + Belarusian and Serbian Cyrillic keyboard layouts by Evgeniy Titov + Bosnian/Croatian/Serbian Latin/Slovenian keyboard layout by Miran Zeljko + Bulgarian BDS keyboard layout by Milen Georgiev + Bulgarian Phonetic keyboard layout by Samuil Gospodinov + Burmese keyboard layout by Cetanapa + Danish keyboard layout by Verner Kjærsgaard + Dari keyboard layout by Saif Fazel + Dutch and US Int'l keyboard layouts by jerone + Farsi (Persian) keyboard layout by Kaveh Bakhtiyari (www.bakhtiyari.com) + French keyboard layout by Hidden Evil + German keyboard layout by QuHno + Hungarian keyboard layout by Antal Sall 'Hiromacu' + Italian and Spanish (Spain) keyboard layouts by dictionarist.com + Kazakh keyboard layout by Alex Madyankin + Khmer keyboard layout by Sovann Heng (km-kh.com) + Kurdish keyboard layout by Ara Qadir + Lithuanian and Russian keyboard layouts by Ramunas + Macedonian keyboard layout by Damjan Dimitrioski + Pashto keyboard layout by Ahmad Wali Achakzai (qamosona.com) + Pinyin keyboard layout from a collaboration with Lou Winklemann + Polish Programmers layout by moose + Romanian keyboard layout by Aurel + Slovak keyboard layout by Daniel Lara (www.learningslovak.com) + Swedish keyboard layout by Håkan Sandberg + Turkish keyboard layouts by offcu + Ukrainian keyboard layout by Dmitry Nikitin + Urdu Phonetic keyboard layout by Khalid Malik + Yiddish (Yidish Lebt) keyboard layout by Simche Taub (jidysz.net) + Yiddish keyboard layout by Helmut Wollmersdorfer +*/ +/* + Zero-width characters + U+200B ZWSP + U+200C ZWNJ + U+200D ZWJ + U+200E LEFT-TO-RIGHT MARK + U+200F RIGHT-TO-LEFT MARK +*/ + +/* Albanian Keyboard Layout (Shqip) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sq"] = { + "name":"Albanian (Shqip)", + "normal":[ + "\\ 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t z u i o p \u00E7 [ ]", + "a s d f g h j k l \u00EB @ {enter}", + "{s} < y x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "| ! \" # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Z U I O P \u00C7 { }", + "A S D F G H J K L \u00CB ' {enter}", + "{s} > Y X C V B N M ; : ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 \u00DF \u00A4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00D7 {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 < > {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["sq"] +}; +/* Arabic Keyboard Layout (\u0627\u0644\u0639\u0631\u0628\u064a\u0629) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ar"] = { + "name":"Arabic (\u0627\u0644\u0639\u0631\u0628\u064a\u0629)", + "rtl":true, + "normal":[ + "\u0630 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u062f \\", + "\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u0637 {enter}", + "{s} \u0626 \u0621 \u0624 \u0631 \u0644 \u0649 \u0629 \u0648 \u0632 \u0638 {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0651 ! @ # $ % ^ & * ( ) _ + {b}", + "{t} \u064e \u064b \u064f \u064c \u0644 \u0625 \u2018 \u00f7 \u00d7 \u061b < > |", + "\u0650 \u064d ] [ \u0644 \u0623 \u0640 \u060c / : \" {enter}", + "{s} ~ \u0652 } { \u0644 \u0622 \u2019 , . \u061f {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ar"] +}; +/* Assamese Keyboard Layout (\u0985\u09b8\u09ae\u09c0\u09df\u09be) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["as"] = { + "name":"Assamese (\u0985\u09b8\u09ae\u09c0\u09df\u09be)", + "normal":[ + "+ \u09E7 \u09E8 \u09E9 \u09EA \u09EB \u09EC \u09ED \u09EE \u09EF \u09E6 - \u09C3 {b}", + "{t} \u09CC \u09C8 \u09BE \u09C0 \u09C2 \u09F1 \u09B9 \u0997 \u09A6 \u099C \u09A1 {enter}", + "\u09CB \u09C7 \u09CD \u09BF \u09C1 \u09AA \u09F0 \u0995 \u09A4 \u099A \u099F \u09BC", + "{s} \u09CE \u0982 \u09AE \u09A8 \u09AC \u09B2 \u09B8 , . \u09AF {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "? { } \u09CD\u09F0 \u09F0\u09CD \u099C\u09CD\u09F0 \u0995\u09CD\u09B7 \u0995\u09CD\u09F0 \u09B6\u09CD\u09F0 ( ) {empty} \u098B {b}", + "{t} \u0994 \u0990 \u0986 \u0988 \u098A \u09AD \u0999 \u0998 \u09A7 \u099D \u09A2 {enter}", + "\u0993 \u098F \u0985 \u0987 \u0989 \u09AB {empty} \u0996 \u09A5 \u099B \u09A0 \u099E", + "{s} \u0983 \u0981 \u09A3 \u09F7 \" ' \u09B6 \u09B7 ; \u09DF {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u09E7 \u09E8 \u09E9 \u09EA \u09EB \u09EC \u09ED \u09EE \u09EF \u09E6 {empty} \u09E2 {b}", + "{t} \u09D7 {empty} {empty} \u09E3 {empty} {empty} {empty} {empty} {empty} {empty} \u09DC {enter}", + "\u09F4 \u09F6 \u09F8 \u09E2 {empty} {empty} \u09F0 {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} \u09FA {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u09E0 {b}", + "{t} {empty} {empty} {empty} \u09E1 {empty} {empty} {empty} {empty} {empty} {empty} \u09DD {enter}", + "\u09F5 \u09F7 \u09F9 \u098C {empty} {empty} \u09F1 {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["as"] +}; +/* Azerbaijani Cyrillic Keyboard Layout (\u0410\u0437\u04d9\u0440\u0431\u0430\u0458\u04b9\u0430\u043d\u04b9\u0430) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["az-Cyrl"] = { + "name":"Azerbaijani Cyrillic (\u0410\u0437\u04d9\u0440\u0431\u0430\u0458\u04b9\u0430\u043d\u04b9\u0430)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0458 \u04AF \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u04BB \u0437 \u0445 \u04B9 \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u049D {enter}", + "{s} \\ \u04D9 \u0447 \u0441 \u043C \u0438 \u0442 \u0493 \u0431 \u04E9 . {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! \" \u2116 ; % : ? * ( ) _ + {b}", + "{t} \u0408 \u04AE \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u04BA \u0417 \u0425 \u04B8 /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u049C {enter}", + "{s} | \u04D8 \u0427 \u0421 \u041C \u0418 \u0422 \u0492 \u0411 \u04E8 , {s}", + "{space} {accept}" + ], + "lang":["az-Cyrl"] +}; +/* Azerbaijani Latin Keyboard Layout (Az\u0259rbaycanca) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["az"] = { + "name":"Azerbaijani Latin (Az\u0259rbaycanca)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q \u00FC e r t y u i o p \u00F6 \u011F \\", + "a s d f g h j k l \u0131 \u0259 {enter}", + "{s} z x c v b n m \u00E7 \u015F . {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! \" \u2166 ; % : ? * ( ) _ + {b}", + "{t} Q \u00DC E R T Y U \u0130 O P \u00D6 \u011E /", + "A S D F G H J K L I \u018F {enter}", + "{s} Z X C V B N M \u00C7 \u015E , {s}", + "{space} {accept}" + ], + "lang":["az"] +}; +/* Belarusian Keyboard Layout (\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["be"] = { + "name":"Belarusian (\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f)", + "normal":[ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 ' \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{s} / \u044f \u0447 \u0441 \u043c \u0456 \u0442 \u044c \u0431 \u044e . {s}", + "{space} {accept}" + ], + "shift":[ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {b}", + "{t} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 ' /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{s} | \u042f \u0427 \u0421 \u041c \u0406 \u0422 \u042c \u0411 \u042e , {s}", + "{space} {accept}" + ], + "lang":["be"] +}; +/* Belgian Keyboard Layout (Belgische / Belge) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["nl-BE"] = { + "name":"Belgian (Belgische / Belge)", + "normal":[ + "\u00b2 & \u00e9 \" ' ( \u00a7 \u00e8 ! \u00e7 \u00e0 ) - {b}", + "{t} a z e r t y u i o p ^ $ \u03bc", + "q s d f g h j k l m \u00f9 {enter}", + "{s} < w x c v b n , ; : = {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00b3 1 2 3 4 5 6 7 8 9 0 \u00b0 _ {b}", + "{t} A Z E R T Y U I O P \u00a8 * \u00a3", + "Q S D F G H J K L M % {enter}", + "{s} > W X C V B N ? . / + {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} | @ # {empty} {empty} ^ {empty} {empty} { } {empty} {empty} {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] `", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["nl-BE","fr-BE"] +}; +/* Bengali Keyboard Layout (\u09ac\u09be\u0982\u09b2\u09be) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["bn"] = { + "name":"Bengali (\u09ac\u09be\u0982\u09b2\u09be)", + "normal":[ + "1 2 3 4 5 6 7 8 9 0 - \u09C3 {b}", + "{t} \u09CC \u09C8 \u09BE \u09C0 \u09C2 \u09AC \u09B9 \u0997 \u09A6 \u099C \u09A1 {enter}", + "\u09CB \u09C7 \u09CD \u09BF \u09C1 \u09AA \u09B0 \u0995 \u09A4 \u099A \u099F \u09BC", + "{s} {empty} \u0982 \u09AE \u09A8 \u09AC \u09B2 \u09B8 , . \u09AF {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "{empty} {empty} \u09CD\u09B0 \u09B0\u09CD \u099C\u09CD\u09B0 \u09A4\u09CD\u09B7 \u0995\u09CD\u09B0 \u09B6\u09CD\u09B0 ( ) \u0983 \u098B {b}", + "{t} \u0994 \u0990 \u0986 \u0988 \u098A \u09AD \u0999 \u0998 \u09A7 \u099D \u09A2 {enter}", + "\u0993 \u098F \u0985 \u0987 \u0989 \u09AB {empty} \u0996 \u09A5 \u099B \u09A0 \u099E", + "{s} {empty} \u0981 \u09A3 {empty} {empty} {empty} \u09B6 \u09B7 { \u09DF {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u09E7 \u09E8 \u09E9 \u09EA \u09EB \u09EC \u09ED \u09EE \u09EF \u09E6 {empty} \u09E2 {b}", + "{t} \u09D7 {empty} {empty} \u09E3 {empty} {empty} {empty} {empty} {empty} {empty} \u09DC {enter}", + "\u09F4 \u09F6 \u09F8 \u09E2 {empty} {empty} \u09F0 {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} \u09FA {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u09E0 {b}", + "{t} {empty} {empty} {empty} \u09E1 {empty} {empty} {empty} {empty} {empty} {empty} \u09DD {enter}", + "\u09F5 \u09F7 \u09F9 \u098C {empty} {empty} \u09F1 {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["bn"] +}; +/* Bosnian Keyboard Layout (Bosanski) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["bs"] = { + "name":"Bosnian (Bosanski)", + "normal":[ + "\u00B8 1 2 3 4 5 6 7 8 9 0 ' + {b}", + "{t} q w e r t z u i o p \u0161 \u0111 \u017E", + "a s d f g h j k l \u010D \u0107 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00A8 ! \" # $ % & / ( ) = ? * {b}", + "{t} Q W E R T Z U I O P \u0160 \u0110 \u017D", + "A S D F G H J K L \u010C \u0106 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ | \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 \u00D7 \u00A4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00DF {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 < > \u00A9 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["bs"] +}; +/* Bulgarian Phonetic Keyboard Layout (\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0424\u043e\u043d\u0435\u0442\u0438\u0447\u0435\u043d) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["bg-ph"] = { + "name":"Bulgarian Phonetic (\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0424\u043e\u043d\u0435\u0442\u0438\u0447\u0435\u043d)", + "normal":[ + "\u0447 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u044F \u0432 \u0435 \u0440 \u0442 \u044A \u0443 \u0438 \u043E \u043F \u0448 \u0449 \u044E", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0439 \u043A \u043B ; ' {enter}", + "{s} \u0437 \u044C \u0446 \u0436 \u0431 \u043D \u043C , . / {s}", + "{space} {accept}" + ], + "shift":[ + "\u0427 ! @ # $ % ^ & * ( ) _ + {b}", + "{t} \u042F \u0412 \u0415 \u0420 \u0422 \u042A \u0423 \u0418 \u041E \u041F \u0428 \u0429 \u042E", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0419 \u041A \u041B : \" {enter}", + "{s} \u0417 \u042C \u0426 \u0416 \u0411 \u041D \u041C < > ? {s}", + "{space} {accept}" + ], + "lang":["bg-ph"] +}; +/* Bulgarian BDS Keyboard Layout (\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["bg"] = { + "name":"Bulgarian BDS (\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} , \u0443 \u0435 \u0438 \u0448 \u0449 \u043a \u0441 \u0434 \u0437 \u0446 ; (", + "\u044c \u044f \u0430 \u043e \u0436 \u0433 \u0442 \u043d \u0412 \u043c \u0447 {enter}", + "{s} \u042e \u0439 \u044a \u044d \u0444 \u0445 \u043f \u0440 \u043b \u0431 {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! ? + \" % = : / _ \u2116 \u0406 V {b}", + "{t} \u044b \u0423 \u0415 \u0418 \u0428 \u0429 \u041a \u0421 \u0414 \u0417 \u0426 \u00a7 )", + "\u042c \u042f \u0410 \u041e \u0416 \u0413 \u0422 \u041d \u0412 \u041c \u0427 {enter}", + "{s} \u044e \u0419 \u042a \u042d \u0424 \u0425 \u041f \u0420 \u041b \u0411 {s}", + "{space} {accept}" + ], + "lang":["bg"] +}; +/* Burmese Keyboard Layout (\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["my"] = { + "name":"Burmese (\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c)", + "normal":[ + "\u1039` \u1041 \u1042 \u1043 \u1044 \u1045 \u1046 \u1047 \u1048 \u1049 \u1040 - = {b}", + "{t} \u1006 \u1010 \u1014 \u1019 \u1021 \u1015 \u1000 \u1004 \u101E \u1005 \u101F \u2018 \u104F", + "\u200B\u1031 \u200B\u103B \u200B\u102D \u200B\u103A \u200B\u102B \u200B\u1037 \u200B\u103C \u200B\u102F \u200B\u1030 \u200B\u1038 \u1012 {enter}", + "{s} \u1016 \u1011 \u1001 \u101C \u1018 \u100A \u200B\u102C \u101A . \u104B {s}", + "{space} {accept}" + ], + "shift":[ + "~ \u100D \u100E \u100B \u1000\u103B\u1015\u103A % / \u101B \u1002 ( ) _ + {b}", + "{t} \u1029 \u1040 \u103F \u1023 \u1024 \u104C \u1009 \u104D \u1025 \u100F \u1027 \u2019 \u100B\u1039\u100C", + "\u1017 \u200B\u103E \u200B\u102E \u1004\u103A\u1039\u200B \u200B\u103D \u200B\u1036 \u200B\u1032 \u200B\u102F \u200B\u1030 \u200B\u102B\u103A \u1013 {enter}", + "{s} \u1007 \u100C \u1003 \u1020 \u1026 \u1008 \u102A \u101B \u101B \u104A {s}", + "{space} {accept}" + ], + "lang":["my"] +}; +/* Canadian French Keyboard Layout (Canadienne-fran\u00e7aise) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fr-CA"] = { + "name":"Canadian French (Canadienne-fran\u00e7aise)", + "normal":[ + "# 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p ^ \u00B8 <", + "a s d f g h j k l ; ` {enter}", + "{s} \u00AB z x c v b n m , . \u00E9 {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "| ! \" / $ % ? & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P ^ \u00A8 >", + "A S D F G H J K L : ` {enter}", + "{s} \u00BB Z X C V B N M ' . \u00C9 {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\\ \u00B1 @ \u00A3 \u00A2 \u00A4 \u00AC \u00A6 \u00B2 \u00B3 \u00BC \u00BD \u00BE {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A7 \u00B6 [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ { {enter}", + "{s} \u00B0 {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 \u00AF \u00AD \u00B4 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fr-CA"] +}; +/* Chinese Bopomofo IME Keyboard Layout (\u4e2d\u6587\u6ce8\u97f3\u7b26\u53f7) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["zh-Bopo"] = { + "name":"Chinese Bopomofo IME (\u4e2d\u6587\u6ce8\u97f3\u7b26\u53f7)", + "normal":[ + "\u20AC \u3105 \u3109 \u02C7 \u02CB \u3113 \u02CA \u02D9 \u311A \u311E \u3122 \u3126 = {b}", + "{t} \u3106 \u310A \u310D \u3110 \u3114 \u3117 \u3127 \u311B \u311F \u3123 [ ] \\", + "\u3107 \u310B \u310E \u3111 \u3115 \u3118 \u3128 \u311C \u3120 \u3124 ' {enter}", + "{s} \u3108 \u310C \u310F \u3112 \u3116 \u3119 \u3129 \u311D \u3121 \u3125 {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ) ( _ + {b}", + "{t} q w e r t y u i o p { } |", + "a s d f g h j k l : \" {enter}", + "{s} z x c v b n m < > ? {s}", + "{space} {accept}" + ], + "lang":["zh-Bopo"] +}; +/* Chinese Cangjie IME Keyboard Layout (\u4e2d\u6587\u4ed3\u9889\u8f93\u5165\u6cd5) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["zh"] = { + "name":"Chinese Cangjie IME (\u4e2d\u6587\u4ed3\u9889\u8f93\u5165\u6cd5)", + "normal":[ + "\u20AC 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u624B \u7530 \u6C34 \u53E3 \u5EFF \u535C \u5C71 \u6208 \u4EBA \u5FC3 [ ] \\", + "\u65E5 \u5C38 \u6728 \u706B \u571F \u7AF9 \u5341 \u5927 \u4E2D ; ' {enter}", + "{s} \uFF3A \u96E3 \u91D1 \u5973 \u6708 \u5F13 \u4E00 , . / {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ) ( _ + {b}", + "{t} q w e r t y u i o p { } |", + "a s d f g h j k l : \" {enter}", + "{s} z x c v b n m < > ? {s}", + "{space} {accept}" + ], + "lang":["zh"] +}; +/* Croatian Keyboard Layout (Hrvatski) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["hr"] = { + "name":"Croatian (Hrvatski)", + "normal":[ + "\u00B8 1 2 3 4 5 6 7 8 9 0 ' + {b}", + "{t} q w e r t z u i o p \u0161 \u0111 \u017E", + "a s d f g h j k l \u010D \u0107 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00A8 ! \" # $ % & / ( ) = ? * {b}", + "{t} Q W E R T Z U I O P \u0160 \u0110 \u017D", + "A S D F G H J K L \u010C \u0106 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ | \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 \u00D7 \u00A4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00DF {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 < > \u00A9 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["hr"] +}; +/* Czech Keyboard Layout (\u010cesky) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["cs"] = { + "name":"Czech (\u010cesky)", + "normal":[ + "; + \u011B \u0161 \u010D \u0159 \u017E \u00FD \u00E1 \u00ED \u00E9 = \u00B4 {b}", + "{t} q w e r t y u i o p \u00FA ) \u00A8", + "a s d f g h j k l \u016F \u00A7 {enter}", + "{s} \\ z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {b}", + "{t} Q W E R T Y U I O P / ( '", + "A S D F G H J K L \" ! {enter}", + "{s} | Z X C V B N M ? : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` ! @ # $ % ^ & * ( ) - = {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; \u00a4 {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > / {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} _ + {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : ^ {enter}", + "{s} \u02dd {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00d7 \u00f7 ? {s}", + "{space} {alt} {accept}" + ], + "lang":["cs"] +}; +/* Danish Keyboard Layout (Dansk) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["da"] = { + "name":"Danish (Dansk)", + "normal":[ + "\u00bd 1 2 3 4 5 6 7 8 9 0 + \u00b4 {b}", + "{t} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00e6 \u00f8 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {b}", + "{t} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00c6 \u00d8 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} | {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u03bc {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u039c {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["da"] +}; +/* Dari Keyboard Layout (\u062f\u0631\u06cc) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fa-AF"] = { + "name":"Dari (\u062f\u0631\u06cc)", + "rtl":true, + "normal":[ + "{ZWJ} \u06F1 \u06F2 \u06F3 \u06F4 \u06F5 \u06F6 \u06F7 \u06F8 \u06F9 \u06F0 - = {b}", + "{t} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u0686 \\", + "\u0634 \u0633 \u06CC \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u06A9 \u06AF {enter}", + "{s} \u0638 \u0637 \u0632 \u0631 \u0630 \u062F \u067E \u0648 . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00F7 ! \u066C \u066B \u060B \u066A \u00D7 \u060C * ) ( \u0640 + {b}", + "{t} \u0652 \u064C \u064D \u064B \u064F \u0650 \u064E \u0651 ] [ } { |", + "\u0624 \u0626 \u064A \u0625 \u0623 \u0622 \u0629 \u00BB \u00AB : \u061B {enter}", + "{s} \u0643 \u0653 \u0698 \u0670 {ZWNJ} \u0654 \u0621 > < \u061F {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "~ ` @ # $ % ^ & \u2022 {LRM} {RLM} _ {empty} {b}", + "{t} \u00B0 {empty} \u20AC \uFD3E \uFD3F \u0656 \u0659 \u0655 ' \" \u0681 \u0685 ?", + "\u069A \u06CD \u0649 \u06D0 \u06B7 \u0671 \u067C \u06BC \u06BA ; \u06AB {enter}", + "{s} \u06D2 \u0691 \u0696 \u0693 \u0688 \u0689 \u0679 , \u06C7 \u06C9 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fa-AF"] +}; +/* Devanagari Keyboard Layout (\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["hi-Deva"] = { + "name":"Devanagari (\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940)", + "normal":[ + "\u094A 1 2 3 4 5 6 7 8 9 0 - \u0943 {b}", + "{t} \u094C \u0948 \u093E \u0940 \u0942 \u092C \u0939 \u0917 \u0926 \u091C \u0921 \u093C \u0949", + "\u094B \u0947 \u094D \u093F \u0941 \u092A \u0930 \u0915 \u0924 \u091A \u091F {enter}", + "{s} \u0946 \u0902 \u092E \u0928 \u0935 \u0932 \u0938 , . \u092F {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0912 \u090D \u0945 \u094D\u0930 \u0930\u094D \u091C\u094D\u091E \u0924\u094D\u0930 \u0915\u094D\u0937 \u0936\u094D\u0930 ( ) \u0903 \u090B {b}", + "{t} \u0914 \u0910 \u0906 \u0908 \u090A \u092D \u0919 \u0918 \u0927 \u091D \u0922 \u091E \u0911", + "\u0913 \u090F \u0905 \u0907 \u0909 \u092B \u0931 \u0916 \u0925 \u091B \u0920 {enter}", + "{s} \u090E \u0901 \u0923 \u0929 \u0934 \u0933 \u0936 \u0937 \u0964 \u095F {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u0967 \u0968 \u0969 \u096A \u096B \u096C \u096D \u096E \u096F \u0966 {empty} \u0944 {b}", + "{t} {empty} {empty} {empty} \u0963 {empty} {empty} {empty} \u095A {empty} \u095B \u095C {empty} {empty}", + "{empty} {empty} {empty} \u0962 {empty} {empty} {empty} \u0958 {empty} \u0952 {empty} {enter}", + "{s} \u0953 {empty} \u0954 {empty} {empty} {empty} {empty} \u0970 \u0965 {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0960 {b}", + "{t} {empty} {empty} {empty} \u0961 {empty} {empty} {empty} {empty} {empty} {empty} \u095D {empty} {empty}", + "{empty} {empty} {empty} \u090C {empty} \u095E {empty} \u0959 {empty} {empty} \u0951 {enter}", + "{s} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} {empty} \u093D {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["hi-Deva"] +}; +/* Dingbats Keyboard Layout (Dingbats) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["dingbats"] = { + "name":"Dingbats (Dingbats)", + "normal":[ + "\u2764 \u278a \u278b \u278c \u278d \u278e \u278f \u2790 \u2791 \u2792 \u2793 \u2795 \u2702 {b}", + "{t} \u2714 \u2718 \u271a \u271d \u2722 \u2726 \u2729 \u272c \u2736 \u273b \u2744 \u2733 \u2737", + "\u2799 \u27b5 \u27b8 \u2794 \u279d \u27a9 \u27a4 \u27b3 \u27ad \u27a8 \u279f {enter}", + "{s} \u270c \u274f \u273f \u2747 \u2757 \u2753 \u270f \u2712 \u2709 \u275b \u275c {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u2765 \u2780 \u2781 \u2782 \u2783 \u2784 \u2785 \u2786 \u2787 \u2788 \u2789 \u2796 \u2704 {b}", + "{t} \u2705 \u2715 \u2719 \u271e \u2723 \u2727 \u272a \u272b \u2731 \u273c \u2745 \u2734 \u2738", + "\u279a \u27b6 \u27b9 \u279c \u279e \u27aa \u27a3 \u27bc \u27ae \u27a6 \u27a0 {enter}", + "{s} \u270b \u2750 \u2740 \u2748 \u2755 \u2754 \u2710 \u2711 \u2706 \u275d \u275e {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u2766 \u2776 \u2777 \u2778 \u2779 \u277a \u277b \u277c \u277d \u277e \u277f \u274c \u2701 {b}", + "{t} \u2713 \u2717 \u271b \u271f \u2724 \u2728 \u272d \u272e \u2732 \u273d \u2746 \u2735 \u2739", + "\u2798 \u27b4 \u27b7 \u27ba \u27a1 \u27ab \u27a2 \u27bd \u27af \u27a5 \u27be {enter}", + "{s} \u270a \u2751 \u2741 \u274a \u2762 \u27b0 \u270e \u274d \u2708 \u2761 \u275f {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u2767 \u2768 \u2769 \u276a \u276b \u276c \u276d \u276e \u276f \u2770 \u2771 \u2797 \u2703 {b}", + "{t} {empty} \u2716 \u271c \u2720 \u2725 \u2756 \u2730 \u272f \u2749 \u273e \u2743 \u2721 \u273a", + "\u2758 \u2759 \u275a \u27bb \u2772 \u27ac \u279b \u2773 \u27b1 \u27a7 \u27b2 {enter}", + "{s} \u270d \u2752 \u2742 \u274b \u2763 \u27bf \u2774 \u274e \u2707 \u2775 \u2760 {s}", + "{space} {alt} {accept}" + ], + "lang":["dingbats"] +}; +/* Divehi Keyboard Layout (\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["dv"] = { + "name":"Divehi (\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u07ab \u07ae \u07a7 \u07a9 \u07ad \u078e \u0783 \u0789 \u078c \u0780 \u078d [ ]", + "\u07a8 \u07aa \u07b0 \u07a6 \u07ac \u0788 \u0787 \u0782 \u0786 \u078a \ufdf2 {enter}", + "{s} \\ \u0792 \u0791 \u0790 \u0794 \u0785 \u078b \u0784 \u0781 \u0793 \u07af {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ) ( _ + {b}", + "{t} \u00d7 \u2019 \u201c / : \u07a4 \u079c \u07a3 \u07a0 \u0799 \u00f7 { }", + "< > . \u060c \" \u07a5 \u07a2 \u0798 \u079a \u07a1 \u061b {enter}", + "{s} | \u0796 \u0795 \u078f \u0797 \u079f \u079b \u079D \\ \u079e \u061f {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} , {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; {enter}", + "{s} {empty} {empty} {empty} {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} , {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["dv"] +}; +/* Dutch Keyboard Layout (Nederlands) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["nl"] = { + "name":"Dutch (Nederlands)", + "normal":[ + "@ 1 2 3 4 5 6 7 8 9 0 / \u00b0 {b}", + "{t} q w e r t y u i o p \u00a8 * <", + "a s d f g h j k l + \u00b4 {enter}", + "{s} ] z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00a7 ! \" # $ % & _ ( ) ' ? ~ {b}", + "{t} Q W E R T Y U I O P ^ | >", + "A S D F G H J K L \u00b1 ` {enter}", + "{s} [ Z X C V B N M ; : = {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u00ac \u00b9 \u00b2 \u00b3 \u00bc \u00bd \u00be \u00a3 { } {empty} \\ \u00b8 {b}", + "{t} {empty} {empty} \u20ac \u00b6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} \u00df {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} \u00a6 \u00ab \u00bb \u00a2 {empty} {empty} {empty} \u00b5 {empty} \u00b7 {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["nl"] +}; +/* Dvorak Keyboard Layout (Dvorak) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["en-dvorak"] = { + "name":"Dvorak (Dvorak)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 [ ] {b}", + "{t} ' , . p y f g c r l / = \\", + "a o e u i d h t n s - {enter}", + "{s} ; q j k x b m w v z {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) { } {b}", + "{t} \" < > P Y F G C R L ? + |", + "A O E U I D H T N S _ {enter}", + "{s} : Q J K X B M W V Z {s}", + "{space} {accept}" + ], + "lang":["en-dvorak"] +}; +/* Eastern Armenian Keyboard Layout (\u0540\u0561\u0575\u0565\u0580\u0565\u0576 \u0561\u0580\u0565\u0582\u0565\u056c\u0584) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["hy"] = { + "name":"Eastern Armenian (\u0540\u0561\u0575\u0565\u0580\u0565\u0576 \u0561\u0580\u0565\u0582\u0565\u056c\u0584)", + "normal":[ + "\u055D : \u0571 \u0575 \u055B , - . \u00AB \u00BB \u0585 \u057C \u056A {b}", + "{t} \u056D \u0582 \u0567 \u0580 \u057F \u0565 \u0568 \u056B \u0578 \u057A \u0579 \u057B '", + "\u0561 \u057D \u0564 \u0586 \u0584 \u0570 \u0573 \u056F \u056C \u0569 \u0583 {enter}", + "{s} \u0566 \u0581 \u0563 \u057E \u0562 \u0576 \u0574 \u0577 \u0572 \u056E {s}", + "{space} {accept}" + ], + "shift":[ + "\u055C 1 \u0541 \u0545 3 4 9 \u0587 ( ) \u0555 \u054C \u053A {b}", + "{t} \u053D \u0552 \u0537 \u0550 \u054F \u0535 \u0538 \u053B \u0548 \u054A \u0549 \u054B \u055E", + "\u0531 \u054D \u0534 \u0556 \u0554 \u0540 \u0543 \u053F \u053C \u0539 \u0553 {enter}", + "{s} \u0536 \u0551 \u0533 \u054E \u0532 \u0546 \u0544 \u0547 \u0542 \u053E {s}", + "{space} {accept}" + ], + "lang":["hy"] +}; +/* Estonian Keyboard Layout (Eesti) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["et"] = { + "name":"Estonian (Eesti)", + "normal":[ + "\u02C7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {b}", + "{t} q w e r t y u i o p \u00FC \u00F5 '", + "a s d f g h j k l \u00F6 \u00E4 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! \" # \u00A4 % & / ( ) = ? ` {b}", + "{t} Q W E R T Y U I O P \u00DC \u00D5 *", + "A S D F G H J K L \u00D6 \u00C4 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A7 \u00BD", + "{empty} \u0161 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{s} | \u017E {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} @ \u00A3 $ {empty} {empty} { [ ] } \\ {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A7 \u00BD", + "{empty} \u0160 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{s} | \u017D {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["et"] +}; +/* Faeroese Keyboard Layout (F\u00f8royskt) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fo"] = { + "name":"Faeroese (F\u00f8royskt)", + "normal":[ + "\u00BD 1 2 3 4 5 6 7 8 9 0 + \u00B4 {b}", + "{t} q w e r t y u i o p \u00E5 \u00F0 '", + "a s d f g h j k l \u00E6 \u00F8 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {b}", + "{t} Q W E R T Y U I O P \u00C5 \u00D0 *", + "A S D F G H J K L \u00C6 \u00D8 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} | {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A8 ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fo"] +}; +/* Farsi Keyboard Layout (\u0641\u0627\u0631\u0633\u06cc) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fa"] = { + "name":"Farsi (\u0641\u0627\u0631\u0633\u06cc)", + "rtl":true, + "normal":[ + "\u067e 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \u0698", + "\u0634 \u0633 \u064a \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u06af \u0643 {enter}", + "{s} \u0638 \u0637 \u0632 \u0631 \u0630 \u062f \u0626 \u0648 . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0651 ! @ # $ % ^ & * ( ) _ + {b}", + "{t} \u064e \u064b \u064f \u064c \u0644 \u0625 \u2018 \u00f7 \u00d7 \u061b < > |", + "\u0650 \u064d ] [ \u0644 \u0623 \u0640 \u060c \\ : \" {enter}", + "{s} ~ \u0652 } { \u0644 \u0622 \u0621 , . \u061f {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fa"] +}; +/* Finnish Keyboard Layout (Suomi) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fi"] = { + "name":"Finnish (Suomi)", + "normal":[ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {b}", + "{t} q w e r t y u i o p \u00E5 \u00A8 '", + "a s d f g h j k l \u00F6 \u00E4 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {b}", + "{t} Q W E R T Y U I O P \u00C5 ^ *", + "A S D F G H J K L \u00D6 \u00C4 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {b}", + "{t} \u00E2 {empty} \u20AC {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~ {empty}", + "\u00E1 \u0161 \u0111 \u01e5 \u01E7 \u021F {empty} \u01e9 {empty} \u00F8 \u00E6 {enter}", + "{s} | \u017E {empty} \u010d \u01EF \u0292 \u014B \u00B5 {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} \u00C2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00CF \u00D5 {empty} {empty} {empty} {empty}", + "\u00C1 \u0160 \u0110 \u01E4 \u01E6 \u021e {empty} \u01E8 {empty} \u00D8 \u00C6 {enter}", + "{s} {empty} \u017D {empty} \u010C \u01EE \u01B7 \u014A {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fi"] +}; +/* French Keyboard Layout (Fran\u00e7ais) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fr"] = { + "name":"French (Fran\u00e7ais)", + "normal":[ + "\u00b2 & \u00e9 \" ' ( - \u00e8 _ \u00e7 \u00e0 ) = {b}", + "{t} a z e r t y u i o p ^ $ *", + "q s d f g h j k l m \u00f9 {enter}", + "{s} < w x c v b n , ; : ! {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00b3 1 2 3 4 5 6 7 8 9 0 \u00b0 + {b}", + "{t} A Z E R T Y U I O P \u00a8 \u00a3 \u03bc", + "Q S D F G H J K L M % {enter}", + "{s} > W X C V B N ? . / \u00a7 {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} ~ # { [ | ` \\ ^ @ ] } {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a4 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fr"] +}; +/* Georgian Keyboard Layout (\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ka"] = { + "name":"Georgian (\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8)", + "normal":[ + "\u201E ! ? \u2116 \u00A7 % : . ; , / \u2013 = {b}", + "{t} \u10E6 \u10EF \u10E3 \u10D9 \u10D4 \u10DC \u10D2 \u10E8 \u10EC \u10D6 \u10EE \u10EA (", + "\u10E4 \u10EB \u10D5 \u10D7 \u10D0 \u10DE \u10E0 \u10DD \u10DA \u10D3 \u10DF {enter}", + "{s} \u10ED \u10E9 \u10E7 \u10E1 \u10DB \u10D8 \u10E2 \u10E5 \u10D1 \u10F0 {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u201C 1 2 3 4 5 6 7 8 9 0 - + {b}", + "{t} \u10E6 \u10EF \u10E3 \u10D9 \u10D4 \u10DC \u10D2 \u10E8 \u10EC \u10D6 \u10EE \u10EA )", + "\u10E4 \u10EB \u10D5 \u10D7 \u10D0 \u10DE \u10E0 \u10DD \u10DA \u10D3 \u10DF {enter}", + "{s} \u10ED \u10E9 \u10E7 \u10E1 \u10DB \u10D8 \u10E2 \u10E5 \u10D1 \u10F0 {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} \u10F1 {empty} {empty} {empty} {empty} {empty} \u10F4 {empty} {empty}", + "\u10F6 {empty} \u10F3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} \u10F2 {empty} {empty} {empty} \u10F5 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ka"] +}; +/* German Keyboard Layout (Deutsch) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["de"] = { + "name":"German (Deutsch)", + "normal":[ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {b}", + "{t} q w e r t z u i o p \u00fc + #", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {b}", + "{t} Q W E R T Z U I O P \u00dc * '", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} \u00b2 \u00b3 {empty} {empty} {empty} { [ ] } \\ {empty} {b}", + "{t} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} \u00a6 {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["de"] +}; +/* Greek Keyboard Layout (\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["el"] = { + "name":"Greek (\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} ; \u03c2 \u03b5 \u03c1 \u03c4 \u03c5 \u03b8 \u03b9 \u03bf \u03c0 [ ] \\", + "\u03b1 \u03c3 \u03b4 \u03c6 \u03b3 \u03b7 \u03be \u03ba \u03bb \u0384 ' {enter}", + "{s} < \u03b6 \u03c7 \u03c8 \u03c9 \u03b2 \u03bd \u03bc , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} : ^ \u0395 \u03a1 \u03a4 \u03a5 \u0398 \u0399 \u039f \u03a0 { } |", + "\u0391 \u03a3 \u0394 \u03a6 \u0393 \u0397 \u039e \u039a \u039b \u00a8 \" {enter}", + "{s} > \u0396 \u03a7 \u03a8 \u03a9 \u0392 \u039d \u039c < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} \u00b2 \u00b3 \u00a3 \u00a7 \u00b6 {empty} \u00a4 \u00a6 \u00ba \u00b1 \u00bd {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u201c \u201d \u00ac", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["el"] +}; +/* Gujarati Keyboard Layout (\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["gu"] = { + "name":"Gujarati (\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0)", + "normal":[ + "1 2 3 4 5 6 7 8 9 0 - \u0AC3 {b}", + "{t} \u0ACC \u0AC8 \u0ABE \u0AC0 \u0AC2 \u0AAC \u0AB9 \u0A97 \u0AA6 \u0A9C \u0AA1 \u0ABC \u0AC9", + "\u0ACB \u0AC7 \u0ACD \u0ABF \u0AC1 \u0AAA \u0AB0 \u0A95 \u0AA4 \u0A9A \u0A9F {enter}", + "{s} {empty} \u0A82 \u0AAE \u0AA8 \u0AB5 \u0AB2 \u0AB8 , . \u0AAF {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0A8D \u0AC5 \u0ACD\u0AB0 \u0AB0\u0ACD \u0A9C\u0ACD\u0A9E \u0AA4\u0ACD\u0AB0 \u0A95\u0ACD\u0AB7 \u0AB6\u0ACD\u0AB0 ( ) \u0A83 \u0A8B {b}", + "{t} \u0A94 \u0A90 \u0A86 \u0A88 \u0A8A \u0AAD \u0A99 \u0A98 \u0AA7 \u0A9D \u0AA2 \u0A9E \u0A91", + "\u0A93 \u0A8F \u0A85 \u0A87 \u0A89 \u0AAB {empty} \u0A96 \u0AA5 \u0A9B \u0AA0 {enter}", + "{s} {empty} \u0A81 \u0AA3 {empty} {empty} \u0AB3 \u0AB6 \u0AB7 \u0964 {empty} {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u0AE7 \u0AE8 \u0AE9 \u0AEA \u0AEB \u0AEC \u0AED \u0AEE \u0AEF \u0AE6 {empty} \u0AC4 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0965 {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0AE0 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} \u0AD0 {empty} {empty} {empty} {empty} {empty} {empty} \u0ABD {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["gu"] +}; +/* Hebrew Keyboard Layout (\u05e2\u05d1\u05e8\u05d9\u05ea) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["he"] = { + "name":"Hebrew (\u05e2\u05d1\u05e8\u05d9\u05ea)", + "rtl":true, + "normal":[ + "~ 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} / ' \u05e7 \u05e8 \u05d0 \u05d8 \u05d5 \u05df \u05dd \u05e4 \\ {enter}", + "\u05e9 \u05d3 \u05d2 \u05db \u05e2 \u05d9 \u05d7 \u05dc \u05da \u05e3 , ] [", + "{s} \u05d6 \u05e1 \u05d1 \u05d4 \u05e0 \u05de \u05e6 \u05ea \u05e5 . {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "` ! @ # $ % ^ & * ) ( _ + {b}", + "{t} Q W E R T Y U I O P | {enter}", + "A S D F G H J K L : \" } {", + "{s} Z X C V B N M > < ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} \u20aa {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} \u05f0 {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} \u05f2 \u05f1 {empty} {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["he"] +}; +/* Hindi Keyboard Layout (\u0939\u093f\u0902\u0926\u0940) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["hi"] = { + "name":"Hindi (\u0939\u093f\u0902\u0926\u0940)", + "normal":[ + "{ZWJ} 1 2 3 4 5 6 7 8 9 0 - \u0943 {b}", + "{t} \u094C \u0948 \u093E \u0940 \u0942 \u092C \u0939 \u0917 \u0926 \u091C \u0921 \u093C \u0949", + "\u094B \u0947 \u094D \u093F \u0941 \u092A \u0930 \u0915 \u0924 \u091A \u091F {enter}", + "{s} {empty} \u0902 \u092E \u0928 \u0935 \u0932 \u0938 , . \u092F {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "{ZWNJ} \u090D \u0945 \u094D\u0930 \u0930\u094D \u091C\u094D\u091E \u0924\u094D\u0930 \u0915\u094D\u0937 \u0936\u094D\u0930 ( ) \u0903 \u090B {b}", + "{t} \u0914 \u0910 \u0906 \u0908 \u090A \u092D \u0919 \u0918 \u0927 \u091D \u0922 \u091E \u0911", + "\u0913 \u090F \u0905 \u0907 \u0909 \u092B \u0931 \u0916 \u0925 \u091B \u0920 {enter}", + "{s} {empty} \u0901 \u0923 {empty} {empty} \u0933 \u0936 \u0937 \u0964 \u095F {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` \u0967 \u0968 \u0969 \u096A \u096B \u096C \u096D \u096E \u096F \u0966 - = {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; ' {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} , . / {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{s} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} < > ? {s}", + "{space} {alt} {accept}" + ], + "lang":["hi"] +}; +/* Hungarian Keyboard Layout (Magyar) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["hu"] = { + "name":"Hungarian (Magyar)", + "normal":[ + "0 1 2 3 4 5 6 7 8 9 \u00f6 \u00fc \u00f3 {b}", + "{t} q w e r t z u i o p \u0151 \u00fa \u0171", + "a s d f g h j k l \u00e9 \u00e1 {enter}", + "{s} \u00ed y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00a7 ' \" + ! % / = ( ) \u00d6 \u00dc \u00d3 {b}", + "{t} Q W E R T Z U I O P \u0150 \u00da \u0170", + "A S D F G H J K L \u00c9 \u00c1 {enter}", + "{s} \u00cd Y X C V B N M ? : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02c7 \u02c6 \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {b}", + "{t} \\ | \u00c4 {empty} {empty} {empty} \u20ac \u00cd {empty} {empty} \u00f7 \u00d7 \u00a4", + "\u00e4 \u0111 \u0110 [ ] {empty} \u00ed \u0141 \u0142 $ \u00df {enter}", + "{s} < > # & @ { } < ; > * {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["hu"] +}; +/* Icelandic Keyboard Layout (\u00cdslenska) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["is"] = { + "name":"Icelandic (\u00cdslenska)", + "normal":[ + "\u00B0 1 2 3 4 5 6 7 8 9 0 \u00F6 - {b}", + "{t} q w e r t y u i o p \u00F0 ' +", + "a s d f g h j k l \u00E6 \u00B4 {enter}", + "{s} < z x c v b n m , . \u00FE {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00A8 ! \" # $ % & / ( ) = \u00D6 _ {b}", + "{t} Q W E R T Y U I O P \u00D0 ? *", + "A S D F G H J K L \u00C6 ' {enter}", + "{s} > Z X C V B N M ; : \u00DE {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u00B0 {empty} {empty} {empty} {empty} \u20AC {empty} { [ ] } \\ {empty} {b}", + "{t} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ `", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{s} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["is"] +}; +/* Irish / Gaelic Keyboard Layout (Gaeilge) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ga"] = { + "name":"Irish / Gaelic (Gaeilge)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{s} \\ z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00AC ! \" \u00A3 $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{s} | Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u00A6 {empty} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u00E9 {empty} {empty} \u00FD \u00FA \u00ED \u00F3 {empty} {empty} {empty} {empty}", + "\u00E1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B4 {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u00A6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u00C9 {empty} {empty} \u00DD \u00DA \u00CD \u00D3 {empty} {empty} {empty} {empty}", + "\u00C1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ga","gd"] +}; +/* Italian Keyboard Layout (Italiano) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["it"] = { + "name":"Italian (Italiano)", + "normal":[ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00ec {b}", + "{t} q w e r t y u i o p \u00e8 + \u00f9", + "a s d f g h j k l \u00f2 \u00e0 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "| ! \" \u00a3 $ % & / ( ) = ? ^ {b}", + "{t} Q W E R T Y U I O P \u00e9 * \u00a7", + "A S D F G H J K L \u00e7 \u00b0 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} @ # {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["it"] +}; +/* Japanese Hiragana/Katakana Keyboard Layout (\u65e5\u672c\u8a9e) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ja"] = { + "name":"Japanese Hiragana/Katakana (\u65e5\u672c\u8a9e)", + "normal":[ + "\uff5e \u306c \u3075 \u3042 \u3046 \u3048 \u304a \u3084 \u3086 \u3088 \u308f \u307b \u3078 {b}", + "{t} \u305f \u3066 \u3044 \u3059 \u304b \u3093 \u306a \u306b \u3089 \u305b \u3001 \u3002 \uffe5 \u309B", + "\u3061 \u3068 \u3057 \u306f \u304d \u304f \u307e \u306e \u308c \u3051 \u3080 {enter}", + "{s} \u3064 \u3055 \u305d \u3072 \u3053 \u307f \u3082 \u306d \u308b \u3081 \u308d {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "{empty} \u30cc \u30d5 \u30a2 \u30a6 \u30a8 \u30aa \u30e4 \u30e6 \u30e8 \u30ef \u30db \u30d8 {b}", + "{t} \u30bf \u30c6 \u30a4 \u30b9 \u30ab \u30f3 \u30ca \u30cb \u30e9 \u30bb \u3001 \u3002 {empty} \"", + "\u30c1 \u30c8 \u30b7 \u30cf \u30ad \u30af \u30de \u30ce \u30ec \u30b1 \u30e0 {enter}", + "{s} \u30c4 \u30b5 \u30bd \u30d2 \u30b3 \u30df \u30e2 \u30cd \u30eb \u30e1 \u30ed {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} \u3041 \u3045 \u3047 \u3049 \u3083 \u3085 \u3087 \u3092 \u30fc \uff3e {b}", + "{t} {empty} {empty} \u3043 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \uff20 \u300c {empty} \uffe5", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \uff1b \uff1a \u300d {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u3001 \u3002 \u30fb {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} \u30a1 \u30a5 \u30a7 \u30a9 \u30e3 \u30e5 \u30e7 \u30f2 \uff1d \uff5e {b}", + "{t} {empty} {empty} \u30a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u2018 \uff5b \uff0a \uff5c", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \uff0b \u30f6 \uff5d {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \uff1c \uff1e \uff1f \uff3f {s}", + "{space} {alt} {accept}" + ], + "lang":["ja"] +}; +/* Kannada Keyboard Layout (\u0c95\u0ca8\u0ccd\u0ca8\u0ca1) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["kn"] = { + "name":"Kannada (\u0c95\u0ca8\u0ccd\u0ca8\u0ca1)", + "normal":[ + "\u0CCA 1 2 3 4 5 6 7 8 9 0 - \u0CC3 {b}", + "{t} \u0CCC \u0CC8 \u0CBE \u0CC0 \u0CC2 \u0CAC \u0CB9 \u0C97 \u0CA6 \u0C9C \u0CA1 {enter}", + "\u0CCB \u0CC7 \u0CCD \u0CBF \u0CC1 \u0CAA \u0CB0 \u0C95 \u0CA4 \u0C9A \u0C9F {empty}", + "{s} \u0CC6 \u0C82 \u0CAE \u0CA8 \u0CB5 \u0CB2 \u0CB8 , . \u0CAF {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0C92 {empty} {empty} \u0CCD\u0CB0 \u0CB0\u0CCD \u0C9C\u0CCD\u0C9E \u0CA4\u0CCD\u0CB0 \u0C95\u0CCD\u0CB7 \u0CB6\u0CCD\u0CB0 ( ) \u0C83 \u0C8B {b}", + "{t} \u0C94 \u0C90 \u0C86 \u0C88 \u0C8A \u0CAD \u0C99 \u0C98 \u0CA7 \u0C9D \u0CA2 {enter}", + "\u0C93 \u0C8F \u0C85 \u0C87 \u0C89 \u0CAB \u0CB1 \u0C96 \u0CA5 \u0C9B \u0CA0 \u0C9E", + "{s} \u0C8F {empty} \u0CA3 {empty} {empty} \u0CB3 \u0CB6 \u0CB7 | {empty} {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u0CE7 \u0CE8 \u0CE9 \u0CEA \u0CEB \u0CEC \u0CED \u0CEE \u0CEF \u0CE6 {empty} \u0CC4 {b}", + "{t} {empty} \u0CD6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} \u0CD5 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0CE0 {b}", + "{t} {empty} {empty} {empty} \u0CE1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} \u0C8C {empty} \u0CDE {empty} {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["kn"] +}; +/* Kazakh Keyboard Layout (\u049a\u0430\u0437\u0430\u049b\u0448\u0430) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["kk"] = { + "name":"Kazakh (\u049a\u0430\u0437\u0430\u049b\u0448\u0430)", + "normal":[ + "( \" \u04d9 \u0456 \u04a3 \u0493 , . \u04af \u04b1 \u049b \u04e9 \u04bb {b}", + "{t} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u0449 \u0437 \u0445 \u044A \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u044D {enter}", + "{s} \\ \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E \u2116 {s}", + "{space} {accept}" + ], + "shift":[ + ") ! \u04d8 \u0406 \u04a2 \u0492 ; : \u04ae \u04b0 \u049a \u04e8 \u04ba {b}", + "{t} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u0429 \u0417 \u0425 \u042A /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u042D {enter}", + "{s} | \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E ? {s}", + "{space} {accept}" + ], + "lang":["kk"] +}; +/* Khmer Keyboard Layout (\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["km"] = { + "name":"Khmer (\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a)", + "normal":[ + "\u00AB \u17E1 \u17E2 \u17E3 \u17E4 \u17E5 \u17E6 \u17E7 \u17E8 \u17E9 \u17E0 \u17A5 \u17B2 {b}", + "{t} \u1786 \u17B9 \u17C1 \u179A \u178F \u1799 \u17BB \u17B7 \u17C4 \u1795 \u17C0 \u17AA \u17AE", + "\u17B6 \u179F \u178A \u1790 \u1784 \u17A0 \u17D2 \u1780 \u179B \u17BE \u17CB {enter}", + "{s} \u178B \u1781 \u1785 \u179C \u1794 \u1793 \u1798 \u17BB\u17C6 \u17D4 \u17CA {s}", + "{ZWSP} {space} {alt} {accept}" + ], + "shift":[ + "\u00BB ! \u17D7 \" \u17DB % \u17CD \u17D0 \u17CF ( ) \u17CC = {b}", + "{t} \u1788 \u17BA \u17C2 \u17AC \u1791 \u17BD \u17BC \u17B8 \u17C5 \u1797 \u17BF \u17A7 \u17AD", + "\u17B6\u17C6 \u17C3 \u178C \u1792 \u17A2 \u17C7 \u1789 \u1782 \u17A1 \u17C4\u17C7 \u17C9 {enter}", + "{s} \u178D \u1783 \u1787 \u17C1\u17C7 \u1796 \u178E \u17C6 \u17BB\u17C7 \u17D5 ? {s}", + "{empty} {space} {alt} {accept}" + ], + "alt":[ + "{ZWJ} {ZWNJ} @ \u17D1 $ \u20AC \u17D9 \u17DA * { } x \u17CE {b}", + "{t} \u17DC \u17DD \u17AF \u17AB \u17A8 \u1799\u17BE\u1784 {empty} \u17A6 \u17B1 \u17B0 \u17A9 \u17B3 \\", + "\u17B5 {empty} \u17D3 {empty} \u17A4 \u17A3 \u17B4 \u179D \u17D8 \u17D6 \u17C8 {enter}", + "{s} | \u1781\u17D2\u1789\u17BB\u17C6 - + \u179E [ ] , . / {s}", + "{NBSP} {space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} \u17F1 \u17F2 \u17F3 \u17F4 \u17F5 \u17F6 \u17F7 \u17F8 \u17F9 \u17F0 {empty} {empty} {b}", + "{t} \u19E0 \u19E1 \u19E2 \u19E3 \u19E4 \u19E5 \u19E6 \u19E7 \u19E8 \u19E9 \u19EA \u19EB {empty}", + "\u19EC \u19ED \u19EE \u19EF \u19F0 \u19F1 \u19F2 \u19F3 \u19F4 \u19F5 \u19F6 {enter}", + "{s} \u19F7 \u19F8 \u19F9 \u19FA \u19FB \u19FC \u19FD \u19FE \u19FF {empty} {s}", + "{empty} {space} {alt} {accept}" + ], + "lang":["km"] +}; +/* Korean Keyboard Layout (\ud55c\uad6d\uc5b4) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ko"] = { + "name":"Korean (\ud55c\uad6d\uc5b4)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = \u20A9 {b}", + "{t} \u1107 \u110C \u1103 \u1100 \u1109 \u116D \u1167 \u1163 \u1162 \u1166 [ ]", + "\u1106 \u1102 \u110B \u1105 \u1112 \u1169 \u1165 \u1161 \u1175 ; ' {enter}", + "{s} \u110F \u1110 \u110E \u1111 \u1172 \u116E \u1173 , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ) ( _ + | {b}", + "{t} \u1108 \u110D \u1104 \u1101 \u110A {empty} {empty} {empty} \u1164 \u1168 { }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` 1 2 3 4 5 6 7 8 9 0 - = \u20A9 {b}", + "{t} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "~ ! @ # $ % ^ & * ) ( _ + | {b}", + "{t} Q W E R T Y U I O P { }", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "lang":["ko"] +}; +/* Kurdish Keyboard Layout (Kurd\u00ee) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ku"] = { + "name":"Kurdish (Kurd\u00ee)", + "rtl":true, + "normal":[ + "\u20ac \u0661 \u0662 \u0663 \u0664 \u0665 \u0666 \u0667 \u0668 \u0669 \u0660 - = {b}", + "{t} \u0642 \u0648 \u06d5 \u0631 \u062a \u06cc \u0626 \u062d \u06c6 \u067e [ ] \\", + "\u0627 \u0633 \u062f \u0641 \u06af \u0647 \u0698 \u06a9 \u0644 \u061b ' {enter}", + "{s} \u0632 \u062e \u062c \u06a4 \u0628 \u0646 \u0645 \u060c . / {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} ` \u0648\u0648 \u064a \u0695 \u0637 \u06ce \u0621 \u0639 \u0624 \u062b { } |", + "\u0622 \u0634 \u0630 \u0625 \u063a {ZWNJ} \u0623 \u0643 \u06b5 : \" {enter}", + "{s} \u0636 \u0635 \u0686 \u0638 \u0649 \u0629 \u0640 < > \u061f {s}", + "{space} {accept}" + ], + "lang":["ku"] +}; +/* Kyrgyz Keyboard Layout (\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ky"] = { + "name":"Kyrgyz (\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430)", + "normal":[ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u0449 \u0437 \u0445 \u044A \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u044D {enter}", + "{s} \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E . {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {b}", + "{t} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u0429 \u0417 \u0425 \u042A /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u042D {enter}", + "{s} \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E , {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u04AF {empty} {empty} \u04A3 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} \u04E9 {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u04AE {empty} {empty} \u04A2 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} \u04E8 {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ky"] +}; +/* Latvian Keyboard Layout (Latvie\u0161u) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["lv"] = { + "name":"Latvian (Latvie\u0161u)", + "normal":[ + "\u00AD 1 2 3 4 5 6 7 8 9 0 - f {b}", + "{t} \u016B g j r m v n z \u0113 \u010D \u017E h \u0137", + "\u0161 u s i l d a t e c \u00B4 {enter}", + "{s} \u0146 b \u012B k p o \u0101 , . \u013C {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "? ! \u00AB \u00BB $ % / & \u00D7 ( ) _ F {b}", + "{t} \u016A G J R M V N Z \u0112 \u010C \u017D H \u0136", + "\u0160 U S I L D A T E C \u00B0 {enter}", + "{s} \u0145 B \u012A K P O \u0100 ; : \u013B {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00AB {empty} {empty} \u20AC \" \u2019 {empty} : {empty} {empty} \u2013 = {b}", + "{t} q \u0123 {empty} \u0157 w y {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u20AC {empty} \u00B4 {enter}", + "{s} {empty} x {empty} \u0137 {empty} \u00F5 {empty} < > {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} @ # $ ~ ^ \u00B1 {empty} {empty} {empty} \u2014 ; {b}", + "{t} Q \u0122 {empty} \u0156 W Y {empty} {empty} {empty} {empty} { } {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A8 {enter}", + "{s} {empty} X {empty} \u0136 {empty} \u00D5 {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["lv"] +}; +/* Lithuanian Keyboard Layout (Lietuvi\u0173) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["lt"] = { + "name":"Lithuanian (Lietuvi\u0173)", + "normal":[ + "` \u0105 \u010D \u0119 \u0117 \u012F \u0161 \u0173 \u016B \u201E \u201C - \u017E {b}", + "{t} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{s} \u2013 z x c v b n m , . / {s}", + "{space} {accept}" + ], + "shift":[ + "~ \u0104 \u010C \u0118 \u0116 \u012E \u0160 \u0172 \u016A ( ) _ \u017D {b}", + "{t} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{s} \u20AC Z X C V B N M < > ? {s}", + "{space} {accept}" + ], + "lang":["lt"] +}; +/* Macedonian Cyrillic Keyboard Layout (\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["mk"] = { + "name":"Macedonian Cyrillic (\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0459 \u045A \u0435 \u0440 \u0442 \u0455 \u0443 \u0438 \u043E \u043F \u0448 \u0453 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043A \u043B \u0447 \u045C {enter}", + "{s} \u0451 \u0437 \u045F \u0446 \u0432 \u0431 \u043D \u043C , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! \u201E \u201C \u2019 % \u2018 & * ( ) _ + {b}", + "{t} \u0409 \u040A \u0415 \u0420 \u0422 \u0405 \u0423 \u0418 \u041E \u041F \u0428 \u0403 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041A \u041B \u0427 \u040C {enter}", + "{s} \u0401 \u0417 \u040F \u0426 \u0412 \u0411 \u041D \u041C ; : ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0402 \u0452 {empty}", + "{empty} {empty} {empty} [ ] {empty} {empty} {empty} {empty} \u040B \u045B {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["mk"] +}; +/* Malayalam Keyboard Layout (\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ml"] = { + "name":"Malayalam (\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02)", + "rtl":true, + "normal":[ + "\u0D4A 1 2 3 4 5 6 7 8 9 0 - \u0D43 {b}", + "{t} \u0D4C \u0D48 \u0D3E \u0D40 \u0D42 \u0D2C \u0D39 \u0D17 \u0D26 \u0D1C \u0D21 {empty}", + "\u0D4B \u0D47 \u0D4D \u0D3F \u0D41 \u0D2A \u0D30 \u0D15 \u0D24 \u0D1A \u0D1F {enter}", + "{s} \u0D46 \u0D02 \u0D2E \u0D28 \u0D35 \u0D32 \u0D38 , . \u0D2F {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0D12 {empty} {empty} \u0D4D\u0D30 {empty} {empty} {empty} \u0D15\u0D4D\u0D37 {empty} ( ) \u0D03 \u0D0B {b}", + "{t} \u0D14 \u0D10 \u0D06 \u0D08 \u0D0A \u0D2D \u0D19 \u0D18 \u0D27 \u0D1D \u0D22 \u0D1E", + "\u0D13 \u0D0F \u0D05 \u0D07 \u0D09 \u0D2B \u0D31 \u0D16 \u0D25 \u0D1B \u0D20 {enter}", + "{s} \u0D0F {empty} \u0D23 {empty} \u0D34 \u0D33 \u0D36 \u0D37 {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u0D67 \u0D68 \u0D69 \u0D6A \u0D6B \u0D6C \u0D6D \u0D6E \u0D6F \u0D66 {empty} {empty} {b}", + "{t} \u0D57 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0D60 {b}", + "{t} {empty} {empty} {empty} \u0D61 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} \u0D0C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ml"] +}; +/* Maltese 48 Keyboard Layout (Malti) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["mt"] = { + "name":"Maltese 48 (Malti)", + "normal":[ + "\u010B 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p \u0121 \u0127 #", + "a s d f g h j k l ; ' {enter}", + "{s} \u017c z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u010A ! \" \u20ac $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P \u0120 \u0126 \u017e", + "A S D F G H J K L : @ {enter}", + "{s} \u017b Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` {empty} {empty} \u00A3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u00E8 {empty} {empty} {empty} \u00F9 \u00EC \u00F2 {empty} [ ] {empty}", + "\u00E0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u00C8 {empty} {empty} {empty} \u00D9 \u00cc \u00D2 {empty} { } {empty}", + "\u00C0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {s}", + "{space} {alt} {accept}" + ], + "lang":["mt"] +}; +/* Marathi Keyboard Layout (\u092e\u0930\u093e\u0920\u0940) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["mr"] = { + "name":"Marathi (\u092e\u0930\u093e\u0920\u0940)", + "normal":[ + "{empty} \u0967 \u0968 \u0969 \u096A \u096B \u096C \u096D \u096E \u096F \u0966 - \u0943 {b}", + "{t} \u094C \u0948 \u093E \u0940 \u0942 \u092C \u0939 \u0917 \u0926 \u091C \u0921 \u093C \u0949", + "\u094B \u0947 \u094D \u093F \u0941 \u092A \u0930 \u0915 \u0924 \u091A \u091F {enter}", + "{s} {empty} \u0902 \u092E \u0928 \u0935 \u0932 \u0938 , . \u092F {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "{empty} \u090D \u0945 \u094D\u0930 \u0930\u094D \u091C\u094D\u091E \u0924\u094D\u0930 \u0915\u094D\u0937 \u0936\u094D\u0930 ( ) \u0903 \u090B {b}", + "{t} \u0914 \u0910 \u0906 \u0908 \u090A \u092D \u0919 \u0918 \u0927 \u091D \u0922 \u091E \u0911", + "\u0913 \u090F \u0905 \u0907 \u0909 \u092B \u0931 \u0916 \u0925 \u091B \u0920 {enter}", + "{s} {empty} \u0901 \u0923 {empty} {empty} \u0933 \u0936 \u0937 \u0964 \u095F {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; ' {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} , . / {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{s} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} < > ? {s}", + "{space} {alt} {accept}" + ], + "lang":["mr"] +}; +/* Mongolian Cyrillic Keyboard Layout (\u041c\u043e\u043d\u0433\u043e\u043b) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["mn"] = { + "name":"Mongolian Cyrillic (\u041c\u043e\u043d\u0433\u043e\u043b)", + "normal":[ + "= \u2116 - \" \u20AE : . _ , % ? \u0435 \u0449 {b}", + "{t} \u0444 \u0446 \u0443 \u0436 \u044d \u043D \u0433 \u0448 \u04af \u0437 \u043A \u044A \\", + "\u0439 \u044B \u0431 \u04e9 \u0430 \u0445 \u0440 \u043e \u043B \u0434 \u043f {enter}", + "{s} \u044F \u0447 \u0451 \u0441 \u043c \u0438 \u0442 \u044c \u0432 \u044e {s}", + "{space} {accept}" + ], + "shift":[ + "+ 1 2 3 4 5 6 7 8 9 0 \u0415 \u0429 {b}", + "{t} \u0424 \u0426 \u0423 \u0416 \u042d \u041D \u0413 \u0428 \u04AE \u0417 \u041a \u042A |", + "\u0419 \u042B \u0411 \u04e8 \u0410 \u0425 \u0420 \u041e \u041b \u0414 \u041f {enter}", + "{s} \u042F \u0427 \u0401 \u0421 \u041c \u0418 \u0422 \u042c \u0412 \u042e {s}", + "{space} {accept}" + ], + "lang":["mn"] +}; +/* Norwegian Keyboard Layout (Norsk) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["no"] = { + "name":"Norwegian (Norsk)", + "normal":[ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {b}", + "{t} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00f8 \u00e6 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {b}", + "{t} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00d8 \u00c6 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00a3 $ {empty} {empty} { [ ] } {empty} \u00b4 {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u03bc {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u039c {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["no", + "nb", + "nn"] +}; +/* Pashto Keyboard Layout (\u067e\u069a\u062a\u0648) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ps"] = { + "name":"Pashto (\u067e\u069a\u062a\u0648)", + "rtl":true, + "normal":[ + "{ZWJ} \u06f1 \u06f2 \u06f3 \u06f4 \u06f5 \u06f6 \u06f7 \u06f8 \u06f9 \u06f0 - = {b}", + "{t} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \\", + "\u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u06a9 \u06af {enter}", + "{s} \u0638 \u0637 \u0632 \u0631 \u0630 \u062f \u0693 \u0648 \u0696 / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00f7 ! \u066c \u066b \u00a4 \u066a \u00d7 \u00ab \u00bb ( ) \u0640 + {b}", + "{t} \u0652 \u064c \u064d \u064b \u064f \u0650 \u064e \u0651 \u0681 \u0685 ] [ \u066d", + "\u069a \u06cd \u064a \u067e \u0623 \u0622 \u067c \u06bc \u0629 : \u061b {enter}", + "{s} \u0626 \u06d0 \u0698 \u0621 {ZWNJ} \u0689 \u0624 \u060c . \u061f {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` ` @ \u066b \u00a3 % ^ & * \ufdf2 \ufefb _ \ufe87 {b}", + "{t} \u06d5 \u0653 \u20ac \ufef7 \ufef5 ' \ufe84 \u0670 ' \" } { |", + "\ufbb0 \u06d2 \u06d2 \u06ba \u06b7 \u0671 \u0679 < > \u0643 \u06ab {enter}", + "{s} ? ; \u0655 \u0654 \u0625 \u0688 \u0691 , \u06c7 \u06c9 \u064d {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ps"] +}; +/* Pinyin Keyboard Layout (\u62fc\u97f3 (Pinyin)) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["zh-Latn"] = { + "name":"Pinyin (\u62fc\u97f3)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u4e93 \uFF62 \uFF63 \u301D \u301E \u301F \u3008 \u3009 \u302F \u300A \u300B \u300E \u300F {b}", + "{t} \u0101 \u00E1 \u01CE \u00E0 \u0113 \u00E9 \u011B \u00E8 \u012B \u00ED \u01D0 \u00EC \u3020", + "\u014D \u00F3 \u01D2 \u00F2 \u00fc \u016B \u00FA \u01D4 \u00F9 {empty} {empty} {enter}", + "{s} \u01D6 \u01D8 \u01DA \u01DC {empty} {empty} {empty} \u3001 \u3002 {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u301C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} \u0100 \u00C1 \u01CD \u00C0 \u0112 \u00C9 \u011A \u00C8 \u012A \u00CD \u01CF \u00CC {empty}", + "\u014C \u00D3 \u01D1 \u00D2 \u00dc \u016A \u00DA \u01D3 \u00D9 {empty} {empty} {enter}", + "{s} \u01D5 \u01D7 \u01D9 \u01DB {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["zh-Latn"] +}; +/* Polish (214) Keyboard Layout (Polski) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["pl"] = { + "name":"Polish (214) (Polski)", + "normal":[ + "\u02DB 1 2 3 4 5 6 7 8 9 0 + ' {b}", + "{t} q w e r t z u i o p \u017C \u015B \u00F3", + "a s d f g h j k l \u0142 \u0105 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00B7 ! \" # \u00A4 % & / ( ) = ? * {b}", + "{t} Q W E R T Z U I O P \u0144 \u0107 \u017A", + "A S D F G H J K L \u0141 \u0119 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u00B7 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ \u00A6 {empty} {empty} {empty} {empty} \u20AC {empty} {empty} {empty} \u00F7 \u00D7 {empty}", + "{empty} \u0111 \u0110 {empty} {empty} {empty} {empty} {empty} {empty} $ \u00DF {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 < > {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["pl"] +}; +/* Polish Programmers Keyboard Layout (Polski Programisty) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["pl-pr"] = { + "name":"Polish Programmers (Polski Programisty)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u0119 {empty} {empty} {empty} {empty} {empty} \u00f3 {empty} {empty} {empty} {empty}", + "\u0105 \u015b {empty} {empty} {empty} {empty} {empty} {empty} \u0142 {empty} {empty} {enter}", + "{s} \u017c \u017a \u0107 {empty} {empty} \u0144 {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u0118 {empty} {empty} {empty} {empty} {empty} \u00d3 {empty} {empty} {empty} {empty}", + "\u0104 \u015a {empty} {empty} {empty} {empty} {empty} {empty} \u0141 {empty} {empty} {enter}", + "{s} \u017b \u0179 \u0106 {empty} {empty} \u0143 {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["pl-pr"] +}; +/* Portuguese (Brazil) Keyboard Layout (Portugu\u00eas Brasileiro) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["pt-BR"] = { + "name":"Portuguese (Brazil) (Portugu\u00eas Brasileiro)", + "normal":[ + "' 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p \u00b4 [ {enter}", + "a s d f g h j k l \u00e7 ~ ] /", + "{s} \\ z x c v b n m , . : {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\" ! @ # $ % \u00a8 & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P ` { {enter}", + "A S D F G H J K L \u00c7 ^ } ?", + "{s} | Z X C V B N M < > : {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00b9 \u00b2 \u00b3 \u00a3 \u00a2 \u00ac {empty} {empty} {empty} {empty} {empty} \u00a7 {b}", + "{t} / ? \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00aa {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00ba {empty}", + "{s} {empty} {empty} {empty} \u20a2 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["pt-BR"] +}; +/* Portuguese Keyboard Layout (Portugu\u00eas) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["pt"] = { + "name":"Portuguese (Portugu\u00eas)", + "normal":[ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00ab {b}", + "{t} q w e r t y u i o p + \u00b4 ~", + "a s d f g h j k l \u00e7 \u00ba {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "| ! \" # $ % & / ( ) = ? \u00bb {b}", + "{t} Q W E R T Y U I O P * ` ^", + "A S D F G H J K L \u00c7 \u00aa {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00a3 \u00a7 {empty} {empty} { [ ] } {empty} {empty} {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a8 {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["pt"] +}; +/* Punjabi (Gurmukhi) Keyboard Layout (\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["pa"] = { + "name":"Punjabi (Gurmukhi) (\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40)", + "rtl":true, + "normal":[ + "1 2 3 4 5 6 7 8 9 0 - {b}", + "{t} \u0A4C \u0A48 \u0A3E \u0A40 \u0A42 \u0A2C \u0A39 \u0A17 \u0A26 \u0A1C \u0A21 {enter}", + "\u0A4B \u0A47 \u0A4D \u0A3F \u0A41 \u0A2A \u0A30 \u0A15 \u0A24 \u0A1A \u0A1F \u0A3C", + "{s} \u0A02 \u0A2E \u0A28 \u0A35 \u0A32 \u0A38 , . \u0A2F {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0A4D\u0A35 \u0A4D\u0A2F \u0A4D\u0A30 \u0A71 {empty} {empty} {empty} {empty} ( ) {empty} {b}", + "{t} \u0A14 \u0A10 \u0A06 \u0A08 \u0A0A \u0A2D \u0A19 \u0A18 \u0A27 \u0A1D \u0A22 {enter}", + "\u0A13 \u0A0F \u0A05 \u0A07 \u0A09 \u0A2B {empty} \u0A16 \u0A25 \u0A1B \u0A20 \u0A1E", + "{s} \u0A02 \u0A23 {empty} \u0A72 \u0A33 \u0A36 {empty} | {empty} {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u0A67 \u0A68 \u0A69 \u0A6A \u0A6B \u0A6C \u0A6D \u0A6E \u0A6F \u0A66 {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0A5A {empty} \u0A5B \u0A5C {enter}", + "{empty} {empty} {empty} {empty} {empty} \u0A5E {empty} \u0A59 {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} \u0A73 {empty} {empty} {empty} \u0965 {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u0A67 \u0A68 \u0A69 \u0A6A \u0A6B \u0A6C \u0A6D \u0A6E \u0A6F \u0A66 {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0A5A {empty} \u0A5B \u0A5C {enter}", + "{empty} {empty} {empty} {empty} {empty} \u0A5E {empty} \u0A59 {empty} {empty} {empty} {empty}", + "{s} {empty} {empty} {empty} \u0A73 {empty} {empty} {empty} \u0965 {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["pa"] +}; +/* Romanian Keyboard Layout (Rom\u00e2n\u0103) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ro"] = { + "name":"Romanian (Rom\u00e2n\u0103)", + "normal":[ + "\u201E 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p \u0103 \u00EE \u00E2", + "a s d f g h j k l \u0219 \u021B {enter}", + "{s} \\ z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u201D ! @ # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P \u0102 \u00CE \u00C2", + "A S D F G H J K L \u0218 \u021A {enter}", + "{s} | Z X C V B N M ; : ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} \u00A7 [ ] \\", + "{empty} \u00df \u00f0 {empty} {empty} {empty} {empty} {empty} \u0142 ; ' {enter}", + "{s} {empty} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} < > {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B1 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} \u00D0 {empty} {empty} {empty} {empty} {empty} \u0141 : \" {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00AB \u00BB {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ro"] +}; +/* Russian Keyboard Layout (\u0420\u0443\u0441\u0441\u043a\u0438\u0439) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ru"] = { + "name":"Russian (\u0420\u0443\u0441\u0441\u043a\u0438\u0439)", + "normal":[ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u0449 \u0437 \u0445 \u044A \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u044D {enter}", + "{s} / \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E . {s}", + "{space} {accept}" + ], + "shift":[ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {b}", + "{t} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u0429 \u0417 \u0425 \u042A /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u042D {enter}", + "{s} | \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E , {s}", + "{space} {accept}" + ], + "lang":["ru"] +}; +/* Serbian Cyrillic Keyboard Layout (\u0441\u0440\u043f\u0441\u043a\u0438) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sr-Cyrl"] = { + "name":"Serbian Cyrillic (\u0441\u0440\u043f\u0441\u043a\u0438)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 ' + {b}", + "{t} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{s} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! \" # $ % & / ( ) = ? * {b}", + "{t} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{s} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > \u00a9 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["sr-Cyrl"] +}; +/* Serbian Latin Keyboard Layout (Srpski) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sr"] = { + "name":"Serbian Latin (Srpski)", + "normal":[ + "\u00B8 1 2 3 4 5 6 7 8 9 0 ' + {b}", + "{t} q w e r t z u i o p \u0161 \u0111 \u017E", + "a s d f g h j k l \u010D \u0107 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00A8 ! \" # $ % & / ( ) = ? * {b}", + "{t} Q W E R T Z U I O P \u0160 \u0110 \u017D", + "A S D F G H J K L \u010C \u0106 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ | \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 \u00D7 \u00A4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00DF {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 < > \u00A9 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["sr"] +}; +/* Slovak Keyboard Layout (Sloven\u010dina) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sk"] = { + "name":"Slovak (Sloven\u010dina)", + "normal":[ + "; + \u013E \u0161 \u010D \u0165 \u017E \u00FD \u00E1 \u00ED \u00E9 = \u00B4 {b}", + "{t} q w e r t z u i o p \u00FA \u00E4 \u0148", + "a s d f g h j k l \u00F4 \u00A7 {enter}", + "{s} & y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {b}", + "{t} Q W E R T Z U I O P / ( )", + "A S D F G H J K L \" ! {enter}", + "{s} * Y X C V B N M ? : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ | \u20AC {empty} {empty} {empty} {empty} {empty} {empty} ' \u00F7 \u00D7 \u00A4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00DF {enter}", + "{s} < > # & @ { } {empty} < > * {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["sk"] +}; +/* Slovenian Keyboard Layout (Sloven\u0161\u010dina) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sl"] = { + "name":"Slovenian (Sloven\u0161\u010dina)", + "normal":[ + "\u00B8 1 2 3 4 5 6 7 8 9 0 ' + {b}", + "{t} q w e r t z u i o p \u0161 \u0111 \u017E", + "a s d f g h j k l \u010D \u0107 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00A8 ! \" # $ % & / ( ) = ? * {b}", + "{t} Q W E R T Z U I O P \u0160 \u0110 \u017D", + "A S D F G H J K L \u010C \u0106 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {b}", + "{t} \\ | \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 \u00D7 \u00A4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00DF {enter}", + "{s} {empty} {empty} {empty} {empty} @ { } \u00A7 < > \u00A9 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["sl"] +}; +/* Spanish Keyboard Layout (Espa\u00f1ol) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["es"] = { + "name":"Spanish (Espa\u00f1ol)", + "normal":[ + "\u00ba 1 2 3 4 5 6 7 8 9 0 ' \u00a1 {b}", + "{t} q w e r t y u i o p ` + \u00e7", + "a s d f g h j k l \u00f1 \u00b4 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00aa ! \" ' $ % & / ( ) = ? \u00bf {b}", + "{t} Q W E R T Y U I O P ^ * \u00c7", + "A S D F G H J K L \u00d1 \u00a8 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\\ | @ # ~ \u20ac \u00ac {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["es"] +}; +/* Swedish Keyboard Layout (Svenska) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sv"] = { + "name":"Swedish (Svenska)", + "normal":[ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {b}", + "{t} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{s} < z x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00bd ! \" # \u00a4 % & / ( ) = ? ` {b}", + "{t} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{s} > Z X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {b}", + "{t} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} | {empty} {empty} {empty} {empty} {empty} {empty} \u03bc {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u039c {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["sv"] +}; +/* Swiss French Keyboard Layout (Swiss Fran\u00e7ais) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["fr-CH"] = { + "name":"Swiss French (Swiss Fran\u00e7ais)", + "normal":[ + "\u00A7 1 2 3 4 5 6 7 8 9 0 ' ^ {b}", + "{t} q w e r t z u i o p \u00E8 \u00A8 $", + "a s d f g h j k l \u00E9 \u00E0 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00B0 + \" * \u00E7 % & / ( ) = ? ` {b}", + "{t} Q W E R T Z U I O P \u00FC ! \u00A3", + "A S D F G H J K L \u00F6 \u00E4 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00A6 @ # \u00B0 \u00A7 \u00AC | \u00A2 {empty} {empty} \u00B4 ~ {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["fr-CH"] +}; +/* Swiss German Keyboard Layout (Schweizerdeutsch) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["de-CH"] = { + "name":"Swiss German (Schweizerdeutsch)", + "normal":[ + "\u00A7 1 2 3 4 5 6 7 8 9 0 ' ^ {b}", + "{t} q w e r t z u i o p \u00FC \u00A8 $", + "a s d f g h j k l \u00F6 \u00E4 {enter}", + "{s} < y x c v b n m , . - {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00B0 + \" * \u00E7 % & / ( ) = ? ` {b}", + "{t} Q W E R T Z U I O P \u00E8 ! \u00A3", + "A S D F G H J K L \u00E9 \u00E0 {enter}", + "{s} > Y X C V B N M ; : _ {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00A6 @ # \u00B0 \u00A7 \u00AC | \u00A2 {empty} {empty} \u00B4 ~ {b}", + "{t} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { {enter}", + "{s} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["de-CH"] +}; +/* Symbols Keyboard Layout (Symbols) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["??-symbols"] = { + "name":"Symbols", + "normal":[ + "\u2605 \u2648 \u2649 \u264a \u264b \u264c \u264d \u264e \u264f \u2650 \u2651 \u2652 \u2653 {b}", + "\u263f \u2640 \u2641 \u2642 \u2643 \u2644 \u2645 \u2646 \u2647 \u2669 \u266a \u266b \u266c \u26f9 \u267f", + "{t} \u261e \u261b \u2602 \u2615 \u263a \u2617 \u2660 \u2664 \u26c2 \u2624 \u2610 \u2628 \u262a \u26fa", + "\u262f \u263c \u26c4 \u26a0 \u26e4 \u260a \u269c \u26b3 \u26b7 \u26b9 \u26bd {enter}", + "{s} \u2600 \u2691 \u26cb \u26cf \u26d3 \u26da \u26df \u26e3 \u26eb \u26ef \u26f4 {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u2606 \u2673 \u2674 \u2675 \u2676 \u2677 \u2678 \u2679 \u267a \u267b \u267c \u267d \u2672 {b}", + "\u2680 \u2681 \u2682 \u2683 \u2684 \u2685 \u2620 \u2622 \u2623 \u266d \u266e \u266f \u2607 \u2608 \u262e", + "{t} \u261c \u261a \u2614 \u2668 \u2639 \u2616 \u2663 \u2667 \u26c0 \u2625 \u2611 \u2626 \u262b \u26fb", + "\u2670 \u2699 \u2603 \u26a1 \u26e5 \u260b \u269b \u26b4 \u26bf \u26ba \u26be {enter}", + "{s} \u2601 \u2690 \u26cc \u26d0 \u26d5 \u26db \u26e0 \u26e8 \u26ec \u26f0 \u26f5 {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u260e \u2659 \u2658 \u2657 \u2656 \u2655 \u2654 \u265f \u265e \u265d \u265c \u265b \u265a {b}", + "\u268a \u268b \u268c \u268d \u268e \u268f \u26ff \u2692 \u2693 \u2694 \u2695 \u2696 \u2697 \u2698 \u2638", + "{t} \u261d \u2618 \u26f1 \u26fe \u263b \u26ca \u2665 \u2661 \u26c3 \u269a \u2612 \u2627 \u262c \u26fc", + "\u2671 \u263d \u26c7 \u2621 \u26e6 \u260c \u269d \u26b5 \u26b8 \u26bb \u269f {enter}", + "{s} \u26c5 \u26ab \u26cd \u26d1 \u26d6 \u26dd \u26e1 \u26e9 \u26ed \u26f2 \u26f6 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u260f \u2630 \u2631 \u2632 \u2633 \u2634 \u2635 \u2636 \u2637 \u2686 \u2687 \u2688 \u2689 {b}", + "\u26a2 \u26a3 \u26a4 \u26a5 \u26a6 \u26a7 \u26a8 \u26a9 \u26b2 \u26ac \u26ad \u26ae \u26af \u26b0 \u2609", + "{t} \u261f \u2619 \u26d9 \u26d8 \u26dc \u26c9 \u2666 \u2662 \u26c1 \u26b1 \u2613 \u2629 \u262d \u26fd", + "\u267e \u263e \u26c6 \u26d4 \u26e7 \u260d \u2604 \u26b6 \u26f8 \u26bc \u269e {enter}", + "{s} \u26c8 \u26aa \u26ce \u26d2 \u26d7 \u26de \u26e2 \u26ea \u26ee \u26f3 \u26f7 {s}", + "{space} {alt} {accept}" + ], + "lang":["??-symbols"] +}; +/* Syriac Keyboard Layout (\u0723\u0718\u072a\u071d\u071d\u0710) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["syc"] = { + "name":"Syriac (\u0723\u0718\u072a\u071d\u071d\u0710)", + "rtl":true, + "normal":[ + "\u070f 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0714 \u0728 \u0716 \u0729 \u0726 \u071c \u0725 \u0717 \u071e \u071a \u0713 \u0715 \u0706", + "\u072b \u0723 \u071d \u0712 \u0720 \u0710 \u072c \u0722 \u0721 \u071f \u071b {enter}", + "{s} ] [ \u0724 \u072a \u0727 \u0700 . \u0718 \u0719 \u0707 {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u032e ! \u030a \u0325 \u0749 \u2670 \u2671 \u070a \u00bb ) ( \u00ab + {b}", + "{t} \u0730 \u0733 \u0736 \u073A \u073D \u0740 \u0741 \u0308 \u0304 \u0307 \u0303 \u074A :", + "\u0731 \u0734 \u0737 \u073b \u073e \u0711 \u0640 \u0324 \u0331 \u0323 \u0330 {enter}", + "{s} \u0732 \u0735 \u0738 \u073c \u073f \u0739 \u0742 \u060c \u061b \u061F {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u0651 \u0701 \u0702 \u0703 \u0704 \u0705 \u0708 \u0709 \u070B \u070C \u070D \u250C \u2510 {b}", + "{t} \u064E \u064B \u064F \u064C \u0653 \u0654 \u0747 \u0743 \u0745 \u032D {empty} {empty} {empty}", + "\u0650 \u064d {empty} \u0621 \u0655 \u0670 \u0748 \u0744 \u0746 {empty} {empty} {enter}", + "{s} {empty} \u0652 {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u0651 \u0701 \u0702 \u0703 \u0704 \u0705 \u0708 \u0709 \u070B \u070C \u070D \u250C \u2510 {b}", + "{t} \u064E \u064B \u064F \u064C \u0653 \u0654 \u0747 \u0743 \u0745 \u032D {empty} {empty} {empty}", + "\u0650 \u064d {empty} \u0621 \u0655 \u0670 \u0748 \u0744 \u0746 {empty} {empty} {enter}", + "{s} {empty} \u0652 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["syc"] +}; +/* Tamil Keyboard Layout (\u0ba4\u0bae\u0bbf\u0bb4\u0bcd) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ta"] = { + "name":"Tamil (\u0ba4\u0bae\u0bbf\u0bb4\u0bcd)", + "normal":[ + "\u0BCA 1 2 3 4 5 6 7 8 9 0 - {empty} {b}", + "{t} \u0BCC \u0BC8 \u0BBE \u0BC0 \u0BC2 \u0BAA \u0BB9 \u0B95 \u0BA4 \u0B9C \u0B9F \u0B9E", + "\u0BCB \u0BC7 \u0BCD \u0BBF \u0BC1 \u0BAA \u0BB0 \u0B95 \u0BA4 \u0B9A \u0B9F {enter}", + "{s} \u0BC6 {empty} \u0BAE \u0BA8 \u0BB5 \u0BB2 \u0BB8 , . \u0BAF {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0B92 {empty} {empty} {empty} {empty} {empty} \u0BA4\u0BCD\u0BB0 \u0B95\u0BCD\u0BB7 \u0BB7\u0BCD\u0BB0 {empty} {empty} \u0B83 {empty} {b}", + "{t} \u0B94 \u0B90 \u0B86 \u0B88 \u0B8A \u0BAA \u0B99 \u0B95 \u0BA4 \u0B9A \u0B9F {empty}", + "\u0B93 \u0B8F \u0B85 \u0B87 \u0B89 \u0BAA \u0BB1 \u0B95 \u0BA4 \u0B9A \u0B9F {enter}", + "{s} \u0B8E {empty} \u0BA3 \u0BA9 \u0BB4 \u0BB3 \u0BB7 \u0BB7 \u0BB8\u0BCD\u0BB0\u0BC0 \u0BAF {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u0BE7 \u0BE8 \u0BE9 \u0BEA \u0BEB \u0BEC \u0BED \u0BEE \u0BEF \u0BF0 \u0BF1 \u0BF2 {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ta"] +}; +/* Tatar Keyboard Layout (\u0422\u0430\u0442\u0430\u0440\u0447\u0430) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["tt"] = { + "name":"Tatar (\u0422\u0430\u0442\u0430\u0440\u0447\u0430)", + "normal":[ + "\u04BB 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0439 \u04E9 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u04D9 \u0437 \u0445 \u04AF \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u04A3 \u044D {enter}", + "{s} \u0491 \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u0497 \u0431 \u044E . {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u04BA ! \" \u2116 ; % : ? * ( ) _ + {b}", + "{t} \u0419 \u04E8 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u04D8 \u0417 \u0425 \u04AE /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u04A2 \u042D {enter}", + "{s} \u0490 \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u0496 \u0411 \u042E , {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u0451 {empty} @ # $ {empty} {empty} [ ] { } {empty} {empty} {b}", + "{t} {empty} \u0446 {empty} {empty} {empty} {empty} {empty} {empty} \u0449 {empty} {empty} \u044A {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0436 ' {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u044C < > {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "\u0401 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} \u0426 {empty} {empty} {empty} {empty} {empty} {empty} \u0429 {empty} {empty} \u042A {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0416 {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u042C {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["tt"] +}; +/* Telugu Keyboard Layout (\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["te"] = { + "name":"Telugu (\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41)", + "normal":[ + "\u0C4A 1 2 3 4 5 6 7 8 9 0 - \u0C43 {b}", + "{t} \u0C4C \u0C48 \u0C3E \u0C40 \u0C42 \u0C2C \u0C39 \u0C17 \u0C26 \u0C1C \u0C21 {empty}", + "\u0C4B \u0C47 \u0C4D \u0C3F \u0C41 \u0C2A \u0C30 \u0C15 \u0C24 \u0C1A \u0C1F {enter}", + "{s} \u0C46 \u0C02 \u0C2E \u0C28 \u0C35 \u0C32 \u0C38 , . \u0C2F {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u0C12 {empty} {empty} \u0C4D\u0C30 {empty} \u0C1C\u0C4D\u0C1E \u0C24\u0C4D\u0C30 \u0C15\u0C4D\u0C37 \u0C36\u0C4D\u0C30 ( ) \u0C03 \u0C0B {b}", + "{t} \u0C14 \u0C10 \u0C06 \u0C08 \u0C0A {empty} \u0C19 \u0C18 \u0C27 \u0C1D \u0C22 \u0C1E", + "\u0C13 \u0C0F \u0C05 \u0C07 \u0C09 \u0C2B \u0C31 \u0C16 \u0C25 \u0C1B \u0C25 {enter}", + "{s} \u0C0E \u0C01 \u0C23 \u0C28 {empty} \u0C33 \u0C36 \u0C37 {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u0C67 \u0C68 \u0C69 \u0C6A \u0C6B \u0C6C \u0C6D \u0C6E \u0C6F \u0C66 {empty} \u0C44 {b}", + "{t} {empty} \u0C56 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} \u0C55 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} \u0C61 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} \u0C0C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["te"] +}; +/* Thai Kedmanee Keyboard Layout (\u0e44\u0e17\u0e22 Kedmanee) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["th-ked"] = { + "name":"Thai Kedmanee (\u0e44\u0e17\u0e22 Kedmanee)", + "normal":[ + "_ \u0E45 / - \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E15 \u0E08 \u0E02 \u0E0A {b}", + "{t} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{s} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {s}", + "{space} {accept}" + ], + "shift":[ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {b}", + "{t} \u0E50 \" \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 , \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B . {enter}", + "{s} ( ) \u0E09 \u0E2E \u0E3A \u0E4C ? \u0E12 \u0E2C \u0E26 {s}", + "{space} {accept}" + ], + "lang":["th-ked"] +}; +/* Thai Pattachote Keyboard Layout (\u0e44\u0e17\u0e22 Pattachote) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["th-pat"] = { + "name":"Thai Pattachote (\u0e44\u0e17\u0e22 Pattachote)", + "normal":[ + "_ = \u0E52 \u0E53 \u0E54 \u0E55 \u0E39 \u0E57 \u0E58 \u0E59 \u0E50 \u0E51 \u0E56 {b}", + "{t} \u0E47 \u0E15 \u0E22 \u0E2D \u0E23 \u0E48 \u0E14 \u0E21 \u0E27 \u0E41 \u0E43 \u0E0C \uF8C7", + "\u0E49 \u0E17 \u0E07 \u0E01 \u0E31 \u0E35 \u0E32 \u0E19 \u0E40 \u0E44 \u0E02 {enter}", + "{s} \u0E1A \u0E1B \u0E25 \u0E2B \u0E34 \u0E04 \u0E2A \u0E30 \u0E08 \u0E1E {s}", + "{space} {accept}" + ], + "shift":[ + "\u0E3F + \" / , ? \u0E38 _ . ( ) - % {b}", + "{t} \u0E4A \u0E24 \u0E46 \u0E0D \u0E29 \u0E36 \u0E1D \u0E0B \u0E16 \u0E12 \u0E2F \u0E26 \u0E4D", + "\u0E4B \u0E18 \u0E33 \u0E13 \u0E4C \u0E37 \u0E1C \u0E0A \u0E42 \u0E06 \u0E11 {enter}", + "{s} \u0E0E \u0E0F \u0E10 \u0E20 \u0E31 \u0E28 \u0E2E \u0E1F \u0E09 \u0E2C {s}", + "{space} {accept}" + ], + "lang":["th-pat"] +}; +/* Turkish F Keyboard Layout (T\u00fcrk\u00e7e F) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["tr-f"] = { + "name":"Turkish F (T\u00fcrk\u00e7e F)", + "normal":[ + "+ 1 2 3 4 5 6 7 8 9 0 / - {b}", + "{t} f g \u011f \u0131 o d r n h p q w x", + "u i e a \u00fc t k m l y \u015f {enter}", + "{s} < j \u00f6 v c \u00e7 z s b . , {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "* ! \" ^ $ % & ' ( ) = ? _ {b}", + "{t} F G \u011e I O D R N H P Q W X", + "U \u0130 E A \u00dc T K M L Y \u015e {enter}", + "{s} > J \u00d6 V C \u00c7 Z S B : ; {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u00ac \u00b9 \u00b2 # \u00bc \u00bd \u00be { [ ] } \\ | {b}", + "{t} @ {empty} {empty} \u00b6 {empty} \u00a5 {empty} {empty} \u00f8 \u00a3 \u00a8 ~ `", + "\u00e6 \u00df \u20ac {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {empty} {enter}", + "{s} | \u00ab \u00bb \u00a2 {empty} {empty} {empty} \u00b5 \u00d7 \u00f7 - {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} \u00a1 {empty} \u00b3 \u00a4 {empty} {empty} {empty} {empty} {empty} {empty} \u00bf {empty} {b}", + "{t} {empty} {empty} {empty} \u00ae {empty} {empty} {empty} {empty} \u00d8 {empty} {empty} {empty} {empty}", + "\u00c6 \u00a7 {empty} \u00aa {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} \u00a6 < > \u00a9 {empty} {empty} {empty} \u00ba {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["tr-f"] +}; +/* Turkish Q Keyboard Layout (T\u00fcrk\u00e7e Q) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["tr-q"] = { + "name":"Turkish Q (T\u00fcrk\u00e7e Q)", + "normal":[ + "\" 1 2 3 4 5 6 7 8 9 0 * - {b}", + "{t} q w e r t y u \u0131 o p \u011f \u00fc ,", + "a s d f g h j k l \u015f i {enter}", + "{s} < z x c v b n m \u00f6 \u00e7 . {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00e9 ! ' ^ + % & / ( ) = ? _ {b}", + "{t} Q W E R T Y U I O P \u011e \u00dc ;", + "A S D F G H J K L \u015e \u0130 {enter}", + "{s} > Z X C V B N M \u00d6 \u00c7 : {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "< > \u00a3 # $ \u00bd {empty} { [ ] } \\ | {b}", + "{t} @ {empty} \u20ac {empty} {empty} {empty} {empty} i {empty} {empty} \u00a8 ~ `", + "\u00e6 \u00df {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {empty} {enter}", + "{s} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0130 {empty} {empty} {empty} {empty} {empty}", + "\u00c6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["tr-q"] +}; +/* Ukrainian Keyboard Layout (\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["uk"] = { + "name":"Ukrainian (\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430)", + "normal":[ + "\u00b4 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u0449 \u0437 \u0445 \u0457 \u0491", + "\u0444 \u0456 \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u0454 {enter}", + "{s} \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E . {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! \" \u2116 ; % : ? * ( ) _ + {b}", + "{t} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u0429 \u0417 \u0425 \u0407 \u0490", + "\u0424 \u0406 \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u0404 {enter}", + "{s} \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E , {s}", + "{space} {accept}" + ], + "lang":["uk"] +}; +/* United Kingdom Keyboard Layout (United Kingdom) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["en-gb"] = { + "name":"United Kingdom (United Kingdom)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{s} \\ z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u00ac ! \" \u00a3 $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{s} | Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u00a6 {empty} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u00e9 {empty} {empty} {empty} \u00fa \u00ed \u00f3 {empty} {empty} {empty} {empty}", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} \u00c9 {empty} {empty} {empty} \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["en-gb"] +}; +/* Urdu Keyboard Layout (\u0627\u0631\u062f\u0648) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ur"] = { + "name":"Urdu (\u0627\u0631\u062f\u0648)", + "rtl":true, + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} \u0637 \u0635 \u06be \u062f \u0679 \u067e \u062a \u0628 \u062c \u062d ] [ \\", + "\u0645 \u0648 \u0631 \u0646 \u0644 \u06c1 \u0627 \u06A9 \u06CC \u061b ' {enter}", + "{s} \u0642 \u0641 \u06D2 \u0633 \u0634 \u063a \u0639 \u060C \u06D4 / {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! @ # $ \u066A ^ \u06D6 \u066D ) ( _ + {b}", + "{t} \u0638 \u0636 \u0630 \u0688 \u062B \u0651 \u06C3 \u0640 \u0686 \u062E } { |", + "\u0698 \u0632 \u0691 \u06BA \u06C2 \u0621 \u0622 \u06AF \u064A : \" {enter}", + "{s} {ZWJ} {ZWNJ} \u06D3 {LRM} \u0624 \u0626 {RLM} > < \u061F {s}", + "{space} {accept}" + ], + "lang":["ur"] +}; +/* Urdu Phonetic Keyboard Layout (\u0627\u0631\u062f\u0648 Phonetic) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["ur-ph"] = { + "name":"Urdu Phonetic (\u0627\u0631\u062f\u0648 Phonetic)", + "rtl":true, + "normal":[ + "\u064D \u06F1 \u06F2 \u06F3 \u06F4 \u06F5 \u06F6 \u06F7 \u06F8 \u06F9 \u06F0 - = {b}", + "{t} \u0642 \u0648 \u0639 \u0631 \u062A \u06D2 \u0621 \u06CC \u06C1 \u067E [ ] \\", + "\u0627 \u0633 \u062F \u0641 \u06AF \u062D \u062C \u06A9 \u0644 \u061B ' {enter}", + "{s} \u0632 \u0634 \u0686 \u0637 \u0628 \u0646 \u0645 \u060C \u06D4 / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "\u064B 1 2 3 4 5 6 7 8 9 0 _ + {b}", + "{t} \u0652 \u0651 \u0670 \u0691 \u0679 \u064E \u0626 \u0650 \u06C3 \u064F { } |", + "\u0622 \u0635 \u0688 {empty} \u063A \u06BE \u0636 \u062E {empty} : \" {enter}", + "{s} \u0630 \u0698 \u062B \u0638 {empty} \u06BA \u0658 {empty} \u066B \u061F {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "~ ! @ # $ \u066A ^ & * ( ) {empty} {empty} {b}", + "{t} {empty} \u0602 \u0656 \u0613 \u0614 \u0601 \u0654 \u0611 {empty} \u0657 {empty} {empty} {empty}", + "\uFDF2 \u0610 \uFDFA {empty} {empty} \u0612 \uFDFB {empty} {empty} {empty} {empty} {enter}", + "{s} \u060F \u060E \u0603 {empty} \uFDFD \u0600 {empty} < > {empty} {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["ur-ph"] +}; +/* US Standard Keyboard Layout (US Standard) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["en-us"] = { + "name":"US Standard (US Standard)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {accept}" + ], + "lang":["en-us"] +}; +/* US International Keyboard Layout (US International) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["en-int"] = { + "name":"US International (US International)", + "normal":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {b}", + "{t} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac", + "\u00e1 \u00df \u00f0 {empty} {empty} {empty} {empty} {empty} \u00f8 \u00b6 \u00b4 {enter}", + "{s} \u00e6 {empty} \u00a9 {empty} {empty} \u00f1 \u00b5 \u00e7 {empty} \u00bf {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {b}", + "{t} \u00c4 \u00c5 \u00c9 {empty} \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 {empty} {empty} \u00a6", + "\u00c1 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} \u00d8 \u00b0 \u00a8 {enter}", + "{s} \u00c6 {empty} \u00a2 {empty} {empty} \u00d1 {empty} \u00c7 {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["en-int"] +}; +/* Uzbek Cyrillic Keyboard Layout (\u040e\u0437\u0431\u0435\u043a\u0447\u0430) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["uz"] = { + "name":"Uzbek Cyrillic (\u040e\u0437\u0431\u0435\u043a\u0447\u0430)", + "normal":[ + "\u0451 1 2 3 4 5 6 7 8 9 0 \u0493 \u04B3 {b}", + "{t} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u045E \u0437 \u0445 \u044A \\", + "\u0444 \u049B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u044D {enter}", + "{s} \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E . {s}", + "{space} {accept}" + ], + "shift":[ + "\u0401 ! \" \u2116 ; % : ? * ( ) \u0492 \u04B2 {b}", + "{t} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u040E \u0417 \u0425 \u042A /", + "\u0424 \u049A \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u042D {enter}", + "{s} \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E , {s}", + "{space} {accept}" + ], + "lang":["uz"] +}; +/* Vietnamese Keyboard Layout (Ti\u1ebfng Vi\u1ec7t) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["vi"] = { + "name":"Vietnamese (Ti\u1ebfng Vi\u1ec7t)", + "normal":[ + "` \u0103 \u00E2 \u00EA \u00F4 \u0300 \u0309 \u0303 \u0301 \u0323 \u0111 - \u20AB {b}", + "{t} q w e r t y u i o p \u01B0 \u01A1 \\", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ \u0102 \u00C2 \u00CA \u00D4 \u0300 \u0309 \u0303 \u0301 \u0323 \u0110 _ + {b}", + "{t} Q W E R T Y U I O P \u01AF \u01A0 |", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "` 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{s} z x c v b n m , . / {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "~ ! @ # $ % ^ & * ( ) _ + {b}", + "{t} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{s} Z X C V B N M < > ? {s}", + "{space} {alt} {accept}" + ], + "lang":["vi"] +}; +/* Western Armenian Keyboard Layout (\u0540\u0561\u0575\u0565\u0580\u0565\u0576 \u0561\u0580\u0565\u0582\u0574\u0578\u0582\u057f\u0584) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["hy-arevmda"] = { + "name":"Western Armenian (\u0540\u0561\u0575\u0565\u0580\u0565\u0576 \u0561\u0580\u0565\u0582\u0574\u0578\u0582\u057f\u0584)", + "normal":[ + "\u055D : \u0571 \u0575 \u055B , - . \u00AB \u00BB \u0585 \u057C \u056A {b}", + "{t} \u056D \u057E \u0567 \u0580 \u0564 \u0565 \u0568 \u056B \u0578 \u0562 \u0579 \u057B '", + "\u0561 \u057D \u057F \u0586 \u056F \u0570 \u0573 \u0584 \u056C \u0569 \u0583 {enter}", + "{s} \u0566 \u0581 \u0563 \u0582 \u057A \u0576 \u0574 \u0577 \u0572 \u056E {s}", + "{space} {accept}" + ], + "shift":[ + "\u055C 1 \u0541 \u0545 3 4 9 \u0587 ( ) \u0555 \u054C \u053A {b}", + "{t} \u053D \u054E \u0537 \u0550 \u0534 \u0535 \u0538 \u053B \u0548 \u0532 \u0549 \u054B \u055E", + "\u0531 \u054D \u054F \u0556 \u053F \u0540 \u0543 \u0554 \u053C \u0539 \u0553 {enter}", + "{s} \u0536 \u0551 \u0533 \u0552 \u054A \u0546 \u0544 \u0547 \u0542 \u053E {s}", + "{space} {accept}" + ], + "lang":["hy-arevmda"] +}; +/* Yiddish Keyboard Layout (\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["yi"] = { + "name":"Yiddish (\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9)", + "rtl":true, + "normal":[ + "; 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} / ' \u05E7 \u05E8 \u05D0 \u05D8 \u05D5 \u05DF \u05DD \u05E4 [ ] \\", + "\u05E9 \u05D3 \u05D2 \u05DB \u05E2 \u05D9 \u05D7 \u05DC \u05DA \u05E3 , {enter}", + "{s} \u05D6 \u05E1 \u05D1 \u05D4 \u05E0 \u05DE \u05E6 \u05EA \u05E5 . {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ * & ( ) _ + {b}", + "{t} \u201F \u201E ` \uFB2F \uFB2E \u05F0 \uFB35 \uFB4B \uFB4E \uFB44 { } |", + "\uFB2A \uFB2B {empty} \uFB3B \u05F1 \uFB1D \uFF1F \u05F2 {empty} : \" {enter}", + "{s} \u2260 \uFB4C \uFB31 \u05BE \u2013 \u2014 \uFB4A < > ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "\u05B0 \u05B1 \u05B2 \u05B3 \u05B4 \u05B5 \u05B6 \u05B7 \u05B8 \u05C2 \u05C1 \u05B9 \u05BC {b}", + "{t} \u201F \u201E ` \uFB2F \uFB2E \u05F0 \uFB35 \uFB4B \uFB4E \uFB44 \u05BD \u05BF \u05BB", + "\uFB2A \uFB2B {empty} \uFB3B \u05F1 \uFB1D \uFF1F \u05F2 {empty} \u05C3 \u05C0 {enter}", + "{s} \u2260 \uFB4C \uFB31 \u05BE \u2013 \u2014 \uFB4A \u05F3 \u05F4 \u20AA {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{s} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["yi"] +}; +/* Yiddish (Yidish Lebt) Keyboard Layout (\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9 \u05dc\u05e2\u05d1\u05d8) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["yi-lebt"] = { + "name":"Yiddish (Yidish Lebt) (\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9 \u05dc\u05e2\u05d1\u05d8)", + "rtl":true, + "normal":[ + "; 1 2 3 4 5 6 7 8 9 0 - = {b}", + "{t} / ' \u05E7 \u05E8 \u05D0 \u05D8 \u05D5 \u05DF \u05DD \u05E4 ] [ \\", + "\u05E9 \u05D3 \u05D2 \u05DB \u05E2 \u05D9 \u05D7 \u05DC \u05DA \u05E3 , {enter}", + "{s} \u05D6 \u05E1 \u05D1 \u05D4 \u05E0 \u05DE \u05E6 \u05EA \u05E5 . {s}", + "{space} {alt} {accept}" + ], + "shift":[ + "~ ! @ # $ % ^ & * ) ( _ + {b}", + "{t} {empty} {empty} {empty} {empty} {empty} {empty} \u05D5\u05B9 {empty} {empty} {empty} } { |", + "\u05E9\u05C1 {empty} \u201E {empty} {empty} {empty} {empty} \u05DC\u05B9 {empty} : \" {enter}", + "{s} {empty} {empty} \u05DC\u05B9 {empty} {empty} {empty} {empty} > < ? {s}", + "{space} {alt} {accept}" + ], + "alt":[ + "{empty} \u05B2 \u05B3 \u05B1 \u05B4 \u05B5 \u05B7 \u05B8 \u05BB \u05B6 \u05B0 \u05BF \u05B9 {b}", + "{t} \u05F4 \u05F3 \u20AC {empty} \u05D0\u05B7 \u05D0\u05B8 \u05D5\u05BC \u05D5\u05D5 \u05BC \u05E4\u05BC \u201E \u201A \u05BE", + "\u05E9\u05C2 \u20AA {empty} \u05DB\u05BC {empty} \u05D9\u05B4 \u05F2\u05B7 \u05D5\u05D9 {empty} \u05E4\u05BF ; {enter}", + "{s} \u2013 \u2014 \u05D1\u05BF \u201D \u059C \u2019 \u05E9\u05C1 \u05EA\u05BC {empty} \u2026 {s}", + "{space} {alt} {accept}" + ], + "alt-shift":[ + "{empty} \u05B2 \u05B3 \u05B1 \u05B4 \u05B5 \u05B7 \u05B8 \u05BB \u05B6 \u05B0 \u05BF \u05B9 {b}", + "{t} \u05F4 \u05F3 {empty} {empty} \uFB2E \uFB2F \uFB35 \u05F0 {empty} \uFB44 \u201D \u2019 \u05BE", + "\uFB2B {empty} {empty} \uFB3B \uFB20 \uFB1D \uFB1F \u05F1 \u05F2 \uFB4E \u05B2 {enter}", + "{s} \u2013 \u2014 \uFB4C \u201C \u059E \u2018 \uFB2A \uFB4A {empty} {empty} {s}", + "{space} {alt} {accept}" + ], + "lang":["yi-lebt"] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-microsoft.js b/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-microsoft.js new file mode 100644 index 0000000000..ad7a2b2fc4 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/keyboard-layouts-microsoft.js @@ -0,0 +1,5431 @@ +/*** This file is dynamically generated *** +█████▄ ▄████▄ █████▄ ▄████▄ ██████ ███████▄ ▄████▄ █████▄ ██ ██████ ██ ██ +██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀▀██ +█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀ +*/ +/*! jQuery UI Virtual Keyboard - Microsoft Generated Layouts */ +/* Albanian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdal.html + */ +jQuery.keyboard.layouts['ms-Albanian'] = { + name: "ms-Albanian", + lang: ["sq"], + "normal": [ + "\\ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t z u i o p \u00e7 @", + "a s d f g h j k l \u00eb [ ] {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift: [ + '| ! " # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Z U I O P \u00c7 '", + "A S D F G H J K L \u00cb { } {enter}", + "{shift} > Y X C V B N M ; : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt: [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df \u00a4 {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Arabic (101) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbda1.html + */ +jQuery.keyboard.layouts['ms-Arabic (101)'] = { + "name" : "ms-Arabic (101)", + "lang" : ["ar"], + "normal" : [ + "\u0630 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u062F \\", + "\u0634 \u0633 \u064A \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u0643 \u0637 {enter}", + "{shift} \u0626 \u0621 \u0624 \u0631 \u0644\u0627 \u0649 \u0629 \u0648 \u0632 \u0638 {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0651 ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u064E \u064B \u064F \u064C \u0644\u0625 \u0625 \u2018 \u00F7 \u00D7 \u061B < > |", + "\u0650 \u064D ] [ \u0644\u0623 \u0623 \u0640 \u060C / : \" {enter}", + "{shift} ~ \u0652 } { \u0644\u0622 \u0622 \u2019 , . \u061F {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Arabic (102) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbda2.html + */ +jQuery.keyboard.layouts['ms-Arabic (102)'] = { + "name" : "ms-Arabic (102)", + "lang" : ["ar"], + "normal" : [ + "> 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u062F {enter}", + "\u0634 \u0633 \u064A \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u0643 \u0637 \u0630 ", + "{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \u0644\u0627 \u0649 \u0629 \u0648 \u0632 \u0638 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "< ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u064E \u064B \u064F \u064C \u0644\u0625 \u0625 \u2018 \u00F7 \u00D7 \u061B } { {enter}", + "\\ {empty} ] [ \u0644\u0623 \u0623 \u0640 \u060C / : \" \u0651 ", + "{shift} | ~ \u0652 \u0650 \u064D \u0644\u0622 \u0622 \u2019 , . \u061F {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} \u00A4 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u0651\u064E \u0651\u064B \u0651\u064F \u0651\u064C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} {empty} {empty} {empty} \u0651\u0650 \u0651\u064D {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Arabic (102) AZERTY Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbda3.html + */ +jQuery.keyboard.layouts['ms-Arabic (102) AZERTY'] = { + "name" : "ms-Arabic (102) AZERTY", + "lang" : ["ar"], + "normal" : [ + "> & \u00E9 \" ' ( - \u00E8 _ \u00E7 \u00E0 ) = {bksp}", + "{tab} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u062F {enter}", + "\u0634 \u0633 \u064A \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u0643 \u0637 \u0630 ", + "{shift} \\ \u0626 \u0621 \u0624 \u0631 \u0644\u0627 \u0649 \u0629 \u0648 \u0632 \u0638 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "< 1 2 3 4 5 6 7 8 9 0 \u00B0 + {bksp}", + "{tab} \u064E \u064B \u064F \u064C \u0644\u0625 \u0625 \u2018 \u00F7 \u00D7 \u061B } { {enter}", + "\\ {empty} ] [ \u0644\u0623 \u0623 \u0640 \u060C / : \" \u0651 ", + "{shift} | ~ \u0652 \u0650 \u064D \u0644\u0622 \u0622 \u2019 , . \u061F {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} \u00A4 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u0651\u064E \u0651\u064B \u0651\u064F \u0651\u064C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} {empty} {empty} {empty} \u0651\u0650 \u0651\u064D {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Armenian Eastern Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdarme.html + */ +jQuery.keyboard.layouts['ms-Armenian Eastern'] = { + "name" : "ms-Armenian Eastern", + "lang" : ["hy-e"], + "normal" : [ + "\u055d : \u0571 \u0575 \u055b , - . \u00ab \u00bb \u0585 \u057c \u056a {bksp}", + "{tab} \u056d \u0582 \u0567 \u0580 \u057f \u0565 \u0568 \u056b \u0578 \u057a \u0579 \u057b '", + "\u0561 \u057d \u0564 \u0586 \u0584 \u0570 \u0573 \u056f \u056c \u0569 \u0583 {enter}", + "{shift} ' \u0566 \u0581 \u0563 \u057e \u0562 \u0576 \u0574 \u0577 \u0572 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u055c 1 \u0541 \u0545 3 4 9 \u0587 ( ) \u0555 \u054c \u053a {bksp}", + "{tab} \u053d \u0552 \u0537 \u0550 \u054f \u0535 \u0538 \u053b \u0548 \u054a \u0549 \u054b \u055e", + "\u0531 \u054d \u0534 \u0556 \u0554 \u0540 \u0543 \u053f \u053c \u0539 \u0553 {enter}", + "{shift} \u055e \u0536 \u0551 \u0533 \u054e \u0532 \u0546 \u0544 \u0547 \u0542 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Armenian Western Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdarmw.html + */ +jQuery.keyboard.layouts['ms-Armenian Western'] = { + "name" : "ms-Armenian Western", + "lang" : ["hy-w"], + "normal" : [ + "\u055d : \u0571 \u0575 \u055b , - . \u00ab \u00bb \u0585 \u057c \u056a {bksp}", + "{tab} \u056d \u057e \u0567 \u0580 \u0564 \u0565 \u0568 \u056b \u0578 \u0562 \u0579 \u057b '", + "\u0561 \u057d \u057f \u0586 \u056f \u0570 \u0573 \u0584 \u056c \u0569 \u0583 {enter}", + "{shift} ' \u0566 \u0581 \u0563 \u0582 \u057a \u0576 \u0574 \u0577 \u0572 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u055c 1 \u0541 \u0545 3 4 9 \u0587 ( ) \u0555 \u054c \u053a {bksp}", + "{tab} \u053d \u054e \u0537 \u0550 \u0534 \u0535 \u0538 \u053b \u0548 \u0532 \u0549 \u054b \u055e", + "\u0531 \u054d \u054f \u0556 \u053f \u0540 \u0543 \u0554 \u053c \u0539 \u0553 {enter}", + "{shift} \u055e \u0536 \u0551 \u0533 \u0552 \u054a \u0546 \u0544 \u0547 \u0542 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Assamese - INSCRIPT Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinasa.html + */ +jQuery.keyboard.layouts['ms-Assamese-INSCRIPT'] = { + "name" : "ms-Assamese-INSCRIPT", + "lang" : ["as"], + "normal" : [ + "\u0965 \u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 - \u09c3 {bksp}", + "{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc {empty}", + "\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09f0 \u0995 \u09a4 \u099a \u099f {enter}", + "{shift} {empty} {empty} \u0982 \u09ae \u09a8 \u09f1 \u09b2 \u09b8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} ! @ \u09cd\u09f0 \u09f0\u09cd \u099c\u09cd\u099e \u09a4\u09cd\u09f0 \u0995\u09cd\u09b7 \u09b6\u09cd\u09f0 ( ) \u0983 \u098b {bksp}", + "{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e {empty}", + "\u0993 \u098f \u0985 \u0987 \u0989 \u09ab {empty} \u0996 \u09a5 \u099b \u09a0 {enter}", + "{shift} {empty} {empty} \u0981 \u09a3 {empty} {empty} {empty} \u09b6 \u09b7 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Azeri Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdaze.html + */ +jQuery.keyboard.layouts['ms-Azeri Cyrillic'] = { + "name" : "ms-Azeri Cyrillic", + "lang" : ["az"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0458 \u04af \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u04bb \u0437 \u0445 \u04b9 \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u049d {enter}", + "{shift} \\ \u04d9 \u0447 \u0441 \u043c \u0438 \u0442 \u0493 \u0431 \u04e9 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0408 \u04ae \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u04ba \u0417 \u0425 \u04b8 /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u049c {enter}", + "{shift} | \u04d8 \u0427 \u0421 \u041c \u0418 \u0422 \u0492 \u0411 \u04e8 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Azeri Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdazel.html + */ +jQuery.keyboard.layouts['ms-Azeri Latin'] = { + "name" : "ms-Azeri Latin", + "lang" : ["az"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q \u00fc e r t y u i o p \u00f6 \u011f \\", + "a s d f g h j k l \u0131 \u0259 {enter}", + "{shift} \\ z x c v b n m \u00e7 \u015f / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! \" \u2166 ; % : ? * ( ) _ + {bksp}", + "{tab} Q \u00dc E R T Y U \u0130 O P \u00d6 \u011e /", + "A S D F G H J K L I \u018f {enter}", + "{shift} / Z X C V B N M \u00c7 \u015e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bashkir Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbash.html + */ +jQuery.keyboard.layouts['ms-Bashkir'] = { + "name" : "ms-Bashkir", + "lang" : ["ba"], + "normal" : [ + "\u04d9 ! \u04e9 \u04a1 \u0493 \u04ab : \u0499 \u04bb ? \u2116 - \u04af {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \u04a3", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u04d8 \" \u04e8 \u04a0 \u0492 \u04aa ; \u0498 \u04ba ( ) % \u04ae {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a \u04a2", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bosnian (Cyrillic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbhc.html + */ +jQuery.keyboard.layouts['ms-Bosnian (Cyrillic)'] = { + "name" : "ms-Bosnian (Cyrillic)", + "lang" : ["bs"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} ^ {empty} \u00b0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} [ ] {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Belarusian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdblr.html + */ +jQuery.keyboard.layouts['ms-Belarusian'] = { + "name" : "ms-Belarusian", + "lang" : ["be"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 ' \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0456 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 ' /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0406 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Belgian (Comma) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbene.html + */ +jQuery.keyboard.layouts['ms-Belgian (Comma)'] = { + "name" : "ms-Belgian (Comma)", + "lang" : ["nl", "fr", "de"], + "normal" : [ + "\u00b2 & \u00e9 \" ' ( \u00a7 \u00e8 ! \u00e7 \u00e0 ) - {bksp}", + "{tab} a z e r t y u i o p ^ $ \u00b5", + "q s d f g h j k l m \u00f9 {enter}", + "{shift} < w x c v b n , ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b3 1 2 3 4 5 6 7 8 9 0 \u00b0 _ {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 * \u00a3", + "Q S D F G H J K L M % {enter}", + "{shift} > W X C V B N ? . / / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} | @ # { [ ^ {empty} {empty} { } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Belgian French Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbe.html + */ +jQuery.keyboard.layouts['ms-Belgian French'] = { + "name" : "ms-Belgian French", + "lang" : ["nl-fr", "fr"], + "normal" : [ + "\u00b2 & \u00e9 \" ' ( \u00a7 \u00e8 ! \u00e7 \u00e0 ) - {bksp}", + "{tab} a z e r t y u i o p ^ $ \u00b5", + "q s d f g h j k l m \u00f9 {enter}", + "{shift} < w x c v b n , ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b3 1 2 3 4 5 6 7 8 9 0 \u00b0 _ {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 * \u00a3", + "Q S D F G H J K L M % {enter}", + "{shift} > W X C V B N ? . / / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} | @ # { [ ^ {empty} {empty} { } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Bengali Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinben.html + */ +jQuery.keyboard.layouts['ms-Bengali'] = { + "name" : "ms-Bengali", + "lang" : ["bn"], + "normal" : [ + "1 2 3 4 5 6 7 8 9 0 - \u09c3 {bksp}", + "{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc", + "\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09b0 \u0995 \u09a4 \u099a \u099f {enter}", + "{shift} \u0982 \u09ae \u09a8 \u09ac \u09b2 \u09b8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} {empty} \u09cd\u09b0 \u09b0\u09cd \u099c\u09cd\u09b0 \u09a4\u09cd\u09b7 \u0995\u09cd\u09b0 \u09b6\u09cd\u09b0 ( ) \u0983 \u098b {bksp}", + "{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e", + "\u0993 \u098f \u0985 \u0987 \u0989 \u09ab {empty} \u0996 \u09a5 \u099b \u09a0 {enter}", + "{shift} \u0981 \u09a3 {empty} {empty} {empty} \u09b6 \u09b7 { / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 {empty} \u09e2 {bksp}", + "{tab} \u09d7 {empty} {empty} \u09e3 {empty} {empty} {empty} {empty} {empty} {empty} \u09dc {empty}", + "\u09f4 \u09f6 \u09f8 \u09e2 {empty} {empty} \u09f0 {empty} {empty} {empty} {empty} {enter}", + "{shift} \u09fa {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u09e0 {bksp}", + "{tab} {empty} {empty} {empty} \u09e1 {empty} {empty} {empty} {empty} {empty} {empty} \u09dd {empty}", + "\u09f5 \u09f7 \u09f9 \u098c {empty} {empty} \u09f1 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Bengali - INSCRIPT (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinbe1.html + */ +jQuery.keyboard.layouts['ms-Bengali - INSCRIPT (Legacy)'] = { + "name" : "ms-Bengali - INSCRIPT (Legacy)", + "lang" : ["bn"], + "normal" : [ + "\u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 - \u09c3 {bksp}", + "{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc", + "\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09b0 \u0995 \u09a4 \u099a \u099f {enter}", + "{shift} \u0982 \u09ae \u09a8 \u09ac \u09b2 \u09b8 , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "! @ {empty} \u09b0\u09cd \u099c\u09cd\u099e \u09a4\u09cd\u09b0 \u0995\u09cd\u09b7 \u09b6\u09cd\u09b0 ( ) \u0983 \u098b {bksp}", + "{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e", + "\u0993 \u098f \u0985 \u0987 \u0989 \u09ab {empty} \u0996 \u09a5 \u099b \u09a0 {enter}", + "{shift} \u0981 \u09a3 {empty} {empty} {empty} \u09b6 \u09b7 {empty} / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bulgarian (Phonetic Traditional) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbgph1.html + */ +jQuery.keyboard.layouts['ms-Bulgarian (Phonetic Traditional)'] = { + "name" : "ms-Bulgarian (Phonetic Traditional)", + "lang" : ["bg"], + "normal" : [ + "\u0447 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u044f \u0432 \u0435 \u0440 \u0442 \u044a \u0443 \u0438 \u043e \u043f \u0448 \u0449 \u044e", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0439 \u043a \u043b ; ' {enter}", + "{shift} \u044e \u0437 \u044c \u0446 \u0436 \u0431 \u043d \u043c , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0427 ! @ \u2116 $ % \u20ac \u00a7 * ( ) _ + {bksp}", + "{tab} \u042f \u0412 \u0415 \u0420 \u0422 \u042a \u0423 \u0418 \u041e \u041f \u0428 \u0429 \u042e", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0419 \u041a \u041b : \" {enter}", + "{shift} \u042e \u0417 \u045d \u0426 \u0416 \u0411 \u041d \u041c < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bulgarian (Phonetic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbgph.html + */ +jQuery.keyboard.layouts['ms-Bulgarian (Phonetic)'] = { + "name" : "ms-Bulgarian (Phonetic)", + "lang" : ["bg"], + "normal" : [ + "\u044e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0447 \u0448 \u0435 \u0440 \u0442 \u044a \u0443 \u0438 \u043e \u043f \u044f \u0449 \u044c", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0439 \u043a \u043b ; ' {enter}", + "{shift} \u045d \u0437 \u0436 \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u042e ! @ \u2116 $ % \u20ac \u00a7 * ( ) \u2013 + {bksp}", + "{tab} \u0427 \u0428 \u0415 \u0420 \u0422 \u042a \u0423 \u0418 \u041e \u041f \u042f \u0429 \u045d", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0419 \u041a \u041b : \" {enter}", + "{shift} \u040d \u0417 \u0416 \u0426 \u0412 \u0411 \u041d \u041c \u201e \u201c / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bulgarian (Typewriter) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbu.html + */ +jQuery.keyboard.layouts['ms-Bulgarian (Typewriter)'] = { + "name" : "ms-Bulgarian (Typewriter)", + "lang" : ["bg"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - . {bksp}", + "{tab} , \u0443 \u0435 \u0438 \u0448 \u0449 \u043a \u0441 \u0434 \u0437 \u0446 ; (", + "\u044c \u044f \u0430 \u043e \u0436 \u0433 \u0442 \u043d \u0432 \u043c \u0447 {enter}", + "{shift} \\ \u044e \u0439 \u044a \u044d \u0444 \u0445 \u043f \u0440 \u043b / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! ? + \" % = : / _ \u2116 \u0406 V {bksp}", + "{tab} \u044b \u0423 \u0415 \u0418 \u0428 \u0429 \u041a \u0421 \u0414 \u0417 \u0426 \u00a7 )", + "\u042c \u042f \u0410 \u041e \u0416 \u0413 \u0422 \u041d \u0412 \u041c \u0427 {enter}", + "{shift} | \u042e \u0419 \u042a \u042d \u0424 \u0425 \u041f \u0420 \u041b / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Canadian French Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdca.html + */ +jQuery.keyboard.layouts['ms-Canadian French'] = { + "name" : "ms-Canadian French", + "lang" : ["fr-ca"], + "normal" : [ + "# 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p ^ \u00b8 <", + "a s d f g h j k l ; ` {enter}", + "{shift} \u00ab z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" / $ % ? & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ^ \u00a8 >", + "A S D F G H J K L : ` {enter}", + "{shift} \u00bb Z X C V B N M ' . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\\ \u00b1 @ \u00a3 \u00a2 \u00a4 \u00ac \u00a6 \u00b2 \u00b3 \u00bc \u00bd \u00be {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 \u00b6 [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ { {enter}", + "{shift} \u00b0 {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 \u00af \u00ad {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Canadian French (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfc.html + */ +jQuery.keyboard.layouts['ms-Canadian French (Legacy)'] = { + "name" : "ms-Canadian French (Legacy)", + "lang" : ["fr-ca"], + "normal" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p ^ \u00e7 \u00e0", + "a s d f g h j k l ; \u00e8 {enter}", + "{shift} \u00f9 z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" # $ % ? & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ^ \u00c7 \u00c0", + "A S D F G H J K L : \u00c8 {enter}", + "{shift} \u00d9 Z X C V B N M ' . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00ac \u00b9 @ \u00b3 \u00bc \u00bd \u00be { [ ] } | \u00b8 {bksp}", + "{tab} {empty} {empty} {empty} \u00b6 {empty} \u00a5 {empty} {empty} \u00f8 \u00fe \u00b0 ~ {empty}", + "\u00e6 \u00df \u00f0 \u00aa {empty} {empty} {empty} {empty} {empty} \u00b4 {empty} {enter}", + "{shift} \\ \u00ab \u00bb \u00a2 {empty} {empty} {empty} \u00b5 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00a1 \u00b2 \u00a3 \u00a4 {empty} {empty} {empty} {empty} \u00b1 {empty} \u00bf {empty} {bksp}", + "{tab} {empty} {empty} {empty} \u00ae {empty} {empty} {empty} {empty} \u00d8 \u00de {empty} \u00a8 {empty}", + "\u00c6 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {empty} {enter}", + "{shift} | {empty} {empty} \u00a9 {empty} {empty} {empty} \u00ba {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Canadian Multilingual Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcan.html + */ +jQuery.keyboard.layouts['ms-Canadian Multilingual Standard'] = { + "name" : "ms-Canadian Multilingual Standard", + "lang" : ["en-ca"], + "normal" : [ + "/ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p ^ \u00E7 {enter}", + "a s d f g h j k l ; \u00E8 \u00E0 ", + "{shift} \u00F9 z x c v b n m , . \u00E9 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\\ ! @ # $ % ? & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u00A8 \u00C7 {enter}", + "A S D F G H J K L : \u00C8 \u00C0 ", + "{shift} \u00D9 Z X C V B N M ' \" \u00C9 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "| {empty} {empty} {empty} {empty} {empty} {empty} { } [ ] {empty} \u00AC {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` ~ {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B0 {empty} {empty} ", + "{shift} {empty} \u00AB \u00BB {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Chinese Bopomofo IME Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdTCBO.html + */ +jQuery.keyboard.layouts['ms-Chinese Bopomofo IME'] = { + "name" : "ms-Chinese Bopomofo IME", + "lang" : ["zh"], + "normal" : [ + "\u20AC \u3105 \u3109 \u02C7 \u02CB \u3113 \u02CA \u02D9 \u311A \u311E \u3122 \u3126 = {bksp}", + "{tab} \u3106 \u310A \u310D \u3110 \u3114 \u3117 \u3127 \u311B \u311F \u3123 [ ] \\", + "\u3107 \u310B \u310E \u3111 \u3115 \u3118 \u3128 \u311C \u3120 \u3124 ' {enter}", + "\u3108 \u310C \u310F \u3112 \u3116 \u3119 \u3129 \u311D \u3121 \u3125", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Chinese ChaJei IME Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdTCCJ.html + */ +jQuery.keyboard.layouts['ms-Chinese ChaJei IME'] = { + "name" : "ms-Chinese ChaJei IME", + "lang" : ["zh"], + "normal" : [ + "\u20AC 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u624B \u7530 \u6C34 \u53E3 \u5EFF \u535C \u5C71 \u6208 \u4EBA \u5FC3 [ ] \\", + "\u65E5 \u5C38 \u6728 \u706B \u571F \u7AF9 \u5341 \u5927 \u4E2D ; ' {enter}", + "\uFF3A \u96E3 \u91D1 \u5973 \u6708 \u5F13 \u4E00 , . /", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Czech Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcz.html + */ +jQuery.keyboard.layouts['ms-Czech'] = { + "name" : "ms-Czech", + "lang" : ["cs"], + "normal" : [ + "; + \u011b \u0161 \u010d \u0159 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fa ) {empty}", + "a s d f g h j k l \u016f \u00a7 {enter}", + "{shift} \\ y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Z U I O P / ( '", + "A S D F G H J K L \" ! {enter}", + "{shift} | Y X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 \u00a4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} {empty} {empty} # & @ { } {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Czech (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcz1.html + */ +jQuery.keyboard.layouts['ms-Czech (QWERTY)'] = { + "name" : "ms-Czech (QWERTY)", + "lang" : ["cs"], + "normal" : [ + "; + \u011b \u0161 \u010d \u0159 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00fa ) {empty}", + "a s d f g h j k l \u016f \u00a7 {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Y U I O P / ( '", + "A S D F G H J K L \" ! {enter}", + "{shift} | Z X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ! @ # $ % ^ & * ( ) - = {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; \u00a4 {enter}", + "{shift} \u00df {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : ^ {enter}", + "{shift} \u02dd {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00d7 \u00f7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Czech Programmers Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcz2.html + */ +jQuery.keyboard.layouts['ms-Czech Programmers'] = { + "name" : "ms-Czech Programmers", + "lang" : ["cs"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "; + \u011b \u0161 \u010d \u0159 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00fa ) {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u016f \u00a7 {enter}", + "{shift} \u00df {empty} {empty} {empty} {empty} {empty} {empty} {empty} ? : {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00b0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} % \u02c7 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} / ( {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \" ! {enter}", + "{shift} \u02dd {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00d7 \u00f7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Danish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdda.html + */ +jQuery.keyboard.layouts['ms-Danish'] = { + "name" : "ms-Danish", + "lang" : ["da"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00E6 \u00F8 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00C6 \u00D8 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} | {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Devanagari - INSCRIPT Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdindev.html + */ +jQuery.keyboard.layouts["ms-Devanagari - INSCRIPT"] = { + name: "ms-Devanagari - INSCRIPT", + lang: ["hi", "ne", "mr", "kok", "bodo", "mai"], + "normal": [ + "\u094a 1 2 3 4 5 6 7 8 9 0 - \u0943 {bksp}", + "{tab} \u094c \u0948 \u093e \u0940 \u0942 \u092c \u0939 \u0917 \u0926 \u091c \u0921 \u093c \u0949", + "\u094b \u0947 \u094d \u093f \u0941 \u092a \u0930 \u0915 \u0924 \u091a \u091f {enter}", + "{shift} \u0949 \u0946 \u0902 \u092e \u0928 \u0935 \u0932 \u0938 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift: [ + "\u0912 \u090d \u0945 \u094d\u0930 \u0930\u094d \u091c\u094d\u091e \u0924\u094d\u0930 \u0915\u094d\u0937 \u0936\u094d\u0930 ( ) \u0903 \u090b {bksp}", + "{tab} \u0914 \u0910 \u0906 \u0908 \u090a \u092d \u0919 \u0918 \u0927 \u091d \u0922 \u091e \u0911", + "\u0913 \u090f \u0905 \u0907 \u0909 \u092b \u0931 \u0916 \u0925 \u091b \u0920 {enter}", + "{shift} \u0911 \u090e \u0901 \u0923 \u0929 \u0934 \u0933 \u0936 \u0937 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt: [ + "{empty} \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 {empty} \u0944 {bksp}", + "{tab} {empty} {empty} {empty} \u0963 {empty} {empty} {empty} \u095a {empty} \u095b \u095c {empty} {empty}", + "{empty} {empty} {empty} \u0962 {empty} {empty} {empty} \u0958 {empty} \u0952 {empty} {enter}", + "{shift} {empty} \u0953 {empty} \u0954 {empty} {empty} {empty} {empty} \u0970 \u0965 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift": [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0960 {bksp}", + "{tab} {empty} {empty} {empty} \u0961 {empty} {empty} {empty} {empty} {empty} {empty} \u095d {empty} {empty}", + "{empty} {empty} {empty} \u090c {empty} \u095e {empty} \u0959 {empty} {empty} \u0951 {enter}", + "{shift} {empty} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} {empty} \u093d {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Divehi Phonetic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbddiv1.html + */ +jQuery.keyboard.layouts['ms-Divehi Phonetic'] = { + "name" : "ms-Divehi Phonetic", + "lang" : ["dv"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u07b0 \u0787 \u07ac \u0783 \u078c \u0794 \u07aa \u07a8 \u07ae \u0795 ] [ \\", + "\u07a6 \u0790 \u078b \u078a \u078e \u0780 \u0796 \u0786 \u078d \u061b ' {enter}", + "{shift} \\ \u0792 \u00d7 \u0797 \u0788 \u0784 \u0782 \u0789 \u060c . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u07a4 \u07a2 \u07ad \u079c \u0793 \u07a0 \u07ab \u07a9 \u07af \u00f7 } { |", + "\u07a7 \u0781 \u0791 \ufdf2 \u07a3 \u0799 \u079b \u079a \u0785 : \" {enter}", + "{shift} | \u07a1 \u0798 \u079d \u07a5 \u079e \u078f \u079f > < / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {ZWJ} {ZWNJ} {LRM} {RLM} , {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Divehi Typewriter Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbddiv2.html + */ +jQuery.keyboard.layouts['ms-Divehi Typewriter'] = { + "name" : "ms-Divehi Typewriter", + "lang" : ["dv"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u07ab \u07ae \u07a7 \u07a9 \u07ad \u078e \u0783 \u0789 \u078c \u0780 \u078d [ ]", + "\u07a8 \u07aa \u07b0 \u07a6 \u07ac \u0788 \u0787 \u0782 \u0786 \u078a \ufdf2 {enter}", + "{shift} \\ \u0792 \u0791 \u0790 \u0794 \u0785 \u078b \u0784 \u0781 \u0793 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u00d7 \u2019 \u201c / : \u07a4 \u079c \u07a3 \u07a0 \u0799 \u00f7 { }", + "< > . \u060c \" \u07a5 \u07a2 \u0798 \u079a \u07a1 \u061b {enter}", + "{shift} | \u0796 \u0795 \u078f \u0797 \u079f \u079b \u079d \\ \u079e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} , {empty} {empty} {empty} {empty} {empty} {empty} ; {enter}", + "{shift} {empty} {empty} {empty} {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Dutch Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdne.html + */ +jQuery.keyboard.layouts['ms-Dutch'] = { + "name" : "ms-Dutch", + "lang" : ["nl"], + "normal" : [ + "@ 1 2 3 4 5 6 7 8 9 0 / \u00B0 {bksp}", + "{tab} q w e r t y u i o p \u00A8 * {enter}", + "a s d f g h j k l + \u00B4 < ", + "{shift} ] z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # $ % & _ ( ) ' ? ~ {bksp}", + "{tab} Q W E R T Y U I O P ^ | {enter}", + "A S D F G H J K L \u00B1 ` > ", + "{shift} [ Z X C V B N M ; : = {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00AC \u00B9 \u00B2 \u00B3 \u00BC \u00BD \u00BE \u00A3 { } {empty} \\ \u00B8 {bksp}", + "{tab} {empty} {empty} \u20AC \u00B6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} \u00DF {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} \u00A6 \u00AB \u00BB \u00A2 {empty} {empty} {empty} \u00B5 {empty} \u00B7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Estonian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdest.html + */ +jQuery.keyboard.layouts['ms-Estonian'] = { + "name" : "ms-Estonian", + "lang" : ["et"], + "normal" : [ + "\u02c7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00fc \u00f5 '", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00dc \u00d5 *", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 \u00bd", + "{empty} \u0161 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{shift} | \u017e {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} @ \u00a3 $ {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 \u00bd", + "{empty} \u0160 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{shift} | \u017d {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Faeroese Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfo.html + */ +jQuery.keyboard.layouts['ms-Faroese'] = { + "name" : "ms-Faroese", + "lang" : ["fo"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00F0 {enter}", + "a s d f g h j k l \u00E6 \u00F8 ' ", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 \u00D0 {enter}", + "A S D F G H J K L \u00C6 \u00D8 * ", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} | {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A8 ~ {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {empty} ", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Finnish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfi.html + */ +jQuery.keyboard.layouts['ms-Finnish'] = { + "name" : "ms-Finnish", + "lang" : ["fi"], + "normal" : [ + "\u00A7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8 {enter}", + "a s d f g h j k l \u00F6 \u00E4 ' ", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^ {enter}", + "A S D F G H J K L \u00D6 \u00C4 * ", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* French Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfr.html + */ +jQuery.keyboard.layouts['ms-French'] = { + "name" : "ms-French", + "lang" : ["fr"], + "normal" : [ + "\u00B2 & \u00E9 \" ' ( - \u00E8 _ \u00E7 \u00E0 ) = {bksp}", + "{tab} a z e r t y u i o p ^ $", + "q s d f g h j k l m \u00F9 * {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 \u00B0 + {bksp}", + "{tab} A Z E R T Y U I O P \u00A8 \u00A3", + "Q S D F G H J K L M % \u00B5 {enter}", + "{shift} > W X C V B N ? . / \u00A7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} ~ # { [ | ` \\ ^ @ ] } {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A4", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Gaelic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgae.html + */ +jQuery.keyboard.layouts['ms-Gaelic'] = { + "name" : "ms-Gaelic", + "lang" : ["gd"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' # {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "` ! \" \u00A3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : @ ~ {enter}", + "{shift} | Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00A6 {empty} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00E9 {empty} {empty} \u00FD \u00FA \u00ED \u00F3 {empty} {empty} {empty}", + "\u00E1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ' {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00C9 {empty} {empty} \u00DD \u00DA \u00CD \u00D3 {empty} {empty} {empty}", + "\u00C1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Georgian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgeo.html + */ +jQuery.keyboard.layouts['ms-Georgian'] = { + "name" : "ms-Georgian", + "lang" : ["ka"], + "normal" : [ + "\u201e ! ? \u2116 \u00a7 % : . ; , / \u2013 = {bksp}", + "{tab} \u10e6 \u10ef \u10e3 \u10d9 \u10d4 \u10dc \u10d2 \u10e8 \u10ec \u10d6 \u10ee \u10ea (", + "\u10e4 \u10eb \u10d5 \u10d7 \u10d0 \u10de \u10e0 \u10dd \u10da \u10d3 \u10df {enter}", + "{shift} ( \u10ed \u10e9 \u10e7 \u10e1 \u10db \u10d8 \u10e2 \u10e5 \u10d1 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u201c 1 2 3 4 5 6 7 8 9 0 - + {bksp}", + "{tab} \u10e6 \u10ef \u10e3 \u10d9 \u10d4 \u10dc \u10d2 \u10e8 \u10ec \u10d6 \u10ee \u10ea )", + "\u10e4 \u10eb \u10d5 \u10d7 \u10d0 \u10de \u10e0 \u10dd \u10da \u10d3 \u10df {enter}", + "{shift} ) \u10ed \u10e9 \u10e7 \u10e1 \u10db \u10d8 \u10e2 \u10e5 \u10d1 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} \u10f1 {empty} {empty} {empty} {empty} {empty} \u10f4 {empty} {empty}", + "\u10f6 {empty} \u10f3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} \u10f2 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Georgian (Ergonomic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgeoer.html + */ +jQuery.keyboard.layouts['ms-Georgian (Ergonomic)'] = { + "name" : "ms-Georgian (Ergonomic)", + "lang" : ["ka"], + "normal" : [ + "\u201e ! \u2116 , ; % : ? . ( ) - \u201c {bksp}", + "{tab} \u10e9 \u10de \u10e3 \u10eb \u10ed \u10e2 \u10d7 \u10dc \u10d5 \u10e8 \u10d9 \u10e5 /", + "\u10ee \u10d8 \u10d0 \u10d4 \u10dd \u10d3 \u10db \u10e1 \u10e0 \u10d1 \u10d2 {enter}", + "{shift} \\ \u10ef \u10f0 \u10e7 \u10e6 \u10df \u10d6 \u10ea \u10da \u10e4 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "' 1 2 3 4 5 6 7 8 9 0 + = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} / {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ! @ # $ \u20ac ^ & * ( ) \u2014 = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u10fc \u10f3 {empty} [ ] \\", + "\u10f4 \u10f2 \u10fa \u10f1 {empty} {empty} {empty} {empty} {empty} {empty} \u10f9 {enter}", + "{shift} {empty} {empty} \u10f5 \u10f8 \u10f7 {empty} {empty} {empty} {empty} \u10f6 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} \u00a7 {empty} {empty} {empty} {empty} \u00b0 \u00ab \u00bb _ {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} I {empty} {empty} { } |", + "{empty} {empty} D {empty} {empty} {empty} {empty} {empty} L {empty} \" {enter}", + "{shift} {empty} {empty} X C V {empty} {empty} M < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Georgian (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgeoqw.html + */ +jQuery.keyboard.layouts['ms-Georgian (QWERTY)'] = { + "name" : "ms-Georgian (QWERTY)", + "lang" : ["ka"], + "normal" : [ + "\u201e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u10e5 \u10ec \u10d4 \u10e0 \u10e2 \u10e7 \u10e3 \u10d8 \u10dd \u10de [ ] ~", + "\u10d0 \u10e1 \u10d3 \u10e4 \u10d2 \u10f0 \u10ef \u10d9 \u10da ; ' {enter}", + "{shift} \\ \u10d6 \u10ee \u10ea \u10d5 \u10d1 \u10dc \u10db , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u201c ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} {empty} \u10ed {empty} \u10e6 \u10d7 {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} \u10e8 {empty} {empty} {empty} {empty} \u10df {empty} {empty} : \" {enter}", + "{shift} {empty} \u10eb {empty} \u10e9 {empty} {empty} N {empty} < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u201e \u201c {empty} \u20ac {empty} {empty} \u00b0 {empty} {empty} \u2014 \u2013 {bksp}", + "{tab} {empty} {empty} \u10f1 \u00ae {empty} \u10f8 {empty} \u10f2 {empty} {empty} {empty} {empty} {empty}", + "\u10fa {empty} {empty} \u10f6 \u10f9 \u10f5 \u10f7 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} \u10f4 \u00a9 \u10f3 {empty} \u10fc {empty} \u00ab \u00bb {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* German Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgr.html + */ +jQuery.keyboard.layouts['ms-German'] = { + "name" : "ms-German", + "lang" : ["de"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00DF \u00B4 {bksp}", + "{tab} q w e r t z u i o p \u00FC +", + "a s d f g h j k l \u00F6 \u00E4 # {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 ! \" \u00A7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00DC *", + "A S D F G H J K L \u00D6 \u00C4 ' {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 {empty} {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* German (IBM) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgr1.html + */ +jQuery.keyboard.layouts['ms-German (IBM)'] = { + "name" : "ms-German (IBM)", + "lang" : ["de"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00DF \u00B4 {bksp}", + "{tab} q w e r t z u i o p \u00FC +", + "a s d f g h j k l \u00F6 \u00E4 # {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 ! \" \u00A7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00DC *", + "A S D F G H J K L \u00D6 \u00C4 ' {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 {empty} {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhe.html + */ +jQuery.keyboard.layouts['ms-Greek'] = { + "name" : "ms-Greek", + "lang" : ["el"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} ; \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 [ ]", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 ' \\ {enter}", + "{shift} < \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} : \u0385 \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 { }", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \" | {enter}", + "{shift} > \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} {empty} {empty} \u20AC \u00AE {empty} \u00A5 {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 {empty} \u00AC {enter}", + "{shift} {empty} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (220) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhe220.html + */ +jQuery.keyboard.layouts['ms-Greek (220)'] = { + "name" : "ms-Greek (220)", + "lang" : ["el"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 ' ] {bksp}", + "{tab} \u037E \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 + }", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 \u00A8 # {enter}", + "{shift} < \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B1 ! \" \u00A3 $ % & / ( ) = ? [ {bksp}", + "{tab} : ~ \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 * {", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \u0385 @ {enter}", + "{shift} > \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} {empty} {empty} \u20AC \u00AE {empty} \u00A5 {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 \u0385 \u00AC {enter}", + "{shift} {empty} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (220) Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhela2.html + */ +jQuery.keyboard.layouts['ms-Greek (220) Latin'] = { + "name" : "ms-Greek (220) Latin", + "lang" : ["el"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' ] {bksp}", + "{tab} q w e r t y u i o p + }", + "a s d f g h j k l \u0384 \u00A8 # {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" # $ % & / ( ) = ? [ {bksp}", + "{tab} Q W E R T Y U I O P * {", + "A S D F G H J K L \u00A8 \u0385 @ {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 \u0385 \u00AC {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (319) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhe319.html + */ +jQuery.keyboard.layouts['ms-Greek (319)'] = { + "name" : "ms-Greek (319)", + "lang" : ["el"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u00B7 \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 [ ]", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 \u2019 \u00B2 {enter}", + "{shift} \u00A7 \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B1 ! \" \u00A3 $ % \u00AC / ( ) = \u00B0 * {bksp}", + "{tab} \u2015 \u00A6 \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 \u00AB \u00BB", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \u2018 \u00B3 {enter}", + "{shift} \u00A9 \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (319) Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhela3.html + */ +jQuery.keyboard.layouts['ms-Greek (319) Latin'] = { + "name" : "ms-Greek (319) Latin", + "lang" : ["el"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l \u00B4 ^ ` {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L \u00A8 ~ @ {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgkl.html + */ +jQuery.keyboard.layouts['ms-Greek Latin'] = { + "name" : "ms-Greek Latin", + "lang" : ["el"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' \\ {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : \" | {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00A1 \u00B2 \u00B3 \u00A4 \u20AC \u00BC \u00BD \u00BE \u2018 \u2019 \u00A5 \u00D7 {bksp}", + "{tab} \u00E4 \u00E5 \u00E9 \u00AE \u00FE \u00FC \u00FA \u00ED \u00F3 \u00F6 \u00AB \u00BB", + "\u00E1 \u00DF \u00F0 {empty} {empty} {empty} {empty} {empty} \u00F8 \u00B6 \u00B4 \u00AC {enter}", + "{shift} \u00E6 {empty} \u00A9 {empty} {empty} \u00F1 \u00B5 \u00E7 {empty} \u00BF {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00B9 {empty} {empty} \u00A3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 {bksp}", + "{tab} \u00C4 \u00C5 \u00C9 {empty} \u00DE \u00DC \u00DA \u00CD \u00D3 \u00D6 {empty} {empty}", + "\u00C1 \u00A7 \u00D0 {empty} {empty} {empty} {empty} {empty} \u00D8 \u00B0 \u00A8 \u00A6 {enter}", + "{shift} \u00C6 {empty} \u00A2 {empty} {empty} \u00D1 {empty} \u00C7 {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek Polytonic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhept.html + */ +jQuery.keyboard.layouts['ms-Greek Polytonic'] = { + "name" : "ms-Greek Polytonic", + "lang" : ["el"], + "normal" : [ + "~ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} ; \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 [ ]", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 ' \\ {enter}", + "{shift} \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "` ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} : \u0385 \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 { }", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \" | {enter}", + "{shift} \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u1FC1 \u03DA \u03DE \u03E0 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} \u1FFD {empty} \u20AC \u00AE {empty} \u00A5 {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 \u1FBF \u00AC {enter}", + "{shift} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} {empty} {empty} \u1FBE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} \u00B2 \u00B3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u1FDF {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0387", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u1FFE \u1FDD {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u1FDE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greenlandic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgrlnd.html + */ +jQuery.keyboard.layouts['ms-Greenlandic'] = { + "name" : "ms-Greenlandic", + "lang" : ["kl"], + "normal" : [ + "\u00bd 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00e6 \u00f8 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00c6 \u00d8 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} | {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} \u00fe {empty} ~ {empty}", + "{empty} \u00df \u00f0 {empty} {empty} {empty} {empty} \u0138 {empty} {empty} {empty} {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00de {empty} {empty} {empty}", + "{empty} {empty} \u00d0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Gujarati Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinguj.html + */ +jQuery.keyboard.layouts['ms-Gujarati'] = { + "name" : "ms-Gujarati", + "lang" : ["gu"], + "normal" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 - \u0ac3 {bksp}", + "{tab} \u0acc \u0ac8 \u0abe \u0ac0 \u0ac2 \u0aac \u0ab9 \u0a97 \u0aa6 \u0a9c \u0aa1 \u0abc \u0ac9", + "\u0acb \u0ac7 \u0acd \u0abf \u0ac1 \u0aaa \u0ab0 \u0a95 \u0aa4 \u0a9a \u0a9f {enter}", + "{shift} \u0a82 \u0aae \u0aa8 \u0ab5 \u0ab2 \u0ab8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} \u0a8d \u0ac5 \u0acd\u0ab0 \u0ab0\u0acd \u0a9c\u0acd\u0a9e \u0aa4\u0acd\u0ab0 \u0a95\u0acd\u0ab7 \u0ab6\u0acd\u0ab0 ( ) \u0a83 \u0a8b {bksp}", + "{tab} \u0a94 \u0a90 \u0a86 \u0a88 \u0a8a \u0aad \u0a99 \u0a98 \u0aa7 \u0a9d \u0aa2 \u0a9e \u0a91", + "\u0a93 \u0a8f \u0a85 \u0a87 \u0a89 \u0aab {empty} \u0a96 \u0aa5 \u0a9b \u0aa0 {enter}", + "{shift} \u0a81 \u0aa3 {empty} {empty} \u0ab3 \u0ab6 \u0ab7 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0ae7 \u0ae8 \u0ae9 \u0aea \u0aeb \u0aec \u0aed \u0aee \u0aef \u0ae6 {empty} \u0ac4 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0965 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0ae0 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \u0ad0 {empty} {empty} {empty} {empty} {empty} {empty} \u0abd {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// gu = ISO 639-1 code for Gujarati +// *********************** +jQuery.keyboard.language.gu = { + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; + +/* Hausa Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhau.html + */ +jQuery.keyboard.layouts['ms-Hausa'] = { + "name" : "ms-Hausa", + "lang" : ["ha"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} \u2018 \u2019 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} \u01b4 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} \u0257 {empty} {empty} {empty} {empty} \u0199 {empty} \u00b6 \u2019 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} \u0253 {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} \u01b3 {empty} {empty} {empty} {empty} {empty} {empty} \u00a6", + "{empty} {empty} \u018a {empty} {empty} {empty} {empty} \u0198 {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} \u0181 {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hebrew Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdheb.html + */ +jQuery.keyboard.layouts['ms-Hebrew'] = { + "name" : "ms-Hebrew", + "lang" : ["he"], + "normal" : [ + "; 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} / ' \u05e7 \u05e8 \u05d0 \u05d8 \u05d5 \u05df \u05dd \u05e4 ] [ \\", + "\u05e9 \u05d3 \u05d2 \u05db \u05e2 \u05d9 \u05d7 \u05dc \u05da \u05e3 , {enter}", + "{shift} \\ \u05d6 \u05e1 \u05d1 \u05d4 \u05e0 \u05de \u05e6 \u05ea \u05e5 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} Q W E R T Y U I O P } { |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M > < / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} \u20aa {empty} {empty} {empty} {empty} {empty} {empty} \u05bf {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} \u05f0 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} \u05f2 \u05f1 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hindi Traditional Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinhin.html + */ +jQuery.keyboard.layouts['ms-Hindi Traditional'] = { + "name" : "ms-Hindi Traditional", + "lang" : ["hi"], + "normal" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 - \u0943 {bksp}", + "{tab} \u094c \u0948 \u093e \u0940 \u0942 \u092c \u0939 \u0917 \u0926 \u091c \u0921 \u093c \u0949", + "\u094b \u0947 \u094d \u093f \u0941 \u092a \u0930 \u0915 \u0924 \u091a \u091f {enter}", + "{shift} \u0949 \u0902 \u092e \u0928 \u0935 \u0932 \u0938 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} \u090d \u0945 \u094d\u0930 \u0930\u094d \u091c\u094d\u091e \u0924\u094d\u0930 \u0915\u094d\u0937 \u0936\u094d\u0930 ( ) \u0903 \u090b {bksp}", + "{tab} \u0914 \u0910 \u0906 \u0908 \u090a \u092d \u0919 \u0918 \u0927 \u091d \u0922 \u091e \u0911", + "\u0913 \u090f \u0905 \u0907 \u0909 \u092b \u0931 \u0916 \u0925 \u091b \u0920 {enter}", + "{shift} \u0911 \u0901 \u0923 {empty} {empty} \u0933 \u0936 \u0937 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 - = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; ' {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} , . {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{shift} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hungarian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhu.html + */ +jQuery.keyboard.layouts['ms-Hungarian'] = { + "name" : "ms-Hungarian", + "lang" : ["hu"], + "normal" : [ + "0 1 2 3 4 5 6 7 8 9 \u00F6 \u00FC \u00F3 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00FA", + "a s d f g h j k l \u00E9 \u00E1 \u0171 {enter}", + "{shift} \u00ED y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ' \" + ! % / = ( ) \u00D6 \u00DC \u00D3 {bksp}", + "{tab} Q W E R T Z U I O P \u0150 \u00DA", + "A S D F G H J K L \u00C9 \u00C1 \u0170 {enter}", + "{shift} \u00CD Y X C V B N M ? : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {bksp}", + "{tab} \\ | \u00C4 {empty} {empty} {empty} \u20AC \u00CD {empty} {empty} \u00F7 \u00D7", + "\u00E4 \u0111 \u0110 [ ] {empty} \u00ED \u0142 \u0141 $ \u00DF \u00A4 {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hungarian 101-key Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhu1.html + */ +jQuery.keyboard.layouts['ms-Hungarian 101-key'] = { + "name" : "ms-Hungarian 101-key", + "lang" : ["hu"], + "normal" : [ + "\u00ED 1 2 3 4 5 6 7 8 9 \u00F6 \u00FC \u00F3 {bksp}", + "{tab} q w e r t y u i o p \u0151 \u00FA", + "a s d f g h j k l \u00E9 \u00E1 \u0171 {enter}", + "{shift} \u00ED z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00CD ' \" + ! % / = ( ) \u00D6 \u00DC \u00D3 {bksp}", + "{tab} Q W E R T Y U I O P \u0150 \u00DA", + "A S D F G H J K L \u00C9 \u00C1 \u0170 {enter}", + "{shift} \u00CD Z X C V B N M ? : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "0 ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD {empty} {empty} {bksp}", + "{tab} \\ | \u00C4 \u00A7 \u00A4 {empty} \u20AC \u00CD {empty} {empty} \u00F7 \u00D7", + "\u00E4 \u0111 \u0110 [ ] {empty} \u00ED \u0142 \u0141 $ \u00DF \\ {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Icelandic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdic.html + */ +jQuery.keyboard.layouts['ms-Icelandic'] = { + "name" : "ms-Icelandic", + "lang" : ["is"], + "normal" : [ + "\u00B0 1 2 3 4 5 6 7 8 9 0 \u00F6 - {bksp}", + "{tab} q w e r t y u i o p \u00F0 '", + "a s d f g h j k l \u00E6 \u00B4 + {enter}", + "{shift} < z x c v b n m , . \u00FE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A8 ! \" # $ % & / ( ) = \u00D6 _ {bksp}", + "{tab} Q W E R T Y U I O P \u00D0 ?", + "A S D F G H J K L \u00C6 ' * {enter}", + "{shift} > Z X C V B N M ; : \u00DE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00B0 {empty} {empty} {empty} {empty} \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ ` {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Igbo Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdibo.html + */ +jQuery.keyboard.layouts['ms-Igbo'] = { + "name" : "ms-Igbo", + "lang" : ["ig"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} \u2018 \u2019 {empty} {empty} {bksp}", + "{tab} \u1ecb\u0301 \u1ecb\u0300 \u1ecb\u0304 {empty} {empty} {empty} \u1ee5 \u1ecb \u1ecd {empty} {empty} {empty} {empty}", + "\u1ecd\u0301 \u1ecd\u0300 \u1ecd\u0304 \u1ee5\u0301 \u1ee5\u0300 \u1ee5\u0304 {empty} {empty} {empty} \u00b6 \u00b4 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} \u1e45 m\u0300 m\u0304 n\u0304 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u1eca\u0301 \u1eca\u0300 \u1eca\u0304 {empty} {empty} {empty} \u1ee4 \u1eca \u1ecc {empty} {empty} {empty} \u00a6", + "\u1ecc\u0301 \u1ecc\u0300 \u1ecc\u0304 \u1ee4\u0301 \u1ee4\u0300 \u1ee4\u0304 {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} \u1e44 M\u0300 M\u0304 N\u0304 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Inuktitut - Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdiulat.html + */ +jQuery.keyboard.layouts['ms-Inuktitut - Latin'] = { + "name" : "ms-Inuktitut - Latin", + "lang" : ["iu"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ 1 2 3 4 5 6 7 8 9 0 _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ! @ # $ % * & \u2022 [ ] {empty} = {bksp}", + "{tab} \u1590 \u1404 \u1580 \u146e \u144f \u14f0 \u14a6 \u14c3 \u14d6 \u1529 \u201c \u2018 {empty}", + "\u1592 \u1406 \u1582 \u1470 \u1451 \u14f2 \u14a8 \u14c5 \u14d8 \u2026 \u0142 {enter}", + "{shift} {empty} \u1594 \u140b \u1584 \u1473 \u1456 \u14f5 \u14ab {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u00a2 \u00ae \u00bc \u00bd \u00be ^ \u2154 \u00a9 \u00f7 + {empty} {empty} {bksp}", + "{tab} \u148c \u1432 \u1547 {empty} \u1672 \u1674 \u1676 \u15a5 \u15a1 {empty} \u201d \u2019 |", + "\u148e \u1434 \u1549 \u1556 {empty} {empty} \u152b \u1558 \u15a3 {empty} \u0141 {enter}", + "{shift} | \u1491 \u1439 \u154c { } \u14c8 \u14db {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Inuktitut - Naqittaut Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinuk2.html + */ +jQuery.keyboard.layouts['ms-Inuktitut - Naqittaut'] = { + "name" : "ms-Inuktitut - Naqittaut", + "lang" : ["iu"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { [ |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ! @ # $ % * & \u2022 [ ] {empty} = {bksp}", + "{tab} \u1590 \u1404 \u1580 \u146e \u144f \u14f0 \u14a6 \u14c3 \u14d6 \u1529 \u201c \u2018 {empty}", + "\u1592 \u1406 \u1582 \u1470 \u1451 \u14f2 \u14a8 \u14c5 \u14d8 \u014b \u0142 {enter}", + "{shift} {empty} \u1594 \u140b \u1584 \u1473 \u1456 \u14f5 \u14ab {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u00a2 \u00ae \u00bc \u00bd \u00be ^ \u2154 \u00a9 \u00f7 + {empty} {empty} {bksp}", + "{tab} \u148c \u1432 \u1547 {empty} \u1672 \u1674 \u1676 \u15a5 \u15a1 {empty} \u201d \u2019 |", + "\u148e \u1434 \u1549 \u1556 {empty} {empty} \u152b \u1558 \u15a3 {empty} \u0141 {enter}", + "{shift} | \u1491 \u1439 \u154c { } \u14c8 \u14db {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Irish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdir.html + */ +jQuery.keyboard.layouts['ms-Irish'] = { + "name" : "ms-Irish", + "lang" : ["ga"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00ac ! \" \u00a3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00a6 {empty} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e9 {empty} {empty} {empty} \u00fa \u00ed \u00f3 {empty} {empty} {empty} {empty}", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00a6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c9 {empty} {empty} {empty} \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Italian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdit.html + */ +jQuery.keyboard.layouts['ms-Italian'] = { + "name" : "ms-Italian", + "lang" : ["it"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00EC {bksp}", + "{tab} q w e r t y u i o p \u00E8 +", + "a s d f g h j k l \u00F2 \u00E0 \u00F9 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" \u00A3 $ % & / ( ) = ? ^ {bksp}", + "{tab} Q W E R T Y U I O P \u00E9 *", + "A S D F G H J K L \u00E7 \u00B0 \u00A7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} @ # {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Italian (142) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdit142.html + */ +jQuery.keyboard.layouts['ms-Italian (142)'] = { + "name" : "ms-Italian (142)", + "lang" : ["it"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00EC {bksp}", + "{tab} q w e r t y u i o p \u00E8 +", + "a s d f g h j k l \u00F2 \u00E0 \u00F9 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" \u00A3 $ % & / ( ) = ? ^ {bksp}", + "{tab} Q W E R T Y U I O P \u00E9 *", + "A S D F G H J K L \u00E7 \u00B0 \u00A7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} # {empty} \u20AC {empty} { [ ] } {empty} {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Japanese Hiragana Keyboard Layout +* from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdJapan.html +*/ +jQuery.keyboard.layouts["ms-Japanese Hiragana"] = { + "name" : "ms-Japanese Hiragana", + "lang" : ["ja"], + + // Hiragana + "normal" : [ + "\u308d:Ro \u306c:Nu \u3075:Hu \u3042:A \u3046:U \u3048:E \u304a:O \u3084:Ya \u3086:Yu \u3088:Yo \u308f:Wa \u307b:Ho \u3078:He {bksp}", + "{tab} \u305f:Ta \u3066:Te \u3044:I \u3059:Su \u304b:Ka \u3093:N \u306a:Na \u306b:Ni \u3089:Ra \u305b:Se \u309b \u309c \u3080:Mu", + "\u3061:Ti \u3068:To \u3057:Si \u306f:Ha \u304D:Ki \u304f:Ku \u307e:Ma \u306e:No \u308a:Ri \u308c:Re \u3051:Ke {enter}", + "{shift} \u3064:Tu \u3055:Sa \u305d:So \u3072:Hi \u3053:Ko \u307f:Mi \u3082:Mo \u306d:Ne \u308b:Ru \u3081:Me {shift}", + "{accept} {space} {meta3} {meta1:Kana} {cancel}" + ], + "shift" : [ + "\u308d:Ro \u306c:Nu \u3075:Hu \u3041:a \u3045:u \u3047:e \u3049:o \u3083:ya \u3085:yu \u3087:yo \u3092:Wo \u30fc \u3078:He {bksp}", + "{tab} \u305f:Ta \u3066:Te \u3043:i \u3059:Su \u304b:Ka \u3093:N \u306a:Na \u306b:Ni \u3089:Ra \u305b:Se \u300c \u300d \u3080:Mu", + "\u3061:Ti \u3068:To \u3057:Si \u306f:Ha \u304D:Ki \u304f:Ku \u307e:Ma \u306e:No \u308a:Ri \u308c:Re \u3051:Ke {enter}", + "{shift} \u3063:tu \u3055:Sa \u305d:So \u3072:Hi \u3053:Ko \u307f:Mi \u3082:Mo \u3001 \u3002 \u30fb {shift}", + "{accept} {space} {meta3} {meta1:Kana} {cancel}" + ], + // English - half width (normal) + // \u5168 全 = full width active; switch to half width + // \u534a 半 = half width active; switch to full width + "meta1" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; : {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {space} {default:Eng} {meta2:\u534a:full} {cancel}" + ], + "meta1-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L + * {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {space} {default:Eng} {meta2:\u534a:full} {cancel}" + ], + // English - full width + "meta2" : [ + "\uff40 \uff11 \uff12 \uff13 \uff14 \uff15 \uff16 \uff17 \uff18 \uff19 \uff10 \uff0d \uff1d {bksp}", + "{tab} \uff51 \uff57 \uff45 \uff52 \uff54 \uff59 \uff55 \uff49 \uff4f \uff50 \uff3b \uff3d \uffe5", + "\uff41 \uff53 \uff44 \uff46 \uff47 \uff48 \uff4a \uff4b \uff4c \uff1b \uff07 {enter}", + "{shift} \uff5a \uff58 \uff43 \uff56 \uff42 \uff4e \uff4d \uff0c \uff0e \uff0f {shift}", + "{accept} {space} {default:Eng} {meta1:\u5168:half} {cancel}" + ], + "meta2-shift" : [ + "\uff5e \uff01 \uff20 \uff03 \uff04 \uff05 \uff3e \uff06 \uff0a \uff08 \uff09 \uff3f \uff0b {bksp}", + "{tab} \uff31 \uff37 \uff25 \uff32 \uff34 \uff39 \uff35 \uff29 \uff2f \uff30 \uff5b \uff5d \uff5c", + "\uff21 \uff33 \uff24 \uff26 \uff27 \uff28 \uff2a \uff2b \uff2c \uff1a \uff02 {enter}", + "{shift} \uff3a \uff38 \uff23 \uff36 \uff22 \uff2e \uff2d \uff1c \uff1e \uff1f {shift}", + "{accept} {space} {meta3:Eng} {meta1:\u5168:half} {cancel}" + ], + // Katakana full width + "meta3" : [ + "\u30ed:Ro \u30cc:Nu \u30d5:Hu \u30a2:A \u30a6:U \u30a8:E \u30aa:O \u30e4:Ya \u30e6:Yu \u30e8:Yo \u30ef:Wa \u30db:Ho \u30d8:He {bksp}", + "{tab} \u30bf:Ta \u30c6:Te \u30a4:I \u30b9:Su \u30ab:Ka \u30f3:N \u30ca:Na \u30cb:Ni \u30e9:Ra \u30bb:Se \u309b \u309c \u30e0:Mu", + "\u30c1:Ti \u30c8:To \u30b7:Si \u30cf:Ha \u30ad:Ki \u30af:Ku \u30de:Ma \u30ce:No \u30ea:Ri \u30ec:Re \u30b1:Ke {enter}", + "{shift} \u30c4:Tu \u30b5:Sa \u30bd:So \u30d2:Hi \u30b3:Ko \u30df:Mi \u30e2:Mo \u30cd:Ne \u30eb:Ru \u30e1:Me {shift}", + "{accept} {space} {default} {meta2} {meta4:\u5168:half} {cancel}" + ], + "meta3-shift" : [ + "\u30ed:Ro \u30cc:Nu \u30d5:Hu \u30a1:a \u30a5:u \u30a7:e \u30a9:o \u30e3:ya \u30e5:yu \u30e7:yo \u30f2:Wo \u30fc \u30d8:He {bksp}", + "{tab} \u30bf:Ta \u30c6:Te \u30a3:i \u30b9:Su \u30ab:Ka \u30f3:N \u30ca:Na \u30cb:Ni \u30e9:Ra \u30bb:Se \u300c \u300d \u30e0:Mu", + "\u30c1:Ti \u30c8:To \u30b7:Si \u30cf:Ha \u30ad:Ki \u30af:Ku \u30de:Ma \u30ce:No \u30ea:Ri \u30ec:Re \u30b1:Ke {enter}", + "{shift} \u30c3:tu \u30b5:Sa \u30bd:So \u30d2:Hi \u30b3:Ko \u30df:Mi \u30e2:Mo \u3001 \u3002 \u30fb {shift}", + "{accept} {space} {default} {meta2} {meta4:\u5168:half} {cancel}" + ], + // Katakana half width + "meta4" : [ + "\uff9b:Ro \uff87:Nu \uff8c:Hu \uff71:A \uff73:U \uff74:E \uff75:O \uff94:Ya \uff95:Yu \uff96:Yo \uff9c:Wa \uff8e:Ho \uff8d:He {bksp}", + "{tab} \uff80:Ta \uff83:Te \uff72:I \uff7d:Su \uff76:Ka \uff9d:N \uff85:Na \uff86:Ni \uff97:Ra \uff7e:Se \uff9e \uff9f \uff91:Mu", + "\uff81:Ti \uff84:To \uff7c:Si \uff8a:Ha \uff77:Ki \uff78:Ku \uff8f:Ma \uff89:No \uff98:Ri \uff9a:Re \uff79:Ke {enter}", + "{shift} \uff82:Tu \uff7b:Sa \uff7f:So \uff8b:Hi \uff7a:Ko \uff90:Mi \uff93:Mo \uff88:Ne \uff99:Ru \uff92:Me {shift}", + "{accept} {space} {default} {meta1} {meta3:\u534a:full} {cancel}" + ], + "meta4-shift" : [ + "\uff9b:Ro \uff87:Nu \uff8c:Hu \uff67:a \uff69:u \uff6a:e \uff6b:o \uff6c:ya \uff6d:yu \uff6e:yo \uff66:Wo \uff70 \uff8d:He {bksp}", + "{tab} \uff80:Ta \uff83:Te \uff68:i \uff7d:Su \uff76:Ka \uff9d:N \uff85:Na \uff86:Ni \uff97:Ra \uff7e:Se \u300c \u300d \uff91:Mu", + "\uff81:Ti \uff84:To \uff7c:Si \uff8a:Ha \uff77:Ki \uff78:Ku \uff8f:Ma \uff89:No \uff98:Ri \uff9a:Re \uff79:Ke {enter}", + "{shift} \uff6f:tu \uff7b:Sa \uff7f:So \uff8b:Hi \uff7a:Ko \uff90:Mi \uff93:Mo \u3001 \u3002 \u30fb {shift}", + "{accept} {space} {default} {meta1} {meta3:\u534a:full} {cancel}" + ] +}; + +/* Kannada Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinkan.html + */ +jQuery.keyboard.layouts['ms-Kannada'] = { + "name" : "ms-Kannada", + "lang" : ["kn"], + "normal" : [ + "\u0cca 1 2 3 4 5 6 7 8 9 0 - \u0cc3 {bksp}", + "{tab} \u0ccc \u0cc8 \u0cbe \u0cc0 \u0cc2 \u0cac \u0cb9 \u0c97 \u0ca6 \u0c9c \u0ca1 {empty}", + "\u0ccb \u0cc7 \u0ccd \u0cbf \u0cc1 \u0caa \u0cb0 \u0c95 \u0ca4 \u0c9a \u0c9f {enter}", + "{shift} \u0cc6 \u0c82 \u0cae \u0ca8 \u0cb5 \u0cb2 \u0cb8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0c92 {empty} {empty} \u0ccd\u0cb0 \u0cb0\u0ccd \u0c9c\u0ccd\u0c9e \u0ca4\u0ccd\u0cb0 \u0c95\u0ccd\u0cb7 \u0cb6\u0ccd\u0cb0 ( ) \u0c83 \u0c8b {bksp}", + "{tab} \u0c94 \u0c90 \u0c86 \u0c88 \u0c8a \u0cad \u0c99 \u0c98 \u0ca7 \u0c9d \u0ca2 \u0c9e", + "\u0c93 \u0c8f \u0c85 \u0c87 \u0c89 \u0cab \u0cb1 \u0c96 \u0ca5 \u0c9b \u0ca0 {enter}", + "{shift} \u0c8e {empty} \u0ca3 {empty} {empty} \u0cb3 \u0cb6 \u0cb7 | / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0ce7 \u0ce8 \u0ce9 \u0cea \u0ceb \u0cec \u0ced \u0cee \u0cef \u0ce6 {empty} \u0cc4 {bksp}", + "{tab} {empty} \u0cd6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} \u0cd5 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0ce0 {bksp}", + "{tab} {empty} {empty} {empty} \u0ce1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} \u0c8c {empty} \u0cde {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Kazakh Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdkaz.html + */ +jQuery.keyboard.layouts['ms-Kazakh'] = { + "name" : "ms-Kazakh", + "lang" : ["kk"], + "normal" : [ + "( \" \u04D9 \u0456 \u04A3 \u0493 , . \u04AF \u04B1 \u049B \u04E9 \u04BB {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u0449 \u0437 \u0445 \u044A \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u044D {enter}", + "{shift} \\ \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E \u2116 {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + ") ! \u04D8 \u0406 \u04A2 \u0492 ; : \u04AE \u04B0 \u049A \u04E8 \u04BA {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u0429 \u0417 \u0425 \u042A /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u042D {enter}", + "{shift} | \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E ? {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Korean Keyboard Layout + * generated from file : ///D : /Repos/Keyboard/tmp/Layouts/Korean/Korean Keyboard Layout.htm + */ +jQuery.keyboard.layouts["ms-Korean"] = { + "name" : "ms-Korean", + "lang" : ["ko"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u1107 \u110c \u1103 \u1100 \u1109 \u116d \u1167 \u1163 \u1162 \u1166 [ ] \u20a9", + "\u1106 \u1102 \u110b \u1105 \u1112 \u1169 \u1165 \u1161 \u1175 ; ' {enter}", + "{shift} \u110f \u1110 \u110e \u1111 \u1172 \u116e \u1173 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} \u1108 \u110d \u1104 \u1101 \u110a \u116d \u1167 \u1163 \u1164 \u1168 { } |", + '\u1106 \u1102 \u110b \u1105 \u1112 \u1169 \u1165 \u1161 \u1175 : " {enter}', + "{shift} \u110f \u1110 \u110e \u1111 \u1172 \u116e \u1173 < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u20a9", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Kyrgyz Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdKyr.html + */ +jQuery.keyboard.layouts['ms-Kyrgyz Cyrillic'] = { + "name" : "ms-Kyrgyz Cyrillic", + "lang" : ["ky"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u04af {empty} {empty} \u04a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} \u04e9 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u04ae {empty} {empty} \u04a2 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} \u04e8 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Lao Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlao.html + */ +jQuery.keyboard.layouts['ms-Lao'] = { + "name" : "ms-Lao", + "lang" : ["lo"], + "normal" : [ + "\" \u0ea2 \u0e9f \u0ec2 \u0e96 \u0eb8 \u0eb9 \u0e84 \u0e95 \u0e88 \u0e82 \u0e8a \u0ecd {bksp}", + "{tab} \u0ebb \u0ec4 \u0eb3 \u0e9e \u0eb0 \u0eb4 \u0eb5 \u0eae \u0e99 \u0e8d \u0e9a \u0ea5 /", + "\u0eb1 \u0eab \u0e81 \u0e94 \u0ec0 \u0ec9 \u0ec8 \u0eb2 \u0eaa \u0ea7 \u0e87 {enter}", + "{shift} \u0e9c \u0e9b \u0ec1 \u0ead \u0eb6 \u0eb7 \u0e97 \u0ea1 \u0ec3 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "' 1 2 3 4 \u0ecc \u0ebc 5 6 7 8 9 \u0ecd\u0ec8 {bksp}", + "{tab} \u0ebb\u0ec9 0 * _ + \u0eb4\u0ec9 \u0eb5\u0ec9 \u0ea3 \u0edc \u0ebd - \u0eab\u0ebc \\", + "\u0eb1\u0ec9 ; . , : \u0eca \u0ecb ! ? % = {enter}", + "{shift} \u20ad ( \u0eaf x \u0eb6\u0ec9 \u0eb7\u0ec9 \u0ec6 \u0edd $ / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0ed1 \u0ed2 \u0ed3 \u0ed4 \u0ed5 \u0ed6 \u0ed7 \u0ed8 \u0ed9 \u0ed0 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Latin American Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdla.html + */ +jQuery.keyboard.layouts['ms-Latin American'] = { + "name" : "ms-Latin American", + "lang" : ["es"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 ' \u00BF {bksp}", + "{tab} q w e r t y u i o p \u00B4 +", + "a s d f g h j k l \u00F1 { } {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 ! \" # $ % & / ( ) = ? \u00A1 {bksp}", + "{tab} Q W E R T Y U I O P \u00A8 *", + "A S D F G H J K L \u00D1 [ ] {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \\ {empty} {bksp}", + "{tab} @ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ ` {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Latvian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlv.html + */ +jQuery.keyboard.layouts['ms-Latvian'] = { + "name" : "ms-Latvian", + "lang" : ["lv"], + "normal" : [ + "\u00ad 1 2 3 4 5 6 7 8 9 0 - f {bksp}", + "{tab} \u016b g j r m v n z \u0113 \u010d \u017e h \u0137", + "\u0161 u s i l d a t e c \u00b4 {enter}", + "{shift} \u0123 \u0146 b \u012b k p o \u0101 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "? ! \u00ab \u00bb $ % / & \u00d7 ( ) _ F {bksp}", + "{tab} \u016a G J R M V N Z \u0112 \u010c \u017d H \u0136", + "\u0160 U S I L D A T E C \u00b0 {enter}", + "{shift} \u0122 \u0145 B \u012a K P O \u0100 ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00ab {empty} {empty} \u20ac \" \u2019 {empty} : {empty} {empty} \u2013 = {bksp}", + "{tab} q \u0123 {empty} \u0157 w y {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u20ac {empty} \u00b4 {enter}", + "{shift} \\ {empty} x {empty} \u0137 {empty} \u00f5 {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} @ # $ ~ ^ \u00b1 {empty} {empty} {empty} \u2014 ; {bksp}", + "{tab} Q \u0122 {empty} \u0156 W Y {empty} {empty} {empty} {empty} { } {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a8 {enter}", + "{shift} | {empty} X {empty} \u0136 {empty} \u00d5 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Latvian (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlv1.html + */ +jQuery.keyboard.layouts['ms-Latvian (QWERTY)'] = { + "name" : "ms-Latvian (QWERTY)", + "lang" : ["lv"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] {empty}", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00ad {empty} \u00ab \u00bb \u20ac {empty} \u2019 {empty} {empty} {empty} {empty} \u2013 {empty} {bksp}", + "{tab} {empty} {empty} \u0113 \u0157 {empty} {empty} \u016b \u012b \u00f5 {empty} {empty} {empty} {empty}", + "\u0101 \u0161 {empty} {empty} \u0123 {empty} {empty} \u0137 \u013c {empty} \u00b4 {enter}", + "{shift} {empty} \u017e {empty} \u010d {empty} {empty} \u0146 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} \u00a7 \u00b0 {empty} \u00b1 \u00d7 {empty} {empty} \u2014 {empty} {bksp}", + "{tab} {empty} {empty} \u0112 \u0156 {empty} {empty} \u016a \u012a \u00d5 {empty} {empty} {empty} {empty}", + "\u0100 \u0160 {empty} {empty} \u0122 {empty} {empty} \u0136 \u013b {empty} \u00a8 {enter}", + "{shift} {empty} \u017d {empty} \u010c {empty} {empty} \u0145 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Lithuanian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlt1.html + */ +jQuery.keyboard.layouts['ms-Lithuanian'] = { + "name" : "ms-Lithuanian", + "lang" : ["lt"], + "normal" : [ + "` \u0105 \u010d \u0119 \u0117 \u012f \u0161 \u0173 \u016b 9 0 - \u017e {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ \u0104 \u010c \u0118 \u0116 \u012e \u0160 \u0172 \u016a ( ) _ \u017d {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 {empty} = {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} ! @ # $ % ^ & * {empty} {empty} {empty} + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Lithuanian IBM Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlt.html + */ +jQuery.keyboard.layouts['ms-Lithuanian IBM'] = { + "name" : "ms-Lithuanian IBM", + "lang" : ["lt"], + "normal" : [ + "` ! \" / ; : , . ? ( ) _ + {bksp}", + "{tab} \u0105 \u017e e r t y u i o p \u012f \u201c |", + "a s d f g h j k l \u0173 \u0117 {enter}", + "{shift} \\ z \u016b c v b n m \u010d \u0161 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0104 \u017d E R T Y U I O P \u012e \u201d \\", + "A S D F G H J K L \u0172 \u0116 {enter}", + "{shift} | Z \u016a C V B N M \u010c \u0160 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} { [ ] } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Lithuanian Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlt2.html + */ +jQuery.keyboard.layouts['ms-Lithuanian Standard'] = { + "name" : "ms-Lithuanian Standard", + "lang" : ["lt"], + "normal" : [ + "` ! - / ; : , . = ( ) ? x {bksp}", + "{tab} \u0105 \u017e e r t y u i o p \u012f w q", + "a s d \u0161 g h j k l \u0173 \u0117 {enter}", + "{shift} < z \u016b c v b n m \u010d f / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ 1 2 3 4 5 6 7 8 9 0 + X {bksp}", + "{tab} \u0104 \u017d E R T Y U I O P \u012e W Q", + "A S D \u0160 G H J K L \u0172 \u0116 {enter}", + "{shift} > Z \u016a C V B N M \u010c F / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00b4 @ _ # $ \u00a7 ^ & * [ ] ' % {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \" {enter}", + "{shift} \u2013 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u201e \u201c {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Luxembourgish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsf.html + */ +jQuery.keyboard.layouts['ms-Luxembourgish'] = { + "name" : "ms-Luxembourgish", + "lang" : ["lb"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 ' ^ {bksp}", + "{tab} q w e r t z u i o p \u00e8 \u00a8 $", + "a s d f g h j k l \u00e9 \u00e0 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 + \" * \u00e7 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00fc ! \u00a3", + "A S D F G H J K L \u00f6 \u00e4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00a6 @ # \u00b0 \u00a7 \u00ac | \u00a2 {empty} {empty} \u00b4 ~ {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Macedonian (FYROM) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmac.html + */ +jQuery.keyboard.layouts['ms-Macedonian (FYROM)'] = { + "name" : "ms-Macedonian (FYROM)", + "lang" : ["mk"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0455 \u0443 \u0438 \u043e \u043f \u0448 \u0453 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045c {enter}", + "{shift} \u0451 \u0437 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \u201e \u201c \u2019 % \u2018 & * ( ) _ + {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0405 \u0423 \u0418 \u041e \u041f \u0428 \u0403 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040c {enter}", + "{shift} \u0401 \u0417 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0402 \u0452 {empty}", + "{empty} {empty} {empty} [ ] {empty} {empty} {empty} {empty} \u040b \u045b {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Macedonian (FYROM) - Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmacst.html + */ +jQuery.keyboard.layouts['ms-Macedonian (FYROM) - Standard'] = { + "name" : "ms-Macedonian (FYROM) - Standard", + "lang" : ["mk"], + "normal" : [ + "\u045d 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0455 \u0443 \u0438 \u043e \u043f \u0448 \u0453 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045c {enter}", + "{shift} \u0450 \u0437 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u040d ! \u201e \u201c ' % \u201a \u2018 * ( ) - + {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0405 \u0423 \u0418 \u041e \u041f \u0428 \u0403 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040c {enter}", + "{shift} \u0400 \u0417 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00b0 @ # $ {empty} ^ & \u2026 { } \u2014 \u0301 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Malayalam Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinmal.html + */ +jQuery.keyboard.layouts['ms-Malayalam'] = { + "name" : "ms-Malayalam", + "lang" : ["ml"], + "normal" : [ + "\u0d4a 1 2 3 4 5 6 7 8 9 0 - \u0d43 {bksp}", + "{tab} \u0d4c \u0d48 \u0d3e \u0d40 \u0d42 \u0d2c \u0d39 \u0d17 \u0d26 \u0d1c \u0d21 {empty}", + "\u0d4b \u0d47 \u0d4d \u0d3f \u0d41 \u0d2a \u0d30 \u0d15 \u0d24 \u0d1a \u0d1f {enter}", + "{shift} \u0d46 \u0d02 \u0d2e \u0d28 \u0d35 \u0d32 \u0d38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0d12 {empty} {empty} \u0d4d\u0d30 {empty} {empty} {empty} \u0d15\u0d4d\u0d37 {empty} ( ) \u0d03 \u0d0b {bksp}", + "{tab} \u0d14 \u0d10 \u0d06 \u0d08 \u0d0a \u0d2d \u0d19 \u0d18 \u0d27 \u0d1d \u0d22 \u0d1e", + "\u0d13 \u0d0f \u0d05 \u0d07 \u0d09 \u0d2b \u0d31 \u0d16 \u0d25 \u0d1b \u0d20 {enter}", + "{shift} \u0d0e {empty} \u0d23 {empty} \u0d34 \u0d33 \u0d36 \u0d37 {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0d67 \u0d68 \u0d69 \u0d6a \u0d6b \u0d6c \u0d6d \u0d6e \u0d6f \u0d66 {empty} {empty} {bksp}", + "{tab} \u0d57 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0d60 {bksp}", + "{tab} {empty} {empty} {empty} \u0d61 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} \u0d0c {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Maltese 47-Key Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmlt47.html + */ +jQuery.keyboard.layouts['ms-Maltese 47-Key'] = { + "name" : "ms-Maltese 47-Key", + "lang" : ["mt"], + "normal" : [ + "\u010b 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u0121 \u0127 \u017c", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u010a ! @ \u20ac $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u0120 \u0126 \u017b", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e8 {empty} {empty} {empty} \u00f9 \u00ec \u00f2 {empty} [ ] \\", + "\u00e0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c8 {empty} {empty} {empty} \u00d9 \u00cc \u00d2 {empty} { } |", + "\u00c0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Maltese 48-Key Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmlt48.html + */ +jQuery.keyboard.layouts['ms-Maltese 48-Key'] = { + "name" : "ms-Maltese 48-Key", + "lang" : ["mt"], + "normal" : [ + "\u010b 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u0121 \u0127 #", + "a s d f g h j k l ; ' {enter}", + "{shift} \u017c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u010a ! \" \u20ac $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u0120 \u0126 ~", + "A S D F G H J K L : @ {enter}", + "{shift} \u017b Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e8 {empty} {empty} {empty} \u00f9 \u00ec \u00f2 {empty} [ ] {empty}", + "\u00e0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c8 {empty} {empty} {empty} \u00d9 \u00cc \u00d2 {empty} { } {empty}", + "\u00c0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Maori Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmaori.html + */ +jQuery.keyboard.layouts['ms-Maori'] = { + name : "ms-Maori", + lang : ["mi"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + shift : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Marathi Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinmar.html + */ +jQuery.keyboard.layouts['ms-Marathi'] = { + "name" : "ms-Marathi", + "lang" : ["mr"], + "normal" : [ + "{empty} \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 - \u0943 {bksp}", + "{tab} \u094c \u0948 \u093e \u0940 \u0942 \u092c \u0939 \u0917 \u0926 \u091c \u0921 \u093c \u0949", + "\u094b \u0947 \u094d \u093f \u0941 \u092a \u0930 \u0915 \u0924 \u091a \u091f {enter}", + "{shift} \u0949 \u0902 \u092e \u0928 \u0935 \u0932 \u0938 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} \u090d \u0945 \u094d\u0930 \u0930\u094d \u091c\u094d\u091e \u0924\u094d\u0930 \u0915\u094d\u0937 \u0936\u094d\u0930 ( ) \u0903 \u090b {bksp}", + "{tab} \u0914 \u0910 \u0906 \u0908 \u090a \u092d \u0919 \u0918 \u0927 \u091d \u0922 \u091e \u0911", + "\u0913 \u090f \u0905 \u0907 \u0909 \u092b \u0931 \u0916 \u0925 \u091b \u0920 {enter}", + "{shift} \u0911 \u0901 \u0923 {empty} {empty} \u0933 \u0936 \u0937 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; ' {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} , . {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{shift} {empty} \u093d \u0950 {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Mongolian Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmon.html + */ +jQuery.keyboard.layouts['ms-Mongolian Cyrillic'] = { + "name" : "ms-Mongolian Cyrillic", + "lang" : ["mn"], + "normal" : [ + "= \u2116 - \" \u20ae : . _ , % ? \u0435 \u0449 {bksp}", + "{tab} \u0444 \u0446 \u0443 \u0436 \u044d \u043d \u0433 \u0448 \u04af \u0437 \u043a \u044a \\", + "\u0439 \u044b \u0431 \u04e9 \u0430 \u0445 \u0440 \u043e \u043b \u0434 \u043f {enter}", + "{shift} \\ \u044f \u0447 \u0451 \u0441 \u043c \u0438 \u0442 \u044c \u0432 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "+ 1 2 3 4 5 6 7 8 9 0 \u0415 \u0429 {bksp}", + "{tab} \u0424 \u0426 \u0423 \u0416 \u042d \u041d \u0413 \u0428 \u04ae \u0417 \u041a \u042a |", + "\u0419 \u042b \u0411 \u04e8 \u0410 \u0425 \u0420 \u041e \u041b \u0414 \u041f {enter}", + "{shift} | \u042f \u0427 \u0401 \u0421 \u041c \u0418 \u0422 \u042c \u0412 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Mongolian (Mongolian Script) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmonmo.html + */ +jQuery.keyboard.layouts['ms-Mongolian (Mongolian Script)'] = { + "name" : "ms-Mongolian (Mongolian Script)", + "lang" : ["mn"], + "normal" : [ + "\u180d 1 2 3 4 5 6 7 8 9 0 \u202f = {bksp}", + "{tab} \u1834 \u1823 \u1821 \u1837 \u1832 \u1836 \u1826 \u1822 \u1825 \u182b \u3014 \u3015 \u1801", + "\u1820 \u1830 \u1833 \u1839 \u182d \u182c \u1835 \u183a \u182f ; \u180b {enter}", + "{shift} {empty} \u183d \u1831 \u183c \u1824 \u182a \u1828 \u182e \u1802 \u1803 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! \u2048 \u2049 \u2014 % {ZWNJ} \u180a {ZWJ} ( ) \u180e + {bksp}", + "{tab} {empty} \u1838 \u1827 \u183f {empty} {empty} {empty} {empty} {empty} {empty} \u3008 \u3009 |", + "{empty} {empty} {empty} {empty} {empty} \u183e {empty} \u183b \u1840 \u1804 \u180c {enter}", + "{shift} {empty} \u1841 {empty} \u1842 {empty} {empty} \u1829 {empty} \u300a \u300b / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Nepali Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdnepr.html + */ +jQuery.keyboard.layouts['ms-Nepali'] = { + "name" : "ms-Nepali", + "lang" : ["ne"], + "normal" : [ + "\u091e \u091c\u094d\u091e \u0918 \u0919 \u091d \u091b \u091f \u0920 \u0921 \u0922 \u0923 ( . {bksp}", + "{tab} \u0924\u094d\u0930 \u0927 \u092d \u091a \u0924 \u0925 \u0917 \u0937 \u092f \u0909 \u0943 \u0947 \u094d\u0930", + "\u092c \u0915 \u092e \u093e \u0928 \u091c \u0935 \u092a \u093f \u0938 \u0941 {enter}", + "{shift} \u0936 \u0939 \u0905 \u0916 \u0926 \u0932 \u092b , \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u091e\u094d \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 ) \u0902 {bksp}", + "{tab} \u094b \u0927\u094d \u092d\u094d \u091a\u094d \u0924\u094d \u0925\u094d \u0917\u094d \u0915\u094d\u0937 \u0907 \u090f \u0930\u094d \u0948 \u094d", + "\u092c\u094d \u0915\u094d \u092e\u094d \u0901 \u0928\u094d \u091c\u094d \u0935\u094d \u092a\u094d \u0940 \u0938\u094d \u0942 {enter}", + "{shift} \u0936\u094d \u0939\u094d \u090b \u0916\u094d \u0926\u094d \u0932\u094d \u0903 ? \u0936\u094d\u0930 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 {empty} + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u090a {empty} \u0914 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} \u0906 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Norwegian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdno.html + */ +jQuery.keyboard.layouts['ms-Norwegian'] = { + "name" : "ms-Norwegian", + "lang" : ["no"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00F8 \u00E6 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00D8 \u00C6 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} \u00B4 {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Norwegian with Sami Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdno1.html + */ +jQuery.keyboard.layouts['ms-Norwegian with Sami'] = { + "name" : "ms-Norwegian with Sami", + "lang" : ["no"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00f8 \u00e6 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00d8 \u00c6 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} \u00b4 {bksp}", + "{tab} \u00e2 {empty} \u20ac {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~ {empty}", + "\u00e1 \u0161 \u0111 \u01e5 \u01e7 \u021f {empty} \u01e9 {empty} \u00f6 \u00e4 {enter}", + "{shift} {empty} \u017e {empty} \u010d \u01ef \u0292 \u014b \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u00c2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00cf \u00d5 {empty} {empty} {empty} {empty}", + "\u00c1 \u0160 \u0110 \u01e4 \u01e6 \u021e {empty} \u01e8 {empty} \u00d6 \u00c4 {enter}", + "{shift} {empty} \u017d {empty} \u010c \u01ee \u01b7 \u014a {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Oriya Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinori.html + */ +jQuery.keyboard.layouts['ms-Oriya'] = { + "name" : "ms-Oriya", + "lang" : ["or"], + "normal" : [ + "1 2 3 4 5 6 7 8 9 0 0 \u0b43 {bksp}", + "{tab} \u0b4c \u0b48 \u0b3e \u0b40 \u0b42 \u0b2c \u0b39 \u0b17 \u0b26 \u0b1c \u0b21 \u0b3c", + "\u0b4b \u0b47 \u0b4d \u0b3f \u0b41 \u0b2a \u0b30 \u0b15 \u0b24 \u0b1a \u0b1f {enter}", + "{shift} \u0b5f \u0b02 \u0b2e \u0b28 \u0b2c \u0b32 \u0b38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} {empty} \u0b4d\u0b30 \u0b30\u0b4d \u0b1c\u0b4d\u0b1e \u0b24\u0b4d\u0b30 \u0b15\u0b4d\u0b37 \u0b36\u0b4d\u0b30 ( ) \u0b03 \u0b0b {bksp}", + "{tab} \u0b14 \u0b10 \u0b06 \u0b08 \u0b0a \u0b2d \u0b19 \u0b18 \u0b27 \u0b1d \u0b22 \u0b1e", + "\u0b13 \u0b0f \u0b05 \u0b07 \u0b09 \u0b2b {empty} \u0b16 \u0b25 \u0b1b \u0b20 {enter}", + "{shift} \u0b71 \u0b01 \u0b23 {empty} {empty} \u0b33 \u0b36 \u0b37 {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0b67 \u0b68 \u0b69 \u0b6a \u0b6b \u0b6c \u0b6d \u0b6e \u0b6f \u0b66 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0b5c {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0b60 {bksp}", + "{tab} {empty} {empty} {empty} \u0b61 {empty} {empty} {empty} {empty} {empty} {empty} \u0b5d {empty}", + "{empty} {empty} {empty} \u0b0c {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0b3d {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Pashto (Afghanistan) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpash.html + */ +jQuery.keyboard.layouts['ms-Pashto (Afghanistan)'] = { + "name" : "ms-Pashto (Afghanistan)", + "lang" : ["ps"], + "normal" : [ + "{ZWJ} \u06f1 \u06f2 \u06f3 \u06f4 \u06f5 \u06f6 \u06f7 \u06f8 \u06f9 \u06f0 - = {bksp}", + "{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \\", + "\u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u06a9 \u06ab {enter}", + "{shift} \u0638 \u0637 \u0632 \u0631 \u0630 \u062f \u0693 \u0648 \u0696 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0654 ! \u066c \u066b \u060b \u066a \u00d7 \u00bb \u00ab ) ( \u0640 + {bksp}", + "{tab} \u0652 \u064c \u064d \u064b \u064f \u0650 \u064e \u0651 \u0681 \u0685 ] [ *", + "\u069a \u06cd \u064a \u067e \u0623 \u0622 \u067c \u06bc \u0629 : \u061b {enter}", + "{shift} \u0626 \u06d0 \u0698 \u0621 {ZWNJ} \u0689 \u0624 \u060c . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ~ @ # $ % ^ & \u066d \u2022 \u00b0 _ \u00f7 {bksp}", + "{tab} \u20ac \u0671 \u0649 {LRM} {RLM} \u0653 \u0659 \u0670 ' \" } { |", + "{empty} {empty} \u06d2 \u06ba \u06b7 \u0625 \u0679 > < \u0643 \u06af {enter}", + "{shift} ? ; {empty} {empty} {empty} \u0688 \u0691 , \u06c7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Persian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfa.html + */ +jQuery.keyboard.layouts['ms-Persian'] = { + "name" : "ms-Persian", + "lang" : ["fa"], + "normal" : [ + "\u00f7 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \u067e", + "\u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u06a9 \u06af {enter}", + "{shift} \u067e \u0638 \u0637 \u0632 \u0631 \u0630 \u062f \u0626 \u0648 . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u00d7 ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u064b \u064c \u064d \u0631\u064a\u0627\u0644 \u060c \u061b , ] [ \\ } { |", + "\u064e \u064f \u0650 \u0651 \u06c0 \u0622 \u0640 \u00ab \u00bb : \" {enter}", + "{shift} | \u0629 \u064a \u0698 \u0624 \u0625 \u0623 \u0621 < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Polish (214) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpl.html + */ +jQuery.keyboard.layouts['ms-Polish (214)'] = { + "name" : "ms-Polish (214)", + "lang" : ["pl"], + "normal" : [ + "\u02DB 1 2 3 4 5 6 7 8 9 0 + ' {bksp}", + "{tab} q w e r t z u i o p \u017C \u015B", + "a s d f g h j k l \u0142 \u0105 \u00F3 {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B7 ! \" # \u00A4 % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0144 \u0107", + "A S D F G H J K L \u0141 \u0119 \u017A {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u00B7 \u00B4 \u02DD \u00A8 \u00B8 {bksp}", + "{tab} \\ \u00A6 {empty} {empty} {empty} {empty} \u20AC {empty} {empty} {empty} \u00F7 \u00D7", + "{empty} \u0111 \u0110 {empty} {empty} {empty} {empty} {empty} {empty} $ \u00DF {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00A7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Polish (Programmers) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpl1.html + */ +jQuery.keyboard.layouts['ms-Polish (Programmers)'] = { + "name" : "ms-Polish (Programmers)", + "lang" : ["pl"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' \\ {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : \" | {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u0119 {empty} {empty} {empty} \u20AC {empty} \u00F3 {empty} {empty} {empty}", + "\u0105 \u015B {empty} {empty} {empty} {empty} {empty} {empty} \u0142 {empty} {empty} {empty} {enter}", + "{shift} \u017C \u017A \u0107 {empty} {empty} \u0144 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u0118 {empty} {empty} {empty} {empty} {empty} \u00D3 {empty} {empty} {empty}", + "\u0104 \u015A {empty} {empty} {empty} {empty} {empty} {empty} \u0141 {empty} {empty} {empty} {enter}", + "{shift} \u017B \u0179 \u0106 {empty} {empty} \u0143 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Portuguese Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpo.html + */ +jQuery.keyboard.layouts['ms-Portuguese'] = { + "name" : "ms-Portuguese", + "lang" : ["pt"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00AB {bksp}", + "{tab} q w e r t y u i o p + \u00B4", + "a s d f g h j k l \u00E7 \u00BA ~ {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" # $ % & / ( ) = ? \u00BB {bksp}", + "{tab} Q W E R T Y U I O P * `", + "A S D F G H J K L \u00C7 \u00AA ^ {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 \u00A7 \u20AC {empty} { [ ] } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A8 ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Portuguese (Brazilian ABNT) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbr.html + */ +jQuery.keyboard.layouts['ms-Portuguese (Brazilian ABNT)'] = { + "name" : "ms-Portuguese (Brazilian ABNT)", + "lang" : ["pt"], + "normal" : [ + "' 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u00B4 [", + "a s d f g h j k l \u00E7 ~ ] {enter}", + "{shift} \\ z x c v b n m , . ; / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\" ! @ # $ % \u00A8 & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ` {", + "A S D F G H J K L \u00C7 ^ } {enter}", + "{shift} | Z X C V B N M < > : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00B9 \u00B2 \u00B3 \u00A3 \u00A2 \u00AC {empty} {empty} {empty} {empty} {empty} \u00A7 {bksp}", + "{tab} / ? \u00B0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00AA", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00BA {enter}", + "{shift} {empty} {empty} {empty} \u20A2 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B0 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Punjabi Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinpun.html + */ +jQuery.keyboard.layouts['ms-Punjabi'] = { + "name" : "ms-Punjabi", + "lang" : ["pa"], + "normal" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 - {empty} {bksp}", + "{tab} \u0a4c \u0a48 \u0a3e \u0a40 \u0a42 \u0a2c \u0a39 \u0a17 \u0a26 \u0a1c \u0a21 \u0a3c", + "\u0a4b \u0a47 \u0a4d \u0a3f \u0a41 \u0a2a \u0a30 \u0a15 \u0a24 \u0a1a \u0a1f {enter}", + "{shift} \u0a70 \u0a2e \u0a28 \u0a35 \u0a32 \u0a38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0a4d\u0a39 \u0a4d\u0a35 \u0a4d\u0a2f \u0a4d\u0a30 \u0a71 {empty} {empty} {empty} {empty} ( ) {empty} {empty} {bksp}", + "{tab} \u0a14 \u0a10 \u0a06 \u0a08 \u0a0a \u0a2d \u0a19 \u0a18 \u0a27 \u0a1d \u0a22 \u0a1e", + "\u0a13 \u0a0f \u0a05 \u0a07 \u0a09 \u0a2b \u0a5c \u0a16 \u0a25 \u0a1b \u0a20 {enter}", + "{shift} \u0a02 \u0a23 {empty} \u0a72 \u0a33 \u0a36 {empty} \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0a67 \u0a68 \u0a69 \u0a6a \u0a6b \u0a6c \u0a6d \u0a6e \u0a6f \u0a66 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0a5a {empty} \u0a5b \u0a5c {empty}", + "{empty} {empty} {empty} {empty} {empty} \u0a5e {empty} \u0a59 {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} \u0a73 {empty} {empty} {empty} \u0965 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \u0a74 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Romanian (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdro.html + */ +jQuery.keyboard.layouts['ms-Romanian (Legacy)'] = { + "name" : "ms-Romanian (Legacy)", + "lang" : ["ro"], + "normal" : [ + "] 1 2 3 4 5 6 7 8 9 0 + ' {bksp}", + "{tab} q w e r t z u i o p \u0103 \u00ee \u00e2", + "a s d f g h j k l \u015f \u0163 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "[ ! \" # \u00a4 % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0102 \u00ce \u00c2", + "A S D F G H J K L \u015e \u0162 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u00b7 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 {empty}", + "{empty} \u0111 \u0110 {empty} {empty} {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} \u001c {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Romanian (Programmers) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdropr.html + */ +jQuery.keyboard.layouts['ms-Romanian (Programmers)'] = { + "name" : "ms-Romanian (Programmers)", + "lang" : ["ro"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \u00e2 \u00df \u20ac {empty} \u021b {empty} {empty} \u00ee {empty} \u00a7 \u201e \u201d {empty}", + "\u0103 \u0219 \u0111 {empty} {empty} {empty} {empty} {empty} \u0142 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} \u00a9 {empty} {empty} {empty} {empty} \u00ab \u00bb {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u2013 \u00b1 {bksp}", + "{tab} \u00c2 {empty} {empty} {empty} \u021a {empty} {empty} \u00ce {empty} {empty} {empty} {empty} {empty}", + "\u0102 \u0218 \u0110 {empty} {empty} {empty} {empty} {empty} \u0141 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Romanian (Standard) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdrost.html + */ +jQuery.keyboard.layouts['ms-Romanian (Standard)'] = { + "name" : "ms-Romanian (Standard)", + "lang" : ["ro"], + "normal" : [ + "\u201e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u0103 \u00ee \u00e2", + "a s d f g h j k l \u0219 \u021b {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u201d ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u0102 \u00ce \u00c2", + "A S D F G H J K L \u0218 \u021a {enter}", + "{shift} | Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 [ ] \\", + "{empty} \u00df \u0111 {empty} {empty} {empty} {empty} {empty} \u0142 ; ' {enter}", + "{shift} {empty} {empty} {empty} \u00a9 {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u2013 \u00b1 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} \u0110 {empty} {empty} {empty} {empty} {empty} \u0141 : \" {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00ab \u00bb {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Russian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdru.html + */ +jQuery.keyboard.layouts['ms-Russian'] = { + "name" : "ms-Russian", + "lang" : ["ru"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Russian (Typewriter) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdru1.html + */ +jQuery.keyboard.layouts['ms-Russian (Typewriter)'] = { + "name" : "ms-Russian (Typewriter)", + "lang" : ["ru"], + "normal" : [ + "| \u2116 - / \" : , . _ ? % ! ; {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a )", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} ) \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "+ 1 2 3 4 5 6 7 8 9 0 = \\ {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a (", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} ( \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Sami Extended Finland-Sweden Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsmsfi.html + */ +jQuery.keyboard.layouts['ms-Sami Extended Finland-Sweden'] = { + "name" : "ms-Sami Extended Finland-Sweden", + "lang" : ["se"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} \u00e1 \u0161 e r t \u0167 u i o p \u00e5 \u014b \u0111", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} \u017e z \u010d c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00bd ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} \u00c1 \u0160 E R T \u0166 U I O P \u00c5 \u014a \u0110", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} \u017d Z \u010c C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "| {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {bksp}", + "{tab} q w \u20ac {empty} {empty} y {empty} \u00ef \u00f5 {empty} \u00a8 ~ '", + "\u00e2 {empty} {empty} {empty} \u01e7 \u01e5 {empty} \u01e9 {empty} \u00f8 \u00e6 {enter}", + "{shift} \u01ef \u0292 x {empty} {empty} {empty} {empty} \u00b5 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} Q W {empty} {empty} {empty} Y {empty} \u00cf \u00d5 {empty} ^ \u02c7 *", + "\u00c2 {empty} {empty} {empty} \u01e6 \u01e4 {empty} \u01e8 {empty} \u00d8 \u00c6 {enter}", + "{shift} \u01ee \u01b7 X {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sami Extended Norway Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsmsno.html + */ +jQuery.keyboard.layouts['ms-Sami Extended Norway'] = { + "name" : "ms-Sami Extended Norway", + "lang" : ["se"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {bksp}", + "{tab} \u00e1 \u0161 e r t \u0167 u i o p \u00e5 \u014b \u0111", + "a s d f g h j k l \u00f8 \u00e6 {enter}", + "{shift} \u017e z \u010d c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} \u00c1 \u0160 E R T \u0166 U I O P \u00c5 \u014a \u0110", + "A S D F G H J K L \u00d8 \u00c6 {enter}", + "{shift} \u017d Z \u010c C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} \u00b4 {bksp}", + "{tab} q w \u20ac {empty} {empty} y {empty} \u00ef \u00f5 {empty} \u00a8 ~ '", + "\u00e2 {empty} {empty} {empty} \u01e7 \u01e5 {empty} \u01e9 {empty} \u00f6 \u00e4 {enter}", + "{shift} \u01ef \u0292 x {empty} {empty} {empty} {empty} \u00b5 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} Q W {empty} {empty} {empty} Y {empty} \u00cf \u00d5 {empty} ^ \u02c7 *", + "\u00c2 {empty} {empty} {empty} \u01e6 \u01e4 {empty} \u01e8 {empty} \u00d6 \u00c4 {enter}", + "{shift} \u01ee \u01b7 X {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian (Latin) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdycl.html + */ +jQuery.keyboard.layouts['ms-Serbian (Latin)'] = { + "name" : "ms-Serbian (Latin)", + "lang" : ["sr"], + "normal" : [ + "\u201a 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + "a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + "A S D F G H J K L \u010c \u0106 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 \u00a4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00df {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian (Cyrillic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdycc.html + */ +jQuery.keyboard.layouts['ms-Serbian (Cyrillic)'] = { + "name" : "ms-erbian (Cyrillic)", + "lang" : ["sr"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Setswana Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdnso.html + */ +jQuery.keyboard.layouts['ms-Setswana'] = { + "name" : "ms-Setswana", + "lang" : ["tn"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}", + "{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac", + "\u00e1 \u00df \u00f0 {empty} {empty} {empty} {empty} {empty} \u00f8 \u00b6 \u00b4 {enter}", + "{shift} {empty} \u00e6 {empty} \u00a9 {empty} {empty} \u00f1 \u00b5 \u00e7 \u0161 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {bksp}", + "{tab} \u00c4 \u00c5 \u00c9 {empty} \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 {empty} {empty} \u00a6", + "\u00c1 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} \u00d8 \u00b0 \u00a8 {enter}", + "{shift} {empty} \u00c6 {empty} \u00a2 {empty} {empty} \u00d1 {empty} \u00c7 \u0160 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + + +/* Setswana Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdnso1.html + */ +jQuery.keyboard.layouts['ms-Setswana (Sesotho sa Leboa)'] = { + "name" : "ms-Setswana (Sesotho sa Leboa)", + "lang" : ["tn"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}", + "{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac", + "\u00e1 \u00df \u00f0 {empty} {empty} {empty} {empty} {empty} \u00f8 \u00b6 \u00b4 {enter}", + "{shift} \u00e6 {empty} \u00a9 {empty} {empty} \u00f1 \u00b5 \u00e7 \u0161 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {bksp}", + "{tab} \u00c4 \u00c5 \u00c9 {empty} \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 {empty} {empty} \u00a6", + "\u00c1 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} \u00d8 \u00b0 \u00a8 {enter}", + "{shift} \u00c6 {empty} \u00a2 {empty} {empty} \u00d1 {empty} \u00c7 \u0160 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sinhala Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsn1.html + */ +jQuery.keyboard.layouts['ms-Sinhala'] = { + "name" : "ms-Sinhala", + "lang" : ["si"], + "normal" : [ + "\u0dca{ZWJ}\u0dbb 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0dd4 \u0d85 \u0dd0 \u0dbb \u0d92 \u0dc4 \u0db8 \u0dc3 \u0daf \u0da0 \u0da4 ; {ZWJ}", + "\u0dca \u0dd2 \u0dcf \u0dd9 \u0da7 \u0dba \u0dc0 \u0db1 \u0d9a \u0dad . {enter}", + "{shift} {ZWJ} ' \u0d82 \u0da2 \u0da9 \u0d89 \u0db6 \u0db4 \u0dbd \u0d9c / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0dbb\u0dca{ZWJ} ! @ $ $ % ^ & * ( ) _ + {bksp}", + "{tab} \u0dd6 \u0d8b \u0dd1 \u0d8d \u0d94 \u0dc1 \u0db9 \u0dc2 \u0db0 \u0da1 \u0da5 : {empty}", + "\u0ddf \u0dd3 \u0dd8 \u0dc6 \u0da8 \u0dca{ZWJ}\u0dba \u0dc5\u0dd4 \u0dab \u0d9b \u0dae , {enter}", + "{shift} {empty} \" \u0d83 \u0da3 \u0daa \u0d8a \u0db7 \u0db5 \u0dc5 \u0d9d / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "\u0df3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0df4 {enter}", + "{shift} {empty} {empty} \u0d9e \u0da6 \u0dac {empty} {empty} {empty} \u0d8f \u0d9f {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sinhala - Wij 9 Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsw09.html + */ +jQuery.keyboard.layouts['ms-Sinhala - Wij 9'] = { + "name" : "ms-Sinhala - Wij 9", + "lang" : ["si"], + "normal" : [ + "\u0dca{ZWJ}\u0dbb 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0dd4 \u0d85 \u0dd0 \u0dbb \u0d91 \u0dc4 \u0db8 \u0dc3 \u0daf \u0da0 \u0da4 ; \u0dca{ZWJ}", + "\u0dca \u0dd2 \u0dcf \u0dd9 \u0da7 \u0dba \u0dc0 \u0db1 \u0d9a \u0dad . {enter}", + "{shift} ' \u0d82 \u0da2 \u0da9 \u0d89 \u0db6 \u0db4 \u0dbd \u0d9c / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0dbb\u0dca{ZWJ} ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} \u0dd6 \u0d8b \u0dd1 \u0d8d \u0d94 \u0dc1 \u0db9 \u0dc2 \u0db0 \u0da1 \u0da5 : {empty}", + "\u0ddf \u0dd3 \u0dd8 \u0dc6 \u0da8 \u0dca{ZWJ}\u0dba \u0dc5\u0dd4 \u0dab \u0d9b \u0dae , {enter}", + "{shift} \" \u0d83 \u0da3 \u0daa \u0d8a \u0db7 \u0db5 \u0dc5 \u0d9d / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}", + "{tab} \u0dde \u0ddc \u0ddb \u0dda {empty} {empty} {empty} {empty} \u0db3 {empty} [ ] \\", + "\u0df3 \u0ddd {empty} {empty} {empty} {empty} {ZWJ} {empty} {empty} {empty} \u0df4 {enter}", + "{shift} {empty} \u0d9e \u0da6 \u0dac {empty} {ZWNJ} {empty} \u0d8f \u0d9f {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Slovak Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsl.html + */ +jQuery.keyboard.layouts['ms-Slovak'] = { + "name" : "ms-Slovak", + "lang" : ["sk"], + "normal" : [ + "; + \u013e \u0161 \u010d \u0165 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fa \u00e4 \u0148", + "a s d f g h j k l \u00f4 \u00a7 {enter}", + "{shift} & y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Z U I O P / ( )", + "A S D F G H J K L \" ! {enter}", + "{shift} * Y X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} ' \u00f7 \u00d7 \u00a4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} < > # & @ { } {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Slovak (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsl1.html + */ +jQuery.keyboard.layouts['ms-Slovak (QWERTY)'] = { + "name" : "ms-Slovak (QWERTY)", + "lang" : ["sk"], + "normal" : [ + "; + \u013e \u0161 \u010d \u0165 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00fa \u00e4 \u0148", + "a s d f g h j k l \u00f4 \u00a7 {enter}", + "{shift} & z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Y U I O P / ( )", + "A S D F G H J K L \" ! {enter}", + "{shift} * Z X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} ' \u00f7 \u00d7 \u00a4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} < > # & @ { } {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Slovenian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcr.html + */ +jQuery.keyboard.layouts['ms-Slovenian'] = { + "name" : "ms-Slovenian", + "lang" : ["sl"], + "normal" : [ + "\u00b8 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + "a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a8 ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + "A S D F G H J K L \u010c \u0106 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 \u00a4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00df {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sorbian Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsors1.html + */ +jQuery.keyboard.layouts['ms-Sorbian Standard'] = { + "name" : "ms-Sorbian Standard", + "lang" : ["wen", "dsb", "hsb"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fc + #", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00dc * '", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00b2 \u00b3 {empty} {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sorbian Extended Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsorex.html + */ +jQuery.keyboard.layouts['ms-Sorbian Extended'] = { + "name" : "ms-Sorbian Extended", + "lang" : ["wen", "dsb", "hsb"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fc + \u0142", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00dc * \u0141", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00bb \u00ab \u201e \u201a \u2018 \u201c { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ #", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sorbian Standard (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsorst.html + */ +jQuery.keyboard.layouts['ms-Sorbian Standard (Legacy)'] = { + "name" : "ms-Sorbian Standard (Legacy)", + "lang" : ["wen", "dsb", "hsb"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fc + \u0142", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00dc * \u0141", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00bb \u00ab \u201e \u201a \u2018 \u201c { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ #", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Spanish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsp.html + */ +jQuery.keyboard.layouts['ms-Spanish'] = { + "name" : "ms-Spanish", + "lang" : ["es"], + "normal" : [ + "\u00BA 1 2 3 4 5 6 7 8 9 0 ' \u00A1 {bksp}", + "{tab} q w e r t y u i o p ` +", + "a s d f g h j k l \u00F1 \u00B4 \u00E7 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00AA ! \" \u00B7 $ % & / ( ) = ? \u00BF {bksp}", + "{tab} Q W E R T Y U I O P ^ *", + "A S D F G H J K L \u00D1 \u00A8 \u00C7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\\ | @ # ~ \u20AC \u00AC {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Spanish Variation Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdes.html + */ +jQuery.keyboard.layouts['ms-Spanish Variation'] = { + "name" : "ms-Spanish Variation", + "lang" : ["es"], + "normal" : [ + "' 1 2 3 4 5 6 7 8 9 0 - \u00A8 {bksp}", + "{tab} q w e r t y u i o p \u00F7 `", + "a s d f g h j k l \u00F1 \u00E7 \u00B4 {enter}", + "{shift} < z x c v b n m , . = {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B7 \u00AA \" / ( ) \u00A1 ! \u00BF ? \u20A7 + \u00A8 {bksp}", + "{tab} Q W E R T Y U I O P \u00D7 `", + "A S D F G H J K L \u00D1 \u00C7 \u00B4 {enter}", + "{shift} > Z X C V B N M ; : % {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\\ | @ # \u00BC \u00BD \u00AC _ # \u00A7 \\ * ~ {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "$ & @ [ ] | \u00A3 \u00B1 {empty} ~ { } {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Swedish with Sami Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfi1.html + */ +jQuery.keyboard.layouts['ms-Swedish with Sami'] = { + "name" : "ms-Swedish with Sami", + "lang" : ["sv", "se"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00bd ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {bksp}", + "{tab} \u00e2 {empty} \u20ac {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~ {empty}", + "\u00e1 \u0161 \u0111 \u01e5 \u01e7 \u021f {empty} \u01e9 {empty} \u00f8 \u00e6 {enter}", + "{shift} | \u017e {empty} \u010d \u01ef \u0292 \u014b \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u00c2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00cf \u00d5 {empty} {empty} {empty} {empty}", + "\u00c1 \u0160 \u0110 \u01e4 \u01e6 \u021e {empty} \u01e8 {empty} \u00d8 \u00c6 {enter}", + "{shift} {empty} \u017d {empty} \u010c \u01ee \u01b7 \u014a {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Swedish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsw.html + */ +jQuery.keyboard.layouts['ms-Swedish'] = { + "name" : "ms-Swedish", + "lang" : ["sv"], + "normal" : [ + "\u00A7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00F6 \u00E4 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00D6 \u00C4 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Swedish with Sami Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsw1.html + */ +jQuery.keyboard.layouts['ms-Swedish with Sami'] = { + "name" : "ms-Swedish with Sami", + "lang" : ["sv"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00F6 \u00E4 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00D6 \u00C4 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} \u00E2 {empty} \u20AC {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~", + "\u00E1 \u0161 \u0111 \u01e5 \u01E7 \u021F {empty} \u01e9 {empty} \u00F8 \u00E6 {empty} {enter}", + "{shift} | \u017E {empty} \u010d \u01EF \u0292 \u014B \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u00C2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00CF \u00D5 {empty} {empty} {empty}", + "\u00C1 \u0160 \u0110 \u01E4 \u01E6 \u021e {empty} \u01E8 {empty} \u00D8 \u00C6 {empty} {enter}", + "{shift} {empty} \u017D {empty} \u010C \u01EE \u01B7 \u014A {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Swiss German Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsg.html + */ +jQuery.keyboard.layouts['ms-Swiss German'] = { + "name" : "ms-Swiss German", + "lang" : ["de", "sv"], + "normal" : [ + "\u00A7 1 2 3 4 5 6 7 8 9 0 ' ^ {bksp}", + "{tab} q w e r t z u i o p \u00FC \u00A8", + "a s d f g h j k l \u00F6 \u00E4 $ {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 + \" * \u00E7 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00E8 !", + "A S D F G H J K L \u00E9 \u00E0 \u00A3 {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00A6 @ # \u00B0 \u00A7 \u00AC | \u00A2 {empty} {empty} \u00B4 ~ {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Syriac Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsyr1.html + */ +jQuery.keyboard.layouts['ms-Syriac'] = { + "name" : "ms-Syriac", + "lang" : ["syr"], + "normal" : [ + "\u070f 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0714 \u0728 \u0716 \u0729 \u0726 \u071c \u0725 \u0717 \u071e \u071a \u0713 \u0715 \u0706", + "\u072b \u0723 \u071d \u0712 \u0720 \u0710 \u072c \u0722 \u0721 \u071f \u071b {enter}", + "{shift} \u0706 ] [ \u0724 \u072a \u0727 \u0700 . \u0718 \u0719 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u032e ! \u030a \u0325 \u0749 \u2670 \u2671 \u070a \u00bb ) ( \u00ab + {bksp}", + "{tab} \u0730 \u0733 \u0736 \u073a \u073d \u0740 \u0741 \u0308 \u0304 \u0307 \u0303 \u074a :", + "\u0731 \u0734 \u0737 \u073b \u073e \u0711 \u0640 \u0324 \u0331 \u0323 \u0330 {enter}", + "{shift} : \u0732 \u0735 \u0738 \u073c \u073f \u0739 \u0742 \u060c \u061b / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0651 \u0701 \u0702 \u0703 \u0704 \u0705 \u0708 \u0709 \u070b \u070c \u070d \u250c \u2510 {bksp}", + "{tab} \u064e \u064b \u064f \u064c \u0653 \u0654 \u0747 \u0743 \u0745 \u032d {empty} {empty} {empty}", + "\u0650 \u064d {empty} \u0621 \u0655 \u0670 \u0748 \u0744 \u0746 {empty} {empty} {enter}", + "{shift} {empty} {empty} \u0652 {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Syriac Phonetic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsyr2.html + */ +jQuery.keyboard.layouts['ms-Syriac Phonetic'] = { + "name" : "ms-Syriac Phonetic", + "lang" : ["syr"], + "normal" : [ + "\u070f 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0729 \u0718 \u0716 \u072a \u072c \u071d \u071c \u0725 \u0727 \u0726 ] [ \u0706", + "\u0710 \u0723 \u0715 \u0714 \u0713 \u0717 \u071b \u071f \u0720 \u071a \u071e {enter}", + "{shift} \u0706 \u0719 \u0728 \u0724 \u072b \u0712 \u0722 \u0721 \u0700 . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u032e ! \u030a \u0325 \u0749 \u2670 \u2671 \u070a \u00bb ) ( \u00ab + {bksp}", + "{tab} \u0730 \u0733 \u0736 \u073a \u073d \u0740 \u0741 \u0308 \u0304 \u0307 \u0303 \u074a :", + "\u0731 \u0734 \u0737 \u073b \u073e \u0711 \u0640 \u0324 \u0331 \u0323 \u0330 {enter}", + "{shift} : \u0732 \u0735 \u0738 \u073c \u073f \u0739 \u0742 \u060c \u061b / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0651 \u0701 \u0702 \u0703 \u0704 \u0705 \u0708 \u0709 \u070b \u070c \u070d \u250c \u2510 {bksp}", + "{tab} \u064e \u064b \u064f \u064c \u0653 \u0654 \u0747 \u0743 \u0745 \u032d {empty} {empty} {empty}", + "\u0650 \u064d {empty} \u0621 \u0655 \u0670 \u0748 \u0744 \u0746 {empty} {empty} {enter}", + "{shift} {empty} {empty} \u0652 {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Tajik Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtajik.html + */ +jQuery.keyboard.layouts['ms-Tajik'] = { + "name" : "ms-Tajik", + "lang" : ["tg"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 \u0493 \u04ef {bksp}", + "{tab} \u0439 \u049b \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u04b3 \u0437 \u0445 \u044a \\", + "\u0444 \u04b7 \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u04e3 \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) \u0492 \u04ee {bksp}", + "{tab} \u0419 \u049a \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u04b2 \u0417 \u0425 \u042a /", + "\u0424 \u04b6 \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u04e2 \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Tamil Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdintam.html + */ +jQuery.keyboard.layouts['ms-Tamil'] = { + "name" : "ms-Tamil", + "lang" : ["ta"], + "normal" : [ + "\u0bca 1 2 3 4 5 6 7 8 9 0 - {empty} {bksp}", + "{tab} \u0bcc \u0bc8 \u0bbe \u0bc0 \u0bc2 \u0baa \u0bb9 \u0b95 \u0ba4 \u0b9c \u0b9f \u0b9e", + "\u0bcb \u0bc7 \u0bcd \u0bbf \u0bc1 \u0baa \u0bb0 \u0b95 \u0ba4 \u0b9a \u0b9f {enter}", + "{shift} \u0bc6 {empty} \u0bae \u0ba8 \u0bb5 \u0bb2 \u0bb8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0b92 {empty} {empty} {empty} {empty} {empty} \u0ba4\u0bcd\u0bb0 \u0b95\u0bcd\u0bb7 \u0bb7\u0bcd\u0bb0 {empty} {empty} \u0b83 {empty} {bksp}", + "{tab} \u0b94 \u0b90 \u0b86 \u0b88 \u0b8a \u0baa \u0b99 \u0b95 \u0ba4 \u0b9a \u0b9f \u0b9e", + "\u0b93 \u0b8f \u0b85 \u0b87 \u0b89 \u0baa \u0bb1 \u0b95 \u0ba4 \u0b9a \u0b9f {enter}", + "{shift} \u0b8e {empty} \u0ba3 \u0ba9 \u0bb4 \u0bb3 \u0bb7 \u0bb7 \u0bb8\u0bcd\u0bb0\u0bc0 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0be7 \u0be8 \u0be9 \u0bea \u0beb \u0bec \u0bed \u0bee \u0bef \u0bf0 \u0bf1 \u0bf2 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Tatar Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtat.html + */ +jQuery.keyboard.layouts['ms-Tatar'] = { + "name" : "ms-Tatar", + "lang" : ["tt"], + "normal" : [ + "\u04BB 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u04E9 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u04D9 \u0437 \u0445 \u04AF", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u04A3 \u044D \\ {enter}", + "{shift} \u0491 \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u0497 \u0431 \u044E . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u04BA ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u04E8 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u04D8 \u0417 \u0425 \u04AE", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u04A2 \u042D / {enter}", + "{shift} \u0490 \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u0496 \u0411 \u042E , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0451 {empty} @ # $ {empty} {empty} [ ] { } {empty} {empty} {bksp}", + "{tab} {empty} \u0446 {empty} {empty} {empty} {empty} {empty} {empty} \u0449 {empty} {empty} \u044A", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0436 ' {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u044C < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u0401 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} \u0426 {empty} {empty} {empty} {empty} {empty} {empty} \u0429 {empty} {empty} \u042A", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0416 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u042C {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Telugu Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdintel.html + */ +jQuery.keyboard.layouts['ms-Telugu'] = { + "name" : "ms-Telugu", + "lang" : ["te"], + "normal" : [ + "\u0c4a 1 2 3 4 5 6 7 8 9 0 - \u0c43 {bksp}", + "{tab} \u0c4c \u0c48 \u0c3e \u0c40 \u0c42 \u0c2c \u0c39 \u0c17 \u0c26 \u0c1c \u0c21 {empty}", + "\u0c4b \u0c47 \u0c4d \u0c3f \u0c41 \u0c2a \u0c30 \u0c15 \u0c24 \u0c1a \u0c1f {enter}", + "{shift} \u0c46 \u0c02 \u0c2e \u0c28 \u0c35 \u0c32 \u0c38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0c12 {empty} {empty} \u0c4d\u0c30 {empty} \u0c1c\u0c4d\u0c1e \u0c24\u0c4d\u0c30 \u0c15\u0c4d\u0c37 \u0c36\u0c4d\u0c30 ( ) \u0c03 \u0c0b {bksp}", + "{tab} \u0c14 \u0c10 \u0c06 \u0c08 \u0c0a \u0c2d \u0c19 \u0c18 \u0c27 \u0c1d \u0c22 \u0c1e", + "\u0c13 \u0c0f \u0c05 \u0c07 \u0c09 \u0c2b \u0c31 \u0c16 \u0c25 \u0c1b \u0c20 {enter}", + "{shift} \u0c0e \u0c01 \u0c23 \u0c28 {empty} \u0c33 \u0c36 \u0c37 {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0c67 \u0c68 \u0c69 \u0c6a \u0c6b \u0c6c \u0c6d \u0c6e \u0c6f \u0c66 {empty} \u0c44 {bksp}", + "{tab} {empty} \u0c56 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} \u0c55 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0c60 {bksp}", + "{tab} {empty} {empty} {empty} \u0c61 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} \u0c0c {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Thai Kedmanee Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth0.html + */ +jQuery.keyboard.layouts['ms-Thai Kedmanee'] = { + "name" : "ms-Thai Kedmanee", + "lang" : ["th"], + "normal" : [ + "_ \u0E45 / - \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E15 \u0E08 \u0E02 \u0E0A {bksp}", + "{tab} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{shift} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {bksp}", + "{tab} \u0E50 \u0022 \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 , \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B . {enter}", + "{shift} ( ) \u0E09 \u0E2E \u0E3A \u0E4C ? \u0E12 \u0E2C \u0E26 {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Thai Kedmanee (non-ShiftLock) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth2.html + */ +jQuery.keyboard.layouts['ms-Thai Kedmanee (non-ShiftLock)'] = { + "name" : "ms-Thai Kedmanee (non-ShiftLock)", + "lang" : ["th"], + "normal" : [ + "_ \u0E45 / - \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E15 \u0E08 \u0E02 \u0E0A {bksp}", + "{tab} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{shift} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {bksp}", + "{tab} \u0E50 \u0022 \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 , \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B . {enter}", + "{shift} ( ) \u0E09 \u0E2E \u0E3A \u0E4C ? \u0E12 \u0E2C \u0E26 {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Thai Pattachote Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth1.html + */ +jQuery.keyboard.layouts['ms-Thai Pattachote'] = { + "name" : "ms-Thai Pattachote", + "lang" : ["th"], + "normal" : [ + "_ = \u0E52 \u0E53 \u0E54 \u0E55 \u0E39 \u0E57 \u0E58 \u0E59 \u0E50 \u0E51 \u0E56 {bksp}", + "{tab} \u0E47 \u0E15 \u0E22 \u0E2D \u0E23 \u0E48 \u0E14 \u0E21 \u0E27 \u0E41 \u0E43 \u0E0C \uF8C7", + "\u0E49 \u0E17 \u0E07 \u0E01 \u0E31 \u0E35 \u0E32 \u0E19 \u0E40 \u0E44 \u0E02 {enter}", + "{shift} \u0E1A \u0E1B \u0E25 \u0E2B \u0E34 \u0E04 \u0E2A \u0E30 \u0E08 \u0E1E {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0E3F + \u0022 / , ? \u0E38 _ . ( ) - % {bksp}", + "{tab} \u0E4A \u0E24 \u0E46 \u0E0D \u0E29 \u0E36 \u0E1D \u0E0B \u0E16 \u0E12 \u0E2F \u0E26 \u0E4D", + "\u0E4B \u0E18 \u0E33 \u0E13 \u0E4C \u0E37 \u0E1C \u0E0A \u0E42 \u0E06 \u0E11 {enter}", + "{shift} \u0E0E \u0E0F \u0E10 \u0E20 \u0E31 \u0E28 \u0E2E \u0E1F \u0E09 \u0E2C {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Thai Pattachote (non-ShiftLock) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth3.html + */ +jQuery.keyboard.layouts['ms-Thai Pattachote (non-ShiftLock)'] = { + "name" : "ms-Thai Pattachote (non-ShiftLock)", + "lang" : ["th"], + "normal" : [ + "_ = \u0E52 \u0E53 \u0E54 \u0E55 \u0E39 \u0E57 \u0E58 \u0E59 \u0E50 \u0E51 \u0E56 {bksp}", + "{tab} \u0E47 \u0E15 \u0E22 \u0E2D \u0E23 \u0E48 \u0E14 \u0E21 \u0E27 \u0E41 \u0E43 \u0E0C \uF8C7", + "\u0E49 \u0E17 \u0E07 \u0E01 \u0E31 \u0E35 \u0E32 \u0E19 \u0E40 \u0E44 \u0E02 {enter}", + "{shift} \u0E1A \u0E1B \u0E25 \u0E2B \u0E34 \u0E04 \u0E2A \u0E30 \u0E08 \u0E1E {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0E3F + \u0022 / , ? \u0E38 _ . ( ) - % {bksp}", + "{tab} \u0E4A \u0E24 \u0E46 \u0E0D \u0E29 \u0E36 \u0E1D \u0E0B \u0E16 \u0E12 \u0E2F \u0E26 \u0E4D", + "\u0E4B \u0E18 \u0E33 \u0E13 \u0E4C \u0E37 \u0E1C \u0E0A \u0E42 \u0E06 \u0E11 {enter}", + "{shift} \u0E0E \u0E0F \u0E10 \u0E20 \u0E31 \u0E28 \u0E2E \u0E1F \u0E09 \u0E2C {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Tibetan (PRC) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtiprc.html + */ +jQuery.keyboard.layouts['ms-Tibetan (PRC)'] = { + "name" : "ms-Tibetan (PRC)", + "lang" : ["bo"], + "normal" : [ + "\u0f68 \u0f21 \u0f22 \u0f23 \u0f24 \u0f25 \u0f26 \u0f27 \u0f28 \u0f29 \u0f20 \u0f67 \u0f5d {bksp}", + "{tab} \u0f45 \u0f46 \u0f7a \u0f62 \u0f4f \u0f61 \u0f74 \u0f72 \u0f7c \u0f55 \u0f59 \u0f5a \u0f5b", + "\u0f60 \u0f66 \u0f51 \u0f56 \u0f44 \u0f58 \u0f0b \u0f42 \u0f63 \u0f5e \u0f0d {enter}", + "{shift} \u0f5f \u0f64 \u0f40 \u0f41 \u0f54 \u0f53 m \u0f50 \u0f47 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0f01 \u0f2a \u0f2b \u0f2c \u0f2d \u0f2e \u0f2f \u0f30 \u0f31 \u0f32 \u0f33 \u0f3c \u0f3d {bksp}", + "{tab} \u0f15 \u0f16 \u0f17 \u0fbc \u0f4a \u0fbb \u0f18 \u0f19 \u0f1a \u0f1b \u0f1c \u0f1d \u0f1e", + "\u0f71 \u0f1f \u0f4c \u0f3e \u0f3f \u0fcf \u0f02 \u0f03 \u0f06 \u0f07 \u0f38 {enter}", + "{shift} \u0f34 \u0f65 \u0f69 \u0f87 \u0f86 \u0f4e M \u0f4b \u0f3a / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u0f00 \u0f76 \u0f77 \u0f78 \u0f79 \u0f73 \u0f09 \u0f0a \u0f0f \u0f10 \u0f12 \u0f0c \u0f13 {bksp}", + "{tab} \u0f89 \u0f88 \u0fbe \u0f6a \u0f9a \u0fbf \u0f75 \u0f73 \u0fc0 \u0fc1 \u0fc2 \u0fc3 \u0f5c", + "\u0fc4 \u0fc5 \u0f9c \u0f57 \u0fc6 \u0fc7 \u0fc8 \u0f43 \u0fc9 \u0fca \u0fcb {enter}", + "{shift} \u0fcc \u0fb5 \u0fb9 \u0f36 \u0f82 \u0f9e \u0f52 \u0f9b \u0f8b {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Turkish F Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtuf.html + */ +jQuery.keyboard.layouts['ms-Turkish F'] = { + "name" : "ms-Turkish F", + "lang" : ["tr"], + "normal" : [ + "+ 1 2 3 4 5 6 7 8 9 0 / - {bksp}", + "{tab} f g \u011F \u0131 o d r n h p q w", + "u i e a \u00FC t k m l y \u015F x {enter}", + "{shift} < j \u00F6 v c \u00E7 z s b . , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "* ! \u0022 ^ $ % & ' ( ) = ? _ {bksp}", + "{tab} F G \u011E I O D R N H P Q W", + "U \u0130 E A \u00DC T K M L Y \u015E X {enter}", + "{shift} > J \u00D6 V C \u00C7 Z S B : ; {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00AC \u00B9 \u00B2 # \u00BC \u00BD \u00BE { [ ] } \u005C | {bksp}", + "{tab} @ {empty} {empty} \u00B6 {empty} \u00A5 {empty} {empty} \u00F8 \u00A3 \u00A8 ~", + "\u00E6 \u00DF \u20AC {empty} {empty} {empty} {empty} {empty} {empty} \u00B4 {empty} ` {enter}", + "{shift} | \u00AB \u00BB \u00A2 {empty} {empty} {empty} \u00B5 \u00D7 \u00F7 \u00AD {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00A1 {empty} \u00B3 \u00A4 {empty} {empty} {empty} {empty} {empty} {empty} \u00BF {empty} {bksp}", + "{tab} {empty} {empty} {empty} \u00AE {empty} {empty} {empty} {empty} \u00D8 {empty} {empty} {empty}", + "\u00C6 \u00A7 {empty} \u00AA {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \u00A6 < > \u00A9 {empty} {empty} {empty} \u00BA {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Turkish Q Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtuq.html + */ +jQuery.keyboard.layouts['ms-Turkish Q'] = { + "name" : "ms-Turkish Q", + "lang" : ["tr"], + "normal" : [ + "\u0022 1 2 3 4 5 6 7 8 9 0 * - {bksp}", + "{tab} q w e r t y u \u0131 o p \u011F \u00FC", + "a s d f g h j k l \u015F i , {enter}", + "{shift} < z x c v b n m \u00F6 \u00E7 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00E9 ! ' ^ + % & / ( ) = ? _ {bksp}", + "{tab} Q W E R T Y U I O P \u011E \u00DC", + "A S D F G H J K L \u015E \u0130 ; {enter}", + "{shift} > Z X C V B N M \u00D6 \u00C7 : {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "< > \u00A3 # $ \u00BD {empty} { [ ] } \u005C | {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} i {empty} {empty} \u00A8 ~", + "\u00E6 \u00DF {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B4 {empty} ` {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0130 {empty} {empty} {empty} {empty}", + "\u00C6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Turkmen Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdturme.html + */ +jQuery.keyboard.layouts['ms-Turkmen'] = { + "name" : "ms-Turkmen", + "lang" : ["tk"], + "normal" : [ + "\u017e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u00e4 w e r t y u i o p \u0148 \u00f6 \u015f", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z \u00fc \u00e7 \u00fd b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u017d ! @ # $ % \u2116 & * ( ) _ + {bksp}", + "{tab} \u00c4 W E R T Y U I O P \u0147 \u00d6 \u015e", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z \u00dc \u00c7 \u00dd B N M < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Ukrainian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdur.html + */ +jQuery.keyboard.layouts['ms-Ukrainian'] = { + "name" : "ms-Ukrainian", + "lang" : ["uk"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u0457 \u005c", + "\u0444 \u0456 \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u0454 {enter}", + "{shift} \u0491 \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0401 ! \u0022 \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u0407 /", + "\u0424 \u0406 \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u0404 {enter}", + "{shift} \u0490 \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0491 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0490 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Ukrainian (Enhanced) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdur1.html + */ +jQuery.keyboard.layouts['ms-Ukrainian (Enhanced)'] = { + "name" : "ms-Ukrainian (Enhanced)", + "lang" : ["uk"], + "normal" : [ + "' 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u0457 \u005c", + "\u0444 \u0456 \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u0454 {enter}", + "{shift} \u0491 \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u20b4 ! \u0022 \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u0407 /", + "\u0424 \u0406 \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u0404 {enter}", + "{shift} \u0490 \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0491 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0490 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* United Kingdom Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbduk.html + */ +jQuery.keyboard.layouts['ms-United Kingdom'] = { + "name" : "ms-United Kingdom", + "lang" : ["en-uk"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00ac ! \u0022 \u00a3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00a6 {empty} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e9 {empty} {empty} {empty} \u00fa \u00ed \u00f3 {empty} {empty} {empty} {empty}", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c9 {empty} {empty} {empty} \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* United Kingdom Extended Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdukx.html + */ +jQuery.keyboard.layouts['ms-United Kingdom Extended'] = { + "name" : "ms-United Kingdom Extended", + "lang" : ["en-uk"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00ac ! \u0022 \u00a3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00a6 {empty} \u00a8 {empty} \u20ac {empty} ^ {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} \u1e83 \u00e9 {empty} {empty} \u00fd \u00fa \u00ed \u00f3 {empty} {empty} {empty} ~", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} {empty} {empty} {empty} \u00e7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} \u1e82 \u00c9 {empty} {empty} \u00dd \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{shift} {empty} {empty} {empty} \u00c7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Urdu Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdurdu.html + */ +jQuery.keyboard.layouts['ms-Urdu'] = { + "name" : "ms-Urdu", + "lang" : ["ur"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0637 \u0635 \u06be \u062f \u0679 \u067e \u062a \u0628 \u062c \u062d ] [ \\", + "\u0645 \u0648 \u0631 \u0646 \u0644 \u06c1 \u0627 \u06a9 \u06cc \u061b ' {enter}", + "{shift} \\ \u0642 \u0641 \u06d2 \u0633 \u0634 \u063a \u0639 \u060c \u06d4 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ \u066a ^ \u06d6 \u066d ) ( _ + {bksp}", + "{tab} \u0638 \u0636 \u0630 \u0688 \u062b \u0651 \u06c3 \u0640 \u0686 \u062e } { |", + "\u0698 \u0632 \u0691 \u06ba \u06c2 \u0621 \u0622 \u06af \u064a : \" {enter}", + "{shift} | {ZWJ} {ZWNJ} \u06d3 {LRM} \u0624 \u0626 {RLM} > < / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-Dvorak Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbddv.html + */ +jQuery.keyboard.layouts['ms-US-Dvorak'] = { + "name" : "ms-US-Dvorak", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 [ ] {bksp}", + "{tab} ' , . p y f g c r l / = \u005C", + "a o e u i d h t n s - {enter}", + "{shift} ; q j k x b m w v z {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) { } {bksp}", + "{tab} \u0022 < > P Y F G C R L ? + |", + "A O E U I D H T N S _ {enter}", + "{shift} : Q J K X B M W V Z {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-Dvorak for left hand Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusl.html + */ +jQuery.keyboard.layouts['ms-US-Dvorak for left hand'] = { + "name" : "ms-US-Dvorak for left hand", + "lang" : ["en"], + "normal" : [ + "` [ ] / p f m l j 4 3 2 1 {bksp}", + "{tab} ; q b y u r s o . 6 5 = \u005C", + "- k c d t h e a z 8 7 {enter}", + "{shift} ' x g v w n i , 0 9 {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ { } ? P F M L J $ # @ ! {bksp}", + "{tab} : Q B Y U R S O > ^ % + |", + "_ K C D T H E A Z * & {enter}", + "{shift} \u0022 X G V W N I < ) ( {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-Dvorak for right hand Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusr.html + */ +jQuery.keyboard.layouts['ms-US-Dvorak for right hand'] = { + "name" : "ms-US-Dvorak for right hand", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 j l m f p / [ ] {bksp}", + "{tab} 5 6 q . o r s u y b ; = \u005C", + "7 8 z a e h t d c k - {enter}", + "{shift} 9 0 x , i n w v g ' {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ J L M F P ? { } {bksp}", + "{tab} % ^ Q > O R S U Y B : + |", + "& * Z A E H T D C K _ {enter}", + "{shift} ( ) X < I N W V G \u0022 {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US English (Latin) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdus.html + */ +jQuery.keyboard.layouts['ms-US English (Latin)'] = { + "name" : "ms-US English (Latin)", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u005c", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US English (IBM Arabic 238_L) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusa.html + */ +jQuery.keyboard.layouts['ms-US English (IBM Arabic 238_L)'] = { + "name" : "ms-US English (IBM Arabic 238_L)", + "lang" : ["en"], + "normal" : [ + "< 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] `", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005C z x c v b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "> ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M , . ? {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-International Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusx.html + */ +jQuery.keyboard.layouts['ms-US-International'] = { + "name" : "ms-US-International", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' \u005C {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : \u0022 | {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00A1 \u00B2 \u00B3 \u00A4 \u20AC \u00BC \u00BD \u00BE \u2018 \u2019 \u00A5 \u00D7 {bksp}", + "{tab} \u00E4 \u00E5 \u00E9 \u00AE \u00FE \u00FC \u00FA \u00ED \u00F3 \u00F6 \u00AB \u00BB", + "\u00E1 \u00DF \u00F0 {empty} {empty} {empty} {empty} {empty} \u00F8 \u00B6 \u00B4 \u00AC {enter}", + "{shift} \u00E6 {empty} \u00A9 {empty} {empty} \u00F1 \u00B5 \u00E7 {empty} \u00BF {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00B9 {empty} {empty} \u00A3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 {bksp}", + "{tab} \u00C4 \u00C5 \u00C9 {empty} \u00DE \u00DC \u00DA \u00CD \u00D3 \u00D6 {empty} {empty}", + "\u00C1 \u00A7 \u00D0 {empty} {empty} {empty} {empty} {empty} \u00D8 \u00B0 \u00A8 \u00A6 {enter}", + "{shift} \u00C6 {empty} \u00A2 {empty} {empty} \u00D1 {empty} \u00C7 {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Uyghur Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdughr1.html + */ +jQuery.keyboard.layouts['ms-Uyghur'] = { + "name" : "ms-Uyghur", + "lang" : ["ug"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0686 \u06cb \u06d0 \u0631 \u062a \u064a \u06c7 \u06ad \u0648 \u067e ] [ \u005c", + "\u06be \u0633 \u062f \u0627 \u06d5 \u0649 \u0642 \u0643 \u0644 \u061b ' {enter}", + "{shift} \u0632 \u0634 \u063a \u06c8 \u0628 \u0646 \u0645 \u060c . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00bb \u00ab |", + "{empty} {empty} \u0698 \u0641 \u06af \u062e \u062c \u06c6 \u0644\u0627 : \u0022 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} > < / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Uyghur (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdughr.html + */ +jQuery.keyboard.layouts['ms-Uyghur (Legacy)'] = { + "name" : "ms-Uyghur (Legacy)", + "lang" : ["ug"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0686 \u06cb \u06d0 \u0631 \u062a \u064a \u06c7 \u06ad \u0648 \u067e ] [ \u005c", + "\u06be \u0633 \u062f \u0627 \u06d5 \u0649 \u0642 \u0643 \u0644 \u061b ' {enter}", + "{shift} \u0632 \u0634 \u063a \u06c8 \u0628 \u0646 \u0645 \u060c . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00bb \u00ab |", + "{empty} {empty} \u0698 \u06a7 \u06af \u062e \u062c \u06c6 \u0644\u0627 : \u0022 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} > < / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Uzbek Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbduzb.html + */ +jQuery.keyboard.layouts['ms-Uzbek Cyrillic'] = { + "name" : "ms-Uzbek Cyrillic", + "lang" : ["uz"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 \u0493 \u04b3 {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 \u044a \u005c", + "\u0444 \u049b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u005c \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \u0022 \u2116 ; % : ? * ( ) \u0492 \u04b2 {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 \u042a /", + "\u0424 \u049a \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Vietnamese Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdvntc.html + */ +jQuery.keyboard.layouts['ms-Vietnamese'] = { + "name" : "ms-Vietnamese", + "lang" : ["vi"], + "normal" : [ + "` \u0103 \u00e2 \u00ea \u00f4 \u0300 \u0309 \u0303 \u0301 \u0323 \u0111 - \u20ab {bksp}", + "{tab} q w e r t y u i o p \u01b0 \u01a1 \u005c", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ \u0102 \u00c2 \u00ca \u00d4 \u0300 \u0309 \u0303 \u0301 \u0323 \u0110 _ + {bksp}", + "{tab} Q W E R T Y U I O P \u01af \u01a0 |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u005c", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Wolof Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdwol.html + */ +jQuery.keyboard.layouts['ms-Wolof'] = { + "name" : "ms-Wolof", + "lang" : ["wo"], + "normal" : [ + "\u00e3 & \u00e9 \u0022 ' ( - \u00f1 _ \u014b \u00e0 ) = {bksp}", + "{tab} a z e r t y u i o p ^ \u00f3 *", + "q s d f g h j k l m \u00f9 {enter}", + "{shift} < w x c v b n , ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00c3 1 2 3 4 5 6 7 8 9 0 \u00c9 + {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 \u00d3 \u00d1", + "Q S D F G H J K L M \u00c0 {enter}", + "{shift} > W X C V B N ? . / / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} ~ # { [ | ` \u005c ^ @ ] } {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a4 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Yakut Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdyak.html + */ +jQuery.keyboard.layouts['ms-Yakut'] = { + "name" : "ms-Yakut", + "lang" : ["sah"], + "normal" : [ + "\u0022 ! \u043d\u044c \u0434\u044c \u04a5 \u0495 \u04e9 \u04bb \u04af ; : - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \u005c", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u0022 \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u2116 ? \u041d\u044c \u0414\u044c \u04a4 \u0494 \u04e8 \u04ba \u04ae ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u2116 \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Yoruba Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdyba.html + */ +jQuery.keyboard.layouts['ms-Yoruba'] = { + "name" : "ms-Yoruba", + "lang" : ["yo"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] {empty}", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} \u2018 \u2019 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "\u1ecd\u0301 \u1ecd\u0300 {empty} {empty} {empty} {empty} {empty} \u1eb9\u0301 \u1eb9\u0300 \u00b6 {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a6", + "\u1ecc\u0301 \u1ecc\u0300 {empty} {empty} {empty} {empty} {empty} \u1eb8\u0301 \u1eb8\u0300 {empty} \u00a8 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +// Keyboard Language +// Ethiopic kezboard to support Amahric and Gǝʿǝz made by Pietro Liuzzo and Solomon Gebreyes Beyene. +// *********************** +jQuery.keyboard.language.amh = { + language: 'ፊደል (Fidal) Amharic and Gǝʿǝz', + display: { + 'a': '\u2714:መቀበል (Shift+Enter)', // check mark - same action as accept + 'accept': 'Accept:መቀበል (Shift+Enter)', + 'alt': 'AltGr:ተለዋጭ፡ ፊደል፡', + 'b': '\u2190:ማጥፊያ', // Left arrow (same as ←) + 'bksp': 'Bksp:ማጥፊያ', + 'c': '\u2716:መሠረዝ', // big X, close - same action as cancel + 'cancel': 'Cancel:መሠረዝ', + 'clear': 'C:ማፅዳት', // clear num pad + 'combo': '\u00f6:Toggle Combo Keys', + 'dec': '.:የአሀዝ፡ ቁጥር', // decimal point for num pad (optional), change '.' to ',' for European format + 'e': '\u21b5:መጀመር', // down, then left arrow - enter symbol + 'enter': 'Enter:መጀመር', + 'lock': '\u21ea Lock:አሮጌ፡ ለውጥ', // caps lock + 's': '\u21e7:መለወጥ', // thick hollow up arrow + 'shift': 'Shift:መለወጥ', + 'sign': '\u00b1:የሒሣብ፡ ምልክት፡ መቀየር', // +/- sign for num pad + 'space': ' :ክፍት፡ቦታ', + 't': '\u21e5:መግፊያ', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab': '\u21e5 Tab:መግፊያ' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage: 'Use mousewheel to see other keys', + + comboRegex: /([`\'~\^\"a-z0-9\{\}\[\]\|<>])([a-z0-9_\-\.\|`\'~\^\"!,=])/mig, + combos: { + a: { + a: '\u02be', '.': '\u1ea1', 1: "\u00e0", 2: "\u00e1", 3: "\u00e3", '=': "\u00e2", 9: "\u00e4", '-': "\u0101", ',': '\u1360' + }, + A: { + A: '\u02bf', '-': "\u0100", 1: "\u00c0", 2: "\u00c1", 3: "\u00c3", 9: "\u00c4", '=': "\u00c2" + }, + e: { + e: '\u01dd', '-': "\u0113", ',': '\u1367', 1: "\u00e8", 2: "\u00e9", 3: "\u1ebd", 9: "\u00eb", '=': "\u00ea" + }, + E: { + E: '\u018e', '-': "\u0112", 1: "\u00c8", 2: "\u00c9", 3: "\u1ebc", 9: "\u00cb", '=': "\u00ca" + }, + i: { + 1: "\u00ec", 2: "\u00ed", 3: "\u0129", 9: "\u00ef", 9: "\u00f6", '=': "\u00ee" + }, + I: { + 1: "\u00cc", 2: "\u00cd", 3: "\u0128", 9: "\u00cf", '=': "\u00ce" + }, + o: { + 1: "\u00f2", 2: "\u00f3", 3: "\u00f5", '=': "\u00f4" + }, + O: { + 1: "\u00d2", 2: "\u00d3", 3: "\u00d5", 9: "\u00d6", '=': "\u00d4" + }, + u: { + 1: "\u00f9", 2: "\u00fa", 3: "\u0169", 9: "\u00fc", '=': "\u00fb" + }, + U: { + 1: "\u00d9", 2: "\u00da", 3: "\u0168", 9: "\u00dc", '=': "\u00db" + }, + 'h': { + a: "\u1200", u: "\u1201", i: "\u1202", A: "\u1203", E: "\u1204", e: "\u1205", o: "\u1206", '!': '\u1207', '_': '\u1e2b', '.': '\u1e25' + }, + "l": { + a: "\u1208", u: "\u1209", i: "\u120a", A: "\u120b", E: "\u120c", e: "\u120d", o: "\u120e", '!': '\u120F' + }, + "H": { + a: "\u1210", u: "\u1211", i: "\u1212", A: "\u1213", E: "\u1214", e: "\u1215", o: "\u1216", '!': '\u1217', '_': '\u1e2a' + }, + "m": { + a: "\u1218", u: "\u1219", i: "\u121a", A: "\u121b", E: "\u121c", e: "\u121d", o: "\u121e", '!': '\u121F' + }, + "S": { + a: "\u1220", u: "\u1221", i: "\u1222", A: "\u1223", E: "\u1224", e: "\u1225", o: "\u1226", '!': '\u1227', '.': '\u1e62', '|': '\u0160', 6: "\u015A" + }, + "r": { + a: "\u1228", u: "\u1229", i: "\u122a", A: "\u122b", E: "\u122c", e: "\u122d", o: "\u122e", '!': '\u122F' + }, + "s": { + a: "\u1230", u: "\u1231", i: "\u1232", A: "\u1233", E: "\u1234", e: "\u1235", o: "\u1236", '!': '\u1237', '.': '\u1e63', '|': '\u0161', 6: "\u015b" + }, + "v": { + a: "\u1238", u: "\u1239", i: "\u123a", A: "\u123b", E: "\u123c", e: "\u123d", o: "\u123e", '!': '\u123F' + }, + "q": { + a: "\u1240", u: "\u1241", i: "\u1242", A: "\u1243", E: "\u1244", e: "\u1245", o: "\u1246", '!': '\u1247' + }, + "b": { + a: "\u1260", u: "\u1261", i: "\u1262", A: "\u1263", E: "\u1264", e: "\u1265", o: "\u1266", '!': '\u1267', ',': '\u1363' + }, + "B": { + a: "\u1268", u: "\u1269", i: "\u126A", A: "\u126B", E: "\u126C", e: "\u126D", o: "\u126E", '!': '\u126F' + }, + "t": { + a: "\u1270", u: "\u1271", i: "\u1272", A: "\u1273", E: "\u1274", e: "\u1275", o: "\u1276", '!': '\u1277', '.': '\u1e6d' + }, + "c": { + a: "\u1278", u: "\u1279", i: "\u127a", A: "\u127b", E: "\u127c", e: "\u127d", o: "\u127e", '!': '\u127F', '_': '\u010d\u0323', '|': '\u010d', ',': '\u1364' + }, + "x": { + a: "\u1280", u: "\u1281", i: "\u1282", A: "\u1283", E: "\u1284", e: "\u1285", o: "\u1286", '!': '\u1287' + }, + "n": { + a: "\u1290", u: "\u1291", i: "\u1292", A: "\u1293", E: "\u1294", e: "\u1295", o: "\u1296", '!': '\u1297', 3: "\u00f1" + }, + "N": { + a: "\u1298", u: "\u1299", i: "\u129a", A: "\u129b", E: "\u129c", e: "\u129d", o: "\u129e", '!': '\u129F', 3: "\u00d1" + }, + "'": { + a: "\u12a0", u: "\u12a1", i: "\u12a2", A: "\u12a3", E: "\u12a4", e: "\u12a5", o: "\u12a6", '!': '\u12A7' + }, + "k": { + a: "\u12a8", u: "\u12a9", i: "\u12aa", A: "\u12ab", E: "\u12ac", e: "\u12ad", o: "\u12ae", '!': '\u12AF' + }, + "K": { + a: "\u12b8", u: "\u12b9", i: "\u12ba", A: "\u12bb", E: "\u12bc", e: "\u12bd", o: "\u12be" + }, + "w": { + a: "\u12c8", u: "\u12c9", i: "\u12ca", A: "\u12cb", E: "\u12cc", e: "\u12cd", o: "\u12ce", '!': '\u12CF', '=': "\u02b7" + }, + "W": { + a: "\u12d0", u: "\u12d1", i: "\u12d2", A: "\u12d3", E: "\u12d4", e: "\u12d5", o: "\u12d6" + }, + "z": { + a: "\u12d8", u: "\u12d9", i: "\u12da", A: "\u12db", E: "\u12dc", e: "\u12dd", o: "\u12de", '!': '\u12DF', '|': '\u017e' + }, + "Z": { + a: "\u12e0", u: "\u12e1", i: "\u12e2", A: "\u12e3", E: "\u12e4", e: "\u12e5", o: "\u12e6", '!': '\u12E7', '|': '\u017d' + }, + "y": { + a: "\u12e8", u: "\u12e9", i: "\u12ea", A: "\u12eb", E: "\u12ec", e: "\u12ed", o: "\u12ee", '!': '\u12EF', 1: "\u1ef3", 2: "\u00fd", 3: "\u1ef9", 9: "\u00ff", '=': "\u0177" + }, + "d": { + a: "\u12f0", u: "\u12f1", i: "\u12f2", A: "\u12f3", E: "\u12f4", e: "\u12f5", o: "\u12f6", '!': '\u12F7', '.': '\u1e0d', ',': '\u1366' + }, + "L": { + a: "\u12F8", u: "\u12F9", i: "\u12FA", A: "\u12FB", E: "\u12FC", e: "\u12FD", o: "\u12FE", '!': '\u12FF' + }, + "D": { + a: "\u1300", u: "\u1301", i: "\u1302", A: "\u1303", E: "\u1304", e: "\u1305", o: "\u1306", '!': '\u1307', '.': '\u1e0c' + }, + "g": { + a: "\u1308", u: "\u1309", i: "\u130a", A: "\u130b", E: "\u130c", e: "\u130d", o: "\u130e", '!': '\u130F', '|': '\u01e7' + }, + "G": { + a: "\u1318", u: "\u1319", i: "\u131a", A: "\u131b", E: "\u131c", e: "\u131d", o: "\u131e", '!': '\u131F', '|': '\u01e6' + }, + "T": { + a: "\u1320", u: "\u1321", i: "\u1322", A: "\u1323", E: "\u1324", e: "\u1325", o: "\u1326", '!': '\u1327', '.': '\u1e6c' + }, + "C": { + a: "\u1328", u: "\u1329", i: "\u132a", A: "\u132b", E: "\u132c", e: "\u132d", o: "\u132e", '!': '\u132F' + }, + "p": { + a: "\u1330", u: "\u1331", i: "\u1332", A: "\u1333", E: "\u1334", e: "\u1335", o: "\u1336", '!': '\u1337', 6: "\u1e57" + }, + "j": { + a: "\u1338", u: "\u1339", i: "\u133a", A: "\u133b", E: "\u133c", e: "\u133d", o: "\u133e", '!': '\u133F' + }, + "J": { + a: "\u1340", u: "\u1341", i: "\u1342", A: "\u1343", E: "\u1344", e: "\u1345", o: "\u1346", '!': '\u1347' + }, + "f": { + a: "\u1348", u: "\u1349", i: "\u134a", A: "\u134b", E: "\u134c", e: "\u134d", o: "\u134e", '!': '\u134F', ',': '\u1368' + }, + "P": { + a: "\u1350", u: "\u1351", i: "\u1352", A: "\u1353", E: "\u1354", e: "\u1355", o: "\u1356", '!': '\u1357', 6: "\u1E56" + }, + "Q": { + a: "\u1250", u: "\u1251", i: "\u1252", A: "\u1253", E: "\u1254", e: "\u1255", o: "\u1256" + }, + "[": { + a: "\u1248", i: "\u124a", A: "\u124b", E: "\u124c", e: "\u124d" + }, + "]": { + a: "\u1288", i: "\u128a", A: "\u128b", E: "\u128c", e: "\u128d" + }, + "}": { + a: "\u12b0", i: "\u12b2", A: "\u12b3", E: "\u12b4", e: "\u12b5" + }, + "{": { + a: "\u1310", i: "\u1312", A: "\u1313", E: "\u1314", e: "\u1315" + }, + "M": { + a: "\u1380", i: "\u1381", E: "\u1382", e: "\u1383" + }, + "|": { + a: "\u1384", i: "\u1385", E: "\u1386", e: "\u1387" + }, + "<": { + a: "\u1388", i: "\u1389", E: "\u138A", e: "\u138B" + }, + ">": { + a: "\u138C", i: "\u138D", E: "\u138E", e: "\u138F" + }, + 'Y': { + 1: "\u1ef2", 2: "\u00dd", 3: "\u1ef8", 9: "\u0178", '=': "\u0176" + } + }, + // language direction + rtl: false +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// de = ISO 639-1 code for German +// *********************** +jQuery.keyboard.language.de = { + language: 'Deutsch (German)', + display : { + 'a' : '\u2714:\u00dcbernehmen (Umschalt+Enter)', // check mark - same action as accept + 'accept' : '\u00dcbernehmen:\u00dcbernehmen (Umschalt+Enter)', + 'alt' : 'AltGr:Alt Graph', + 'b' : '\u2190:R\u00fccktaste', // Left arrow (same as ←) + 'bksp' : 'R\u00fcck:R\u00fccktaste', + 'c' : '\u2716:Abbrechen (Esc)', // big X, close - same action as cancel + 'cancel' : 'Abbrechen:Abbrechen (Esc)', + 'clear' : 'C:L\u00f6schen', // clear num pad + 'combo' : '\u00f6:Tottasten umschalten', + 'dec' : ',:Dezimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Eingabe', // down, then left arrow - enter symbol + 'enter' : 'Enter:Eingabe', + 'lock' : '\u21E9:Feststelltaste', // caps lock + 's' : '\u21e7:Umschalttaste', // thick hollow up arrow + 'shift' : 'Umschalt:Umschalttaste', + 'sign' : '\u00b1:Vorzeichen wechseln', // +/- sign for num pad + 'space' : ' :Leertaste', + 't' : '\u21e5:Tabulatortaste', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tabulatortaste' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Mausrad benutzen, um weitere Tasten zu sehen', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// es = ISO 639-1 code for Spanish +// *********************** +jQuery.keyboard.language.es = { + language: 'Espa\u00f1ol (Spanish)', + display : { + 'a' : '\u2714:Acceptar (Cambio+Inscribir)', // check mark - same action as accept + 'accept' : 'Acceptar:Acceptar (Cambio+Inscribir)', + 'alt' : 'AltGr:Grafemas Alternativos', + 'b' : '\u2190:Retroceso', // Left arrow (same as ←) + 'bksp' : 'Bksp:Retroceso', + 'c' : '\u2716:Cancelar (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancelar:Cancelar (Esc)', + 'clear' : 'C:Vaciar', // clear num pad + 'combo' : '\u00f6:Alternar las Teclas Combinados', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Inscribir', // down, then left arrow - enter symbol + 'enter' : 'Inscribir:Inscribir', + 'lock' : '\u21ea Bloq:Mayús', // caps lock + 's' : '\u21e7:Cambio', // thick hollow up arrow + 'shift' : 'Cambio:Cambio', + 'sign' : '\u00b1:Cambiar Signo', // +/- sign for num pad + 'space' : ' :Espacio', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + wheelMessage : 'Utilice la rueda del mouse para ver otras teclas' +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// fa = ISO 639-1 code for Farsi +// *********************** +jQuery.keyboard.language.fa = { + language: '\u0641\u0627\u0631\u0633\u06cc (Farsi)', + display: { + 'a' : '\u2714:\u062a\u0623\u06cc\u06cc\u062f (Shift+Enter)', + 'accept' : '\u062a\u0623\u06cc\u06cc\u062f:\u062a\u0623\u06cc\u06cc\u062f (Shift+Enter)', + 'alt' : 'Lng:Alternate Graphemes', + 'b' : '\u2190:\u2b05 Backspace', + 'bksp' : '\u2b05 Bksp:\u2b05 Backspace', + 'c' : '\u2716:\u0627\u0646\u0635\u0631\u0627\u0641 (Esc)', + 'cancel' : '\u0627\u0646\u0635\u0631\u0627\u0641:\u0627\u0646\u0635\u0631\u0627\u0641 (Esc)', + 'clear' : 'C:Clear', + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', + 'e' : '\u21b5:Enter', + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', + 's' : '\u21e7:Shift', + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', + 'space' : ' :Space', + 't' : '\u21e5:Tab', + 'tab' : '\u21e5 Tab:Tab' + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage: 'Use mousewheel to see other keys', + rtl: true + + // uncomment, then include changes to the comboRegex here + //, comboRegex: /([`\'~\^\"ao])([a-z])/mig, + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + } + */ +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// fr = ISO 639-1 code for French +// *********************** +jQuery.keyboard.language.fr = { + language: 'Fran\u00e7ais (French)', + display : { + 'a' : '\u2714:Valider (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Valider:Valider (Shift+Enter)', + 'alt' : 'AltGr:Charact\u00e8re alternatif', + 'b' : '\u2190:Suppr arri\u00e8re', // Left arrow (same as ←) + 'bksp' : '\u2190Suppr:Suppr arri\u00e8re', + 'c' : '\u2716:Annuler', // big X, close - same action as cancel + 'cancel' : 'Annuler:Annuler (\u00c9chap)', + 'clear' : 'C:Effacer', // clear num pad + 'combo' : '\u00f6:Bacsuler les touches combo', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Entr\u00e9e', // down, then left arrow - enter symbol + 'enter' : 'Entr\u00e9e:Entr\u00e9e', + 'lock' : '\u21ea Verr Mag:Verouillage majuscule', // caps lock + 's' : '\u21e7:Majuscule', // thick hollow up arrow + 'shift' : 'Maj:Majuscule', + 'sign' : '\u00b1:Change de signe', // +/- sign for num pad + 'space' : ' :Espace', + 't' : '\u21e5:Tabulation', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tabulation' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Utiliser la molette de la souris pour voir les autres lettres', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// he = ISO 639-1 code for Hebrew +// *********************** +jQuery.keyboard.language.he = { + language: '\u05e2\u05d1\u05e8\u05d9\u05ea (Hebrew)', + display : { + 'a' : '\u2714:אישור (Shift+Enter)', // check mark - same action as accept + 'accept' : 'אישור:אישור (Shift+Enter)', + 'alt' : 'Alt:תווים נוספים', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:ביטול (Esc)', // big X, close - same action as cancel + 'cancel' : 'ביטול:ביטול (Esc)', + 'clear' : 'C:ניקוי', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:נקודה עשרונית', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:שינוי סימן', // +/- sign for num pad + 'space' : ' :רווח', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'ניתן להשתמש בגלגלת העכבר כדי לראות מקשים נוספים', + // language direction + rtl : true +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// hu = ISO 639-1 code for Hungarian +// *********************** +jQuery.keyboard.language.hu = { + language: 'Magyar (Hungarian)', + display : { + 'a' : '\u2714:Rendben (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Rendben:Rendben (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'T\u00f6r\u00f6l:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'M\u00e9gsem:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Haszn\u00e1ld az eg\u00e9r g\u00f6rget\u0151t a t\u00f6bbi billenty\u0171 \u00e1tv\u00e1lt\u00e1shoz', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// "all" is used here for example purposes, by convention it should be the ISO 639-1 code for the specified language +// *********************** +jQuery.keyboard.language.it = { + language: 'Italiano (Italian)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accetta (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accetta:Accetta (Shift+Enter)', + 'alt' : 'AltGr:Grafemi Alternativi', + 'b' : '\u2190:Cancella', // Left arrow (same as ←) + 'bksp' : 'Canc:Cancella', + 'c' : '\u2716:Annulla (Esc)', // big X, close - same action as cancel + 'cancel' : 'Annulla:Annulla (Esc)', + 'clear' : 'C:Pulisci', // clear num pad + 'combo' : '\u00f6:Tasti Combinati', + 'dec' : ',:Decimale', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Invio', // down, then left arrow - enter symbol + 'enter' : 'Invio:Invio', + 'lock' : '\u21ea Bloc:Bloc Maiusc', // caps lock + 's' : '\u21e7:Maiusc', // thick hollow up arrow + 'shift' : 'Maiusc:Maiusc', + 'sign' : '\u00b1:Cambia Segno', // +/- sign for num pad + 'space' : ' :Spazio', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Usa la rotella del mouse per vedere altri tasti' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// lv = ISO 639-1 code for Latvian +// *********************** +jQuery.keyboard.language.lv = { + language: 'Latvie\u0161u (Latvian)', + display : { + 'a' : '\u2714:Pie\u0146emt (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Pie\u0146emt:Pie\u0146emt (Shift+Enter)', + 'alt' : 'AltGr:Altern\u0113\u0161anas tausti\u0146\u0161', + 'b' : '\u2190:Atpaka\u013Catk\u0101pe', // Left arrow (same as ←) + 'bksp' : 'Bksp:Atpaka\u013Catk\u0101pe', + 'c' : '\u2716:Atcelt (Esc)', // big X, close - same action as cancel + 'cancel' : 'Atcelt:Atcelt (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Izmanto peles riten\u012Bti, lai apskat\u012Btu citus tausti\u0146us', + // New combos using specific accents + combos : { + // duplicated from regular combos, used specific accents here instead + // acute & cedilla c C é É n N ó Ó s S z Z + "'" : { c:"\u0107", C:"\u0106", e:"\u00e9", E:"\u00c9", n:"\u0144", N:"\u0143", o:"\u00f3", O:"\u00d3", s:"\u015b", S:"\u015a", z:"\u017a", Z:"\u0179" }, + // diaeresis: ä Ä ö Ö ü Ü + '\u00a8' : { a:"\u00e4", A:"\u00c4", o:"\u00f6", O:"\u00d6", u:"\u00fc", U:"\u00dc" }, + // degree sign å Å e E g z Z + '\u00b0' : { a:"\u00e5", A:"\u00c5", e:"\u0117", E:"\u0116", g:"\u0121", z:"\u017c", Z:"\u017b" }, + }, + comboRegex : /([`\'~\^\"ao\u00a8\u00b0])([a-z])/mig +}; + +/** + * Burmese Keyboard Language + * please update this section to match this language and email me with corrections! + * my = ISO 639-1 code for Burmese + * thanks to @laminko (https://github.com/laminko); + * see https://github.com/Mottie/Keyboard/pull/507 + * license for this file: WTFPL + */ +jQuery.keyboard.language.my = { + language: '\u1017\u1019\u102c (Burmese)', // e.g. 'Русский (Russian)' + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:\u101b\u103e\u1004\u103a\u1038\u101c\u1004\u103a\u1038\u101b\u1014\u103a', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:\u1012\u101e\u1019', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : '\u1021\u1001\u103c\u102c\u1038\u1001\u101c\u102f\u1010\u103a\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1019\u103c\u1004\u103a\u101b\u1005\u1031\u101b\u1014\u103a \u1019\u1031\u102c\u1000\u103a\u1005\u103a\u101d\u103e\u102e\u1038\u101c\u103a\u1000\u102d\u102f \u1021\u101e\u102f\u1036\u1038\u1015\u103c\u102f\u1015\u102b' + + // uncomment, then include changes to the comboRegex here + /* + , comboRegex : /([`\'~\^\"ao])([a-z])/mig, + */ + + // uncomment, then include any changes to the combos option here + /* + , combos : { + // grave + '`' : { a:"\u00e0", A:"\u00c0", e:"\u00e8", E:"\u00c8", i:"\u00ec", I:"\u00cc", o:"\u00f2", O:"\u00d2", + u:"\u00f9", U:"\u00d9", y:"\u1ef3", Y:"\u1ef2" }, + // acute & cedilla + "'" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", + u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, + // umlaut/trema + '"' : { a:"\u00e4", A:"\u00c4", e:"\u00eb", E:"\u00cb", i:"\u00ef", I:"\u00cf", o:"\u00f6", O:"\u00d6", + u:"\u00fc", U:"\u00dc", y:"\u00ff", Y:"\u0178" }, + // circumflex + '^' : { a:"\u00e2", A:"\u00c2", e:"\u00ea", E:"\u00ca", i:"\u00ee", I:"\u00ce", o:"\u00f4", O:"\u00d4", + u:"\u00fb", U:"\u00db", y:"\u0177", Y:"\u0176" }, + // tilde + '~' : { a:"\u00e3", A:"\u00c3", e:"\u1ebd", E:"\u1ebc", i:"\u0129", I:"\u0128", o:"\u00f5", O:"\u00d5", + u:"\u0169", U:"\u0168", y:"\u1ef9", Y:"\u1ef8", n:"\u00f1", N:"\u00d1" } + }, + // language direction + rtl : false + */ +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pl = ISO 639-1 code for Polish +// *********************** +jQuery.keyboard.language.pl = { + language: 'Polski (Polish)', + display : { + 'a' : '\u2714:Akceptuj (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Akceptuj (Shift+Enter)', + 'alt' : 'AltGr:Polskie znaki', + 'b' : '\u2190:Cofnij', // Left arrow (same as ←) + 'bksp' : 'Bksp:Cofnij', + 'c' : '\u2716:Anuluj (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Anuluj (Esc)', + 'clear' : 'C:Czyść', // clear num pad + 'combo' : '\u00f6:Klawisze kombo', + 'dec' : '.:Dziesiętny', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Zmień znak', // +/- sign for num pad + 'space' : ' :Spacja', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Użyj rolki aby zobaczyć pozozstałe klawisze', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// pt = ISO 639-1 code for Portuguese +// *********************** +jQuery.keyboard.language.pt = { + language: 'Portugu\u00eas (Portuguese)', + display : { + 'a' : '\u2714:Aceitar (Shift+Enter)', // ALTERNATE accept button - unicode for check mark symbol + 'accept' : 'Aceitar:Concluir (Shift+Enter)', // Accept button text + 'alt' : 'AltGr:Carateres Adicionais/CTRL+ALT', // Alt button text (AltGr is for international key sets) + 'b' : '\u2190:Retroceder', // ALTERNATE backspace button - unicode for left arrow. Same as ← ( ← ) - Left arrow + 'bksp' : '\u2190 Bksp:Retroceder', // Backspace button text + 'c' : '\u2716:Cancelar/Escape (Esc)', // ALTERNATE cancel button - unicode for big X + 'cancel' : 'Cancel:Cancelar/Escape(Esc)', // Cancel button text + 'clear' : 'C:Limpar', // Clear window content (used in num pad) + 'combo' : '\u00f6:Acentuação Automática', // (Toggle combo (diacritic) key + 'dec' : '.:Decimal', // Decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Introduzir/Mudar de Linha', // ALTERNATE enter button - unicode for down, then left arrow (enter symbol) + 'enter' : 'Enter\u21b5:Introduzir/Mudar de Linha', // Enter button text + 'lock' : '\u21ea Lock:CapsLock/Maiúsculas', // Caps lock button - unicode for double lined up arrow + 's' : '\u21e7:Shift/Maiúsculas', // ALTERNATE shift button - unicode for a thick up arrow + 'shift' : '\u21ea Shift:Maiúsculas-Minúsculas', // Shift button text + 'sign' : '\u00b1:Mudar Sinal', // Change sign (used in num pad) - unicode for a +- symbol + 'space' : ' :Espaço', // Space button text + 't' : '\u21e5:Tab/Tabela/Avançar', // ALTERNATE tab button - unicode for right arrow to bar (used since only one directional tabs available) + 'tab' : '\u21e5 Tab:Tabela/Avançar' // Tab button text (Note: \u21b9 is the true tab symbol (left & right arrows) but not used here) + }, + wheelMessage : 'Use a roda do rato/navegador para ver mais teclas', + + // Update regex for the combos above + comboRegex : /([`\'~\^\"ao\u00b4])([a-z])/mig, + // New combos using specific accents + combos : { + "\u00b4" : { a:"\u00e1", A:"\u00c1", e:"\u00e9", E:"\u00c9", i:"\u00ed", I:"\u00cd", o:"\u00f3", O:"\u00d3", u:"\u00fa", U:"\u00da", y:"\u00fd", Y:"\u00dd" }, // acute & cedilla + // remove apostrophe combo + "'" : {} + } + +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ro = ISO 639-1 code for Romanian +// *********************** +jQuery.keyboard.language.ro = { + language: 'Rom\u00e2n\u0103 (Romanian)', + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Schimba semnul', // +/- sign for num pad + 'space' : ' :Spatiu', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Foloseste rotita mouse-ului pentru a vedea si celelalte caractere', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// ru = ISO 639-1 code for Russian +// *********************** +jQuery.keyboard.language.ru = { + language: '\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)', + display : { + 'a' : '\u2714:Сохранить (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Сохранить:Сохранить (Shift+Enter)', + 'alt' : 'РУС:Русская клавиатура', + 'b' : '\u2190:Удалить символ слева', // Left arrow (same as ←) + 'bksp' : '\u21e6:Удалить символ слева', + 'c' : '\u2716:Отменить (Esc)', // big X, close - same action as cancel + 'cancel' : 'Отменить:Отменить (Esc)', + 'clear' : 'C:Очистить', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : ',:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Ввод', // down, then left arrow - enter symbol + 'enter' : 'Ввод:Перевод строки', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Верхний регистр', // thick hollow up arrow + 'shift' : '\u21e7:Верхний регистр', + 'sign' : '\u00b1:Сменить знак', // +/- sign for num pad + 'space' : 'Пробел:', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// sq = ISO 639-1 code for Albanian +// *********************** +jQuery.keyboard.language.sq = { + language : 'Shqip (Albanian)', + display : { + 'a' : '\u2714:Prano (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Prano:Prano (Shift+Enter)', + 'alt' : 'Alt:Alternativ', + 'b' : '\u2190:Hap\u00ebsir\u00ebn Mbrapa', // Left arrow (same as ←) + 'bksp' : 'Bksp:Hap\u00ebsir\u00ebn Mbrapa', + 'c' : '\u2716:Anuloj (Arratisjes)', // big X, close - same action as cancel + 'cancel' : 'Anuloj:Anuloj (Arratisjes)', + 'clear' : 'C:Qart\u00eb', // clear num pad + 'combo' : '\u00f6:Kombinimi', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Shkruani', // down, then left arrow - enter symbol + 'enter' : 'Shkruani:Shkruani', + 'lock' : '\u21ea Bllokoj:Caps Lock', // caps lock + 'next' : 'Next \u21e8', + 'prev' : '\u21e6 Prev', + 's' : '\u21e7:Ndryshim', // thick hollow up arrow + 'shift' : 'Ndryshim:Ndryshim', + 'sign' : '\u00b1:Ndryshimi Regjistrohu', // +/- sign for num pad + 'space' : ' :Hap\u00ebsir\u00eb', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'P\u00ebrdorimi mousewheel p\u00ebr t\u00eb par\u00eb \u00e7el\u00ebsat e tjera', + + // New combos using specific accents + // Not sure what to do with these accents: ˇ ˘ ˙ ° ˛ ˝ + comboRegex : /([`\'~\^\"ao\/])([a-z])/gim, + combos : { + // new combos below ( forward slash + d, forward slash + l ) + '/' : { d:"\u0111", D:"\u0110", l:"\u0142", L:"\u0141" } // stroke đ Đ ł Ł + } +}; diff --git a/app/Resources/public/assets/keyboard/layouts/latvian.js b/app/Resources/public/assets/keyboard/layouts/latvian.js new file mode 100644 index 0000000000..ebd3801638 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/latvian.js @@ -0,0 +1,41 @@ +/* Latvian keyboard layouts + * contains layout: 'latvian-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'latvian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ +jQuery.keyboard.layouts['latvian-qwerty'] = { + 'name' : 'latvian-qwerty', + 'lang' : ['lv'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u00B0", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00ac 1 \u00AB \u00BB \u20AC 5 \u2019 7 8 9 0 \u2013 = {bksp}", + "{tab} q w \u0113 \u0157 t y \u016B \u012B \u014D p [ ] \u00B0", + "\u0101 \u0161 d f \u0123 h j \u0137 \u013C ; \u00B4 {enter}", + "{shift} \u017E x \u010D v b \u0146 m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '~ 1 2 3 4 \u00A7 \u00AB 7 \u00B1 \u00D7 0 \u2014 = {bksp}', + "{tab} Q W \u0112 \u0156 T Y \u016A \u012A \u014C P { } |", + '\u0100 \u0160 D F \u0122 H J \u0136 \u013B : \u00A8 {enter}', + "{shift} \u017D X \u010C V B \u0145 M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/mongolian.js b/app/Resources/public/assets/keyboard/layouts/mongolian.js new file mode 100644 index 0000000000..af460e05e0 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/mongolian.js @@ -0,0 +1,42 @@ +/* Mongolian keyboard layouts +* contains layout: 'mongolian' +* +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'mongolian' }); +* +* license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference +*/ +jQuery.keyboard.layouts['mongolian'] = { + 'name' : 'mongolian', + 'lang' : ['mn'], + 'normal' : [ + '= \u2116 - " \u20AE : . _ , % ? \u0435 \u0449 {bksp}', + '{tab} \u0444 \u0446 \u0443 \u0436 \u044d \u043D \u0433 \u0448 \u04af \u0437 \u043A \u044A \\', + '\u0439 \u044B \u0431 \u04e9 \u0430 \u0445 \u0440 \u043e \u043B \u0434 \u043f {enter}', + '{shift} \u044F \u0447 \u0451 \u0441 \u043c \u0438 \u0442 \u044c \u0432 \u044e {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + + 'shift' : [ + '+ 1 2 3 4 5 6 7 8 9 0 \u0415 \u0429 {bksp}', + '{tab} \u0424 \u0426 \u0423 \u0416 \u042d \u041D \u0413 \u0428 \u04AE \u0417 \u041a \u042A |', + '\u0419 \u042B \u0411 \u04e8 \u0410 \u0425 \u0420 \u041e \u041b \u0414 \u041f {enter}', + '{shift} \u042F \u0427 \u0401 \u0421 \u041c \u0418 \u0422 \u042c \u0412 \u042e {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Albanian.js b/app/Resources/public/assets/keyboard/layouts/ms-Albanian.js new file mode 100644 index 0000000000..7703f02597 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Albanian.js @@ -0,0 +1,28 @@ +/* Albanian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdal.html + */ +jQuery.keyboard.layouts['ms-Albanian'] = { + name: "ms-Albanian", + lang: ["sq"], + "normal": [ + "\\ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t z u i o p \u00e7 @", + "a s d f g h j k l \u00eb [ ] {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift: [ + '| ! " # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Z U I O P \u00c7 '", + "A S D F G H J K L \u00cb { } {enter}", + "{shift} > Y X C V B N M ; : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt: [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df \u00a4 {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Arabic.js b/app/Resources/public/assets/keyboard/layouts/ms-Arabic.js new file mode 100644 index 0000000000..f4a41581e6 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Arabic.js @@ -0,0 +1,79 @@ +/* Arabic (101) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbda1.html + */ +jQuery.keyboard.layouts['ms-Arabic (101)'] = { + "name" : "ms-Arabic (101)", + "lang" : ["ar"], + "normal" : [ + "\u0630 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u062F \\", + "\u0634 \u0633 \u064A \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u0643 \u0637 {enter}", + "{shift} \u0626 \u0621 \u0624 \u0631 \u0644\u0627 \u0649 \u0629 \u0648 \u0632 \u0638 {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0651 ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u064E \u064B \u064F \u064C \u0644\u0625 \u0625 \u2018 \u00F7 \u00D7 \u061B < > |", + "\u0650 \u064D ] [ \u0644\u0623 \u0623 \u0640 \u060C / : \" {enter}", + "{shift} ~ \u0652 } { \u0644\u0622 \u0622 \u2019 , . \u061F {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Arabic (102) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbda2.html + */ +jQuery.keyboard.layouts['ms-Arabic (102)'] = { + "name" : "ms-Arabic (102)", + "lang" : ["ar"], + "normal" : [ + "> 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u062F {enter}", + "\u0634 \u0633 \u064A \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u0643 \u0637 \u0630 ", + "{shift} \u0640 \u0626 \u0621 \u0624 \u0631 \u0644\u0627 \u0649 \u0629 \u0648 \u0632 \u0638 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "< ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u064E \u064B \u064F \u064C \u0644\u0625 \u0625 \u2018 \u00F7 \u00D7 \u061B } { {enter}", + "\\ {empty} ] [ \u0644\u0623 \u0623 \u0640 \u060C / : \" \u0651 ", + "{shift} | ~ \u0652 \u0650 \u064D \u0644\u0622 \u0622 \u2019 , . \u061F {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} \u00A4 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u0651\u064E \u0651\u064B \u0651\u064F \u0651\u064C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} {empty} {empty} {empty} \u0651\u0650 \u0651\u064D {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Arabic (102) AZERTY Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbda3.html + */ +jQuery.keyboard.layouts['ms-Arabic (102) AZERTY'] = { + "name" : "ms-Arabic (102) AZERTY", + "lang" : ["ar"], + "normal" : [ + "> & \u00E9 \" ' ( - \u00E8 _ \u00E7 \u00E0 ) = {bksp}", + "{tab} \u0636 \u0635 \u062B \u0642 \u0641 \u063A \u0639 \u0647 \u062E \u062D \u062C \u062F {enter}", + "\u0634 \u0633 \u064A \u0628 \u0644 \u0627 \u062A \u0646 \u0645 \u0643 \u0637 \u0630 ", + "{shift} \\ \u0626 \u0621 \u0624 \u0631 \u0644\u0627 \u0649 \u0629 \u0648 \u0632 \u0638 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "< 1 2 3 4 5 6 7 8 9 0 \u00B0 + {bksp}", + "{tab} \u064E \u064B \u064F \u064C \u0644\u0625 \u0625 \u2018 \u00F7 \u00D7 \u061B } { {enter}", + "\\ {empty} ] [ \u0644\u0623 \u0623 \u0640 \u060C / : \" \u0651 ", + "{shift} | ~ \u0652 \u0650 \u064D \u0644\u0622 \u0622 \u2019 , . \u061F {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} \u00A4 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u0651\u064E \u0651\u064B \u0651\u064F \u0651\u064C {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} {empty} {empty} {empty} \u0651\u0650 \u0651\u064D {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Armenian.js b/app/Resources/public/assets/keyboard/layouts/ms-Armenian.js new file mode 100644 index 0000000000..d8e7ca150b --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Armenian.js @@ -0,0 +1,43 @@ +/* Armenian Eastern Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdarme.html + */ +jQuery.keyboard.layouts['ms-Armenian Eastern'] = { + "name" : "ms-Armenian Eastern", + "lang" : ["hy-e"], + "normal" : [ + "\u055d : \u0571 \u0575 \u055b , - . \u00ab \u00bb \u0585 \u057c \u056a {bksp}", + "{tab} \u056d \u0582 \u0567 \u0580 \u057f \u0565 \u0568 \u056b \u0578 \u057a \u0579 \u057b '", + "\u0561 \u057d \u0564 \u0586 \u0584 \u0570 \u0573 \u056f \u056c \u0569 \u0583 {enter}", + "{shift} ' \u0566 \u0581 \u0563 \u057e \u0562 \u0576 \u0574 \u0577 \u0572 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u055c 1 \u0541 \u0545 3 4 9 \u0587 ( ) \u0555 \u054c \u053a {bksp}", + "{tab} \u053d \u0552 \u0537 \u0550 \u054f \u0535 \u0538 \u053b \u0548 \u054a \u0549 \u054b \u055e", + "\u0531 \u054d \u0534 \u0556 \u0554 \u0540 \u0543 \u053f \u053c \u0539 \u0553 {enter}", + "{shift} \u055e \u0536 \u0551 \u0533 \u054e \u0532 \u0546 \u0544 \u0547 \u0542 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Armenian Western Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdarmw.html + */ +jQuery.keyboard.layouts['ms-Armenian Western'] = { + "name" : "ms-Armenian Western", + "lang" : ["hy-w"], + "normal" : [ + "\u055d : \u0571 \u0575 \u055b , - . \u00ab \u00bb \u0585 \u057c \u056a {bksp}", + "{tab} \u056d \u057e \u0567 \u0580 \u0564 \u0565 \u0568 \u056b \u0578 \u0562 \u0579 \u057b '", + "\u0561 \u057d \u057f \u0586 \u056f \u0570 \u0573 \u0584 \u056c \u0569 \u0583 {enter}", + "{shift} ' \u0566 \u0581 \u0563 \u0582 \u057a \u0576 \u0574 \u0577 \u0572 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u055c 1 \u0541 \u0545 3 4 9 \u0587 ( ) \u0555 \u054c \u053a {bksp}", + "{tab} \u053d \u054e \u0537 \u0550 \u0534 \u0535 \u0538 \u053b \u0548 \u0532 \u0549 \u054b \u055e", + "\u0531 \u054d \u054f \u0556 \u053f \u0540 \u0543 \u0554 \u053c \u0539 \u0553 {enter}", + "{shift} \u055e \u0536 \u0551 \u0533 \u0552 \u054a \u0546 \u0544 \u0547 \u0542 / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Assamese.js b/app/Resources/public/assets/keyboard/layouts/ms-Assamese.js new file mode 100644 index 0000000000..a73e181338 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Assamese.js @@ -0,0 +1,35 @@ +/* Assamese - INSCRIPT Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinasa.html + */ +jQuery.keyboard.layouts['ms-Assamese-INSCRIPT'] = { + "name" : "ms-Assamese-INSCRIPT", + "lang" : ["as"], + "normal" : [ + "\u0965 \u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 - \u09c3 {bksp}", + "{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc {empty}", + "\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09f0 \u0995 \u09a4 \u099a \u099f {enter}", + "{shift} {empty} {empty} \u0982 \u09ae \u09a8 \u09f1 \u09b2 \u09b8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} ! @ \u09cd\u09f0 \u09f0\u09cd \u099c\u09cd\u099e \u09a4\u09cd\u09f0 \u0995\u09cd\u09b7 \u09b6\u09cd\u09f0 ( ) \u0983 \u098b {bksp}", + "{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e {empty}", + "\u0993 \u098f \u0985 \u0987 \u0989 \u09ab {empty} \u0996 \u09a5 \u099b \u09a0 {enter}", + "{shift} {empty} {empty} \u0981 \u09a3 {empty} {empty} {empty} \u09b6 \u09b7 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Azeri.js b/app/Resources/public/assets/keyboard/layouts/ms-Azeri.js new file mode 100644 index 0000000000..dda6e043b7 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Azeri.js @@ -0,0 +1,43 @@ +/* Azeri Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdaze.html + */ +jQuery.keyboard.layouts['ms-Azeri Cyrillic'] = { + "name" : "ms-Azeri Cyrillic", + "lang" : ["az"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0458 \u04af \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u04bb \u0437 \u0445 \u04b9 \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u049d {enter}", + "{shift} \\ \u04d9 \u0447 \u0441 \u043c \u0438 \u0442 \u0493 \u0431 \u04e9 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0408 \u04ae \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u04ba \u0417 \u0425 \u04b8 /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u049c {enter}", + "{shift} | \u04d8 \u0427 \u0421 \u041c \u0418 \u0422 \u0492 \u0411 \u04e8 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Azeri Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdazel.html + */ +jQuery.keyboard.layouts['ms-Azeri Latin'] = { + "name" : "ms-Azeri Latin", + "lang" : ["az"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q \u00fc e r t y u i o p \u00f6 \u011f \\", + "a s d f g h j k l \u0131 \u0259 {enter}", + "{shift} \\ z x c v b n m \u00e7 \u015f / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! \" \u2166 ; % : ? * ( ) _ + {bksp}", + "{tab} Q \u00dc E R T Y U \u0130 O P \u00d6 \u011e /", + "A S D F G H J K L I \u018f {enter}", + "{shift} / Z X C V B N M \u00c7 \u015e / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Bashkir.js b/app/Resources/public/assets/keyboard/layouts/ms-Bashkir.js new file mode 100644 index 0000000000..2457de5e32 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Bashkir.js @@ -0,0 +1,50 @@ +/* Bashkir Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbash.html + */ +jQuery.keyboard.layouts['ms-Bashkir'] = { + "name" : "ms-Bashkir", + "lang" : ["ba"], + "normal" : [ + "\u04d9 ! \u04e9 \u04a1 \u0493 \u04ab : \u0499 \u04bb ? \u2116 - \u04af {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \u04a3", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u04d8 \" \u04e8 \u04a0 \u0492 \u04aa ; \u0498 \u04ba ( ) % \u04ae {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a \u04a2", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bosnian (Cyrillic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbhc.html + */ +jQuery.keyboard.layouts['ms-Bosnian (Cyrillic)'] = { + "name" : "ms-Bosnian (Cyrillic)", + "lang" : ["bs"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} ^ {empty} \u00b0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} [ ] {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Belarusian.js b/app/Resources/public/assets/keyboard/layouts/ms-Belarusian.js new file mode 100644 index 0000000000..4d9342ae02 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Belarusian.js @@ -0,0 +1,21 @@ +/* Belarusian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdblr.html + */ +jQuery.keyboard.layouts['ms-Belarusian'] = { + "name" : "ms-Belarusian", + "lang" : ["be"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 ' \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0456 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 ' /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0406 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Belgian.js b/app/Resources/public/assets/keyboard/layouts/ms-Belgian.js new file mode 100644 index 0000000000..d8f169a02f --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Belgian.js @@ -0,0 +1,57 @@ +/* Belgian (Comma) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbene.html + */ +jQuery.keyboard.layouts['ms-Belgian (Comma)'] = { + "name" : "ms-Belgian (Comma)", + "lang" : ["nl", "fr", "de"], + "normal" : [ + "\u00b2 & \u00e9 \" ' ( \u00a7 \u00e8 ! \u00e7 \u00e0 ) - {bksp}", + "{tab} a z e r t y u i o p ^ $ \u00b5", + "q s d f g h j k l m \u00f9 {enter}", + "{shift} < w x c v b n , ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b3 1 2 3 4 5 6 7 8 9 0 \u00b0 _ {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 * \u00a3", + "Q S D F G H J K L M % {enter}", + "{shift} > W X C V B N ? . / / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} | @ # { [ ^ {empty} {empty} { } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Belgian French Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbe.html + */ +jQuery.keyboard.layouts['ms-Belgian French'] = { + "name" : "ms-Belgian French", + "lang" : ["nl-fr", "fr"], + "normal" : [ + "\u00b2 & \u00e9 \" ' ( \u00a7 \u00e8 ! \u00e7 \u00e0 ) - {bksp}", + "{tab} a z e r t y u i o p ^ $ \u00b5", + "q s d f g h j k l m \u00f9 {enter}", + "{shift} < w x c v b n , ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b3 1 2 3 4 5 6 7 8 9 0 \u00b0 _ {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 * \u00a3", + "Q S D F G H J K L M % {enter}", + "{shift} > W X C V B N ? . / / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} | @ # { [ ^ {empty} {empty} { } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Bengali.js b/app/Resources/public/assets/keyboard/layouts/ms-Bengali.js new file mode 100644 index 0000000000..95e62db6b8 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Bengali.js @@ -0,0 +1,57 @@ +/* Bengali Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinben.html + */ +jQuery.keyboard.layouts['ms-Bengali'] = { + "name" : "ms-Bengali", + "lang" : ["bn"], + "normal" : [ + "1 2 3 4 5 6 7 8 9 0 - \u09c3 {bksp}", + "{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc", + "\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09b0 \u0995 \u09a4 \u099a \u099f {enter}", + "{shift} \u0982 \u09ae \u09a8 \u09ac \u09b2 \u09b8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} {empty} \u09cd\u09b0 \u09b0\u09cd \u099c\u09cd\u09b0 \u09a4\u09cd\u09b7 \u0995\u09cd\u09b0 \u09b6\u09cd\u09b0 ( ) \u0983 \u098b {bksp}", + "{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e", + "\u0993 \u098f \u0985 \u0987 \u0989 \u09ab {empty} \u0996 \u09a5 \u099b \u09a0 {enter}", + "{shift} \u0981 \u09a3 {empty} {empty} {empty} \u09b6 \u09b7 { / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 {empty} \u09e2 {bksp}", + "{tab} \u09d7 {empty} {empty} \u09e3 {empty} {empty} {empty} {empty} {empty} {empty} \u09dc {empty}", + "\u09f4 \u09f6 \u09f8 \u09e2 {empty} {empty} \u09f0 {empty} {empty} {empty} {empty} {enter}", + "{shift} \u09fa {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift":[ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u09e0 {bksp}", + "{tab} {empty} {empty} {empty} \u09e1 {empty} {empty} {empty} {empty} {empty} {empty} \u09dd {empty}", + "\u09f5 \u09f7 \u09f9 \u098c {empty} {empty} \u09f1 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Bengali - INSCRIPT (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinbe1.html + */ +jQuery.keyboard.layouts['ms-Bengali - INSCRIPT (Legacy)'] = { + "name" : "ms-Bengali - INSCRIPT (Legacy)", + "lang" : ["bn"], + "normal" : [ + "\u09e7 \u09e8 \u09e9 \u09ea \u09eb \u09ec \u09ed \u09ee \u09ef \u09e6 - \u09c3 {bksp}", + "{tab} \u09cc \u09c8 \u09be \u09c0 \u09c2 \u09ac \u09b9 \u0997 \u09a6 \u099c \u09a1 \u09bc", + "\u09cb \u09c7 \u09cd \u09bf \u09c1 \u09aa \u09b0 \u0995 \u09a4 \u099a \u099f {enter}", + "{shift} \u0982 \u09ae \u09a8 \u09ac \u09b2 \u09b8 , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "! @ {empty} \u09b0\u09cd \u099c\u09cd\u099e \u09a4\u09cd\u09b0 \u0995\u09cd\u09b7 \u09b6\u09cd\u09b0 ( ) \u0983 \u098b {bksp}", + "{tab} \u0994 \u0990 \u0986 \u0988 \u098a \u09ad \u0999 \u0998 \u09a7 \u099d \u09a2 \u099e", + "\u0993 \u098f \u0985 \u0987 \u0989 \u09ab {empty} \u0996 \u09a5 \u099b \u09a0 {enter}", + "{shift} \u0981 \u09a3 {empty} {empty} {empty} \u09b6 \u09b7 {empty} / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Bulgarian.js b/app/Resources/public/assets/keyboard/layouts/ms-Bulgarian.js new file mode 100644 index 0000000000..159a236a67 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Bulgarian.js @@ -0,0 +1,65 @@ +/* Bulgarian (Phonetic Traditional) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbgph1.html + */ +jQuery.keyboard.layouts['ms-Bulgarian (Phonetic Traditional)'] = { + "name" : "ms-Bulgarian (Phonetic Traditional)", + "lang" : ["bg"], + "normal" : [ + "\u0447 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u044f \u0432 \u0435 \u0440 \u0442 \u044a \u0443 \u0438 \u043e \u043f \u0448 \u0449 \u044e", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0439 \u043a \u043b ; ' {enter}", + "{shift} \u044e \u0437 \u044c \u0446 \u0436 \u0431 \u043d \u043c , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0427 ! @ \u2116 $ % \u20ac \u00a7 * ( ) _ + {bksp}", + "{tab} \u042f \u0412 \u0415 \u0420 \u0422 \u042a \u0423 \u0418 \u041e \u041f \u0428 \u0429 \u042e", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0419 \u041a \u041b : \" {enter}", + "{shift} \u042e \u0417 \u045d \u0426 \u0416 \u0411 \u041d \u041c < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bulgarian (Phonetic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbgph.html + */ +jQuery.keyboard.layouts['ms-Bulgarian (Phonetic)'] = { + "name" : "ms-Bulgarian (Phonetic)", + "lang" : ["bg"], + "normal" : [ + "\u044e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0447 \u0448 \u0435 \u0440 \u0442 \u044a \u0443 \u0438 \u043e \u043f \u044f \u0449 \u044c", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0439 \u043a \u043b ; ' {enter}", + "{shift} \u045d \u0437 \u0436 \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u042e ! @ \u2116 $ % \u20ac \u00a7 * ( ) \u2013 + {bksp}", + "{tab} \u0427 \u0428 \u0415 \u0420 \u0422 \u042a \u0423 \u0418 \u041e \u041f \u042f \u0429 \u045d", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0419 \u041a \u041b : \" {enter}", + "{shift} \u040d \u0417 \u0416 \u0426 \u0412 \u0411 \u041d \u041c \u201e \u201c / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Bulgarian (Typewriter) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbu.html + */ +jQuery.keyboard.layouts['ms-Bulgarian (Typewriter)'] = { + "name" : "ms-Bulgarian (Typewriter)", + "lang" : ["bg"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - . {bksp}", + "{tab} , \u0443 \u0435 \u0438 \u0448 \u0449 \u043a \u0441 \u0434 \u0437 \u0446 ; (", + "\u044c \u044f \u0430 \u043e \u0436 \u0433 \u0442 \u043d \u0432 \u043c \u0447 {enter}", + "{shift} \\ \u044e \u0439 \u044a \u044d \u0444 \u0445 \u043f \u0440 \u043b / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! ? + \" % = : / _ \u2116 \u0406 V {bksp}", + "{tab} \u044b \u0423 \u0415 \u0418 \u0428 \u0429 \u041a \u0421 \u0414 \u0417 \u0426 \u00a7 )", + "\u042c \u042f \u0410 \u041e \u0416 \u0413 \u0422 \u041d \u0412 \u041c \u0427 {enter}", + "{shift} | \u042e \u0419 \u042a \u042d \u0424 \u0425 \u041f \u0420 \u041b / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Canadian.js b/app/Resources/public/assets/keyboard/layouts/ms-Canadian.js new file mode 100644 index 0000000000..774cb55063 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Canadian.js @@ -0,0 +1,93 @@ +/* Canadian French Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdca.html + */ +jQuery.keyboard.layouts['ms-Canadian French'] = { + "name" : "ms-Canadian French", + "lang" : ["fr-ca"], + "normal" : [ + "# 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p ^ \u00b8 <", + "a s d f g h j k l ; ` {enter}", + "{shift} \u00ab z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" / $ % ? & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ^ \u00a8 >", + "A S D F G H J K L : ` {enter}", + "{shift} \u00bb Z X C V B N M ' . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\\ \u00b1 @ \u00a3 \u00a2 \u00a4 \u00ac \u00a6 \u00b2 \u00b3 \u00bc \u00bd \u00be {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 \u00b6 [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ { {enter}", + "{shift} \u00b0 {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 \u00af \u00ad {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Canadian French (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfc.html + */ +jQuery.keyboard.layouts['ms-Canadian French (Legacy)'] = { + "name" : "ms-Canadian French (Legacy)", + "lang" : ["fr-ca"], + "normal" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p ^ \u00e7 \u00e0", + "a s d f g h j k l ; \u00e8 {enter}", + "{shift} \u00f9 z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" # $ % ? & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ^ \u00c7 \u00c0", + "A S D F G H J K L : \u00c8 {enter}", + "{shift} \u00d9 Z X C V B N M ' . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00ac \u00b9 @ \u00b3 \u00bc \u00bd \u00be { [ ] } | \u00b8 {bksp}", + "{tab} {empty} {empty} {empty} \u00b6 {empty} \u00a5 {empty} {empty} \u00f8 \u00fe \u00b0 ~ {empty}", + "\u00e6 \u00df \u00f0 \u00aa {empty} {empty} {empty} {empty} {empty} \u00b4 {empty} {enter}", + "{shift} \\ \u00ab \u00bb \u00a2 {empty} {empty} {empty} \u00b5 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00a1 \u00b2 \u00a3 \u00a4 {empty} {empty} {empty} {empty} \u00b1 {empty} \u00bf {empty} {bksp}", + "{tab} {empty} {empty} {empty} \u00ae {empty} {empty} {empty} {empty} \u00d8 \u00de {empty} \u00a8 {empty}", + "\u00c6 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {empty} {enter}", + "{shift} | {empty} {empty} \u00a9 {empty} {empty} {empty} \u00ba {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Canadian Multilingual Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcan.html + */ +jQuery.keyboard.layouts['ms-Canadian Multilingual Standard'] = { + "name" : "ms-Canadian Multilingual Standard", + "lang" : ["en-ca"], + "normal" : [ + "/ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p ^ \u00E7 {enter}", + "a s d f g h j k l ; \u00E8 \u00E0 ", + "{shift} \u00F9 z x c v b n m , . \u00E9 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\\ ! @ # $ % ? & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u00A8 \u00C7 {enter}", + "A S D F G H J K L : \u00C8 \u00C0 ", + "{shift} \u00D9 Z X C V B N M ' \" \u00C9 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "| {empty} {empty} {empty} {empty} {empty} {empty} { } [ ] {empty} \u00AC {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` ~ {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B0 {empty} {empty} ", + "{shift} {empty} \u00AB \u00BB {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Chinese.js b/app/Resources/public/assets/keyboard/layouts/ms-Chinese.js new file mode 100644 index 0000000000..6a389d43ba --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Chinese.js @@ -0,0 +1,57 @@ +/* Chinese Bopomofo IME Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdTCBO.html + */ +jQuery.keyboard.layouts['ms-Chinese Bopomofo IME'] = { + "name" : "ms-Chinese Bopomofo IME", + "lang" : ["zh"], + "normal" : [ + "\u20AC \u3105 \u3109 \u02C7 \u02CB \u3113 \u02CA \u02D9 \u311A \u311E \u3122 \u3126 = {bksp}", + "{tab} \u3106 \u310A \u310D \u3110 \u3114 \u3117 \u3127 \u311B \u311F \u3123 [ ] \\", + "\u3107 \u310B \u310E \u3111 \u3115 \u3118 \u3128 \u311C \u3120 \u3124 ' {enter}", + "\u3108 \u310C \u310F \u3112 \u3116 \u3119 \u3129 \u311D \u3121 \u3125", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Chinese ChaJei IME Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdTCCJ.html + */ +jQuery.keyboard.layouts['ms-Chinese ChaJei IME'] = { + "name" : "ms-Chinese ChaJei IME", + "lang" : ["zh"], + "normal" : [ + "\u20AC 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u624B \u7530 \u6C34 \u53E3 \u5EFF \u535C \u5C71 \u6208 \u4EBA \u5FC3 [ ] \\", + "\u65E5 \u5C38 \u6728 \u706B \u571F \u7AF9 \u5341 \u5927 \u4E2D ; ' {enter}", + "\uFF3A \u96E3 \u91D1 \u5973 \u6708 \u5F13 \u4E00 , . /", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Czech.js b/app/Resources/public/assets/keyboard/layouts/ms-Czech.js new file mode 100644 index 0000000000..e6e0bc5cac --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Czech.js @@ -0,0 +1,100 @@ +/* Czech Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcz.html + */ +jQuery.keyboard.layouts['ms-Czech'] = { + "name" : "ms-Czech", + "lang" : ["cs"], + "normal" : [ + "; + \u011b \u0161 \u010d \u0159 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fa ) {empty}", + "a s d f g h j k l \u016f \u00a7 {enter}", + "{shift} \\ y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Z U I O P / ( '", + "A S D F G H J K L \" ! {enter}", + "{shift} | Y X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 \u00a4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} {empty} {empty} # & @ { } {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Czech (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcz1.html + */ +jQuery.keyboard.layouts['ms-Czech (QWERTY)'] = { + "name" : "ms-Czech (QWERTY)", + "lang" : ["cs"], + "normal" : [ + "; + \u011b \u0161 \u010d \u0159 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00fa ) {empty}", + "a s d f g h j k l \u016f \u00a7 {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Y U I O P / ( '", + "A S D F G H J K L \" ! {enter}", + "{shift} | Z X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ! @ # $ % ^ & * ( ) - = {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; \u00a4 {enter}", + "{shift} \u00df {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : ^ {enter}", + "{shift} \u02dd {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00d7 \u00f7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Czech Programmers Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcz2.html + */ +jQuery.keyboard.layouts['ms-Czech Programmers'] = { + "name" : "ms-Czech Programmers", + "lang" : ["cs"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "; + \u011b \u0161 \u010d \u0159 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00fa ) {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u016f \u00a7 {enter}", + "{shift} \u00df {empty} {empty} {empty} {empty} {empty} {empty} {empty} ? : {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00b0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} % \u02c7 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} / ( {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \" ! {enter}", + "{shift} \u02dd {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00d7 \u00f7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Danish.js b/app/Resources/public/assets/keyboard/layouts/ms-Danish.js new file mode 100644 index 0000000000..9d270df0cd --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Danish.js @@ -0,0 +1,28 @@ +/* Danish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdda.html + */ +jQuery.keyboard.layouts['ms-Danish'] = { + "name" : "ms-Danish", + "lang" : ["da"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00E6 \u00F8 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00C6 \u00D8 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} | {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Devanagari.js b/app/Resources/public/assets/keyboard/layouts/ms-Devanagari.js new file mode 100644 index 0000000000..7c1341bab6 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Devanagari.js @@ -0,0 +1,35 @@ +/* Devanagari - INSCRIPT Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdindev.html + */ +jQuery.keyboard.layouts["ms-Devanagari - INSCRIPT"] = { + name: "ms-Devanagari - INSCRIPT", + lang: ["hi", "ne", "mr", "kok", "bodo", "mai"], + "normal": [ + "\u094a 1 2 3 4 5 6 7 8 9 0 - \u0943 {bksp}", + "{tab} \u094c \u0948 \u093e \u0940 \u0942 \u092c \u0939 \u0917 \u0926 \u091c \u0921 \u093c \u0949", + "\u094b \u0947 \u094d \u093f \u0941 \u092a \u0930 \u0915 \u0924 \u091a \u091f {enter}", + "{shift} \u0949 \u0946 \u0902 \u092e \u0928 \u0935 \u0932 \u0938 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift: [ + "\u0912 \u090d \u0945 \u094d\u0930 \u0930\u094d \u091c\u094d\u091e \u0924\u094d\u0930 \u0915\u094d\u0937 \u0936\u094d\u0930 ( ) \u0903 \u090b {bksp}", + "{tab} \u0914 \u0910 \u0906 \u0908 \u090a \u092d \u0919 \u0918 \u0927 \u091d \u0922 \u091e \u0911", + "\u0913 \u090f \u0905 \u0907 \u0909 \u092b \u0931 \u0916 \u0925 \u091b \u0920 {enter}", + "{shift} \u0911 \u090e \u0901 \u0923 \u0929 \u0934 \u0933 \u0936 \u0937 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt: [ + "{empty} \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 {empty} \u0944 {bksp}", + "{tab} {empty} {empty} {empty} \u0963 {empty} {empty} {empty} \u095a {empty} \u095b \u095c {empty} {empty}", + "{empty} {empty} {empty} \u0962 {empty} {empty} {empty} \u0958 {empty} \u0952 {empty} {enter}", + "{shift} {empty} \u0953 {empty} \u0954 {empty} {empty} {empty} {empty} \u0970 \u0965 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift": [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0960 {bksp}", + "{tab} {empty} {empty} {empty} \u0961 {empty} {empty} {empty} {empty} {empty} {empty} \u095d {empty} {empty}", + "{empty} {empty} {empty} \u090c {empty} \u095e {empty} \u0959 {empty} {empty} \u0951 {enter}", + "{shift} {empty} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} {empty} \u093d {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Divehi.js b/app/Resources/public/assets/keyboard/layouts/ms-Divehi.js new file mode 100644 index 0000000000..155509746d --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Divehi.js @@ -0,0 +1,57 @@ +/* Divehi Phonetic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbddiv1.html + */ +jQuery.keyboard.layouts['ms-Divehi Phonetic'] = { + "name" : "ms-Divehi Phonetic", + "lang" : ["dv"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u07b0 \u0787 \u07ac \u0783 \u078c \u0794 \u07aa \u07a8 \u07ae \u0795 ] [ \\", + "\u07a6 \u0790 \u078b \u078a \u078e \u0780 \u0796 \u0786 \u078d \u061b ' {enter}", + "{shift} \\ \u0792 \u00d7 \u0797 \u0788 \u0784 \u0782 \u0789 \u060c . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u07a4 \u07a2 \u07ad \u079c \u0793 \u07a0 \u07ab \u07a9 \u07af \u00f7 } { |", + "\u07a7 \u0781 \u0791 \ufdf2 \u07a3 \u0799 \u079b \u079a \u0785 : \" {enter}", + "{shift} | \u07a1 \u0798 \u079d \u07a5 \u079e \u078f \u079f > < / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {ZWJ} {ZWNJ} {LRM} {RLM} , {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Divehi Typewriter Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbddiv2.html + */ +jQuery.keyboard.layouts['ms-Divehi Typewriter'] = { + "name" : "ms-Divehi Typewriter", + "lang" : ["dv"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u07ab \u07ae \u07a7 \u07a9 \u07ad \u078e \u0783 \u0789 \u078c \u0780 \u078d [ ]", + "\u07a8 \u07aa \u07b0 \u07a6 \u07ac \u0788 \u0787 \u0782 \u0786 \u078a \ufdf2 {enter}", + "{shift} \\ \u0792 \u0791 \u0790 \u0794 \u0785 \u078b \u0784 \u0781 \u0793 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u00d7 \u2019 \u201c / : \u07a4 \u079c \u07a3 \u07a0 \u0799 \u00f7 { }", + "< > . \u060c \" \u07a5 \u07a2 \u0798 \u079a \u07a1 \u061b {enter}", + "{shift} | \u0796 \u0795 \u078f \u0797 \u079f \u079b \u079d \\ \u079e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} , {empty} {empty} {empty} {empty} {empty} {empty} ; {enter}", + "{shift} {empty} {empty} {empty} {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Dutch.js b/app/Resources/public/assets/keyboard/layouts/ms-Dutch.js new file mode 100644 index 0000000000..353a233720 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Dutch.js @@ -0,0 +1,28 @@ +/* Dutch Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdne.html + */ +jQuery.keyboard.layouts['ms-Dutch'] = { + "name" : "ms-Dutch", + "lang" : ["nl"], + "normal" : [ + "@ 1 2 3 4 5 6 7 8 9 0 / \u00B0 {bksp}", + "{tab} q w e r t y u i o p \u00A8 * {enter}", + "a s d f g h j k l + \u00B4 < ", + "{shift} ] z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # $ % & _ ( ) ' ? ~ {bksp}", + "{tab} Q W E R T Y U I O P ^ | {enter}", + "A S D F G H J K L \u00B1 ` > ", + "{shift} [ Z X C V B N M ; : = {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00AC \u00B9 \u00B2 \u00B3 \u00BC \u00BD \u00BE \u00A3 { } {empty} \\ \u00B8 {bksp}", + "{tab} {empty} {empty} \u20AC \u00B6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{empty} \u00DF {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} \u00A6 \u00AB \u00BB \u00A2 {empty} {empty} {empty} \u00B5 {empty} \u00B7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Estonian.js b/app/Resources/public/assets/keyboard/layouts/ms-Estonian.js new file mode 100644 index 0000000000..ed2c78b083 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Estonian.js @@ -0,0 +1,35 @@ +/* Estonian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdest.html + */ +jQuery.keyboard.layouts['ms-Estonian'] = { + "name" : "ms-Estonian", + "lang" : ["et"], + "normal" : [ + "\u02c7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00fc \u00f5 '", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00dc \u00d5 *", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 \u00bd", + "{empty} \u0161 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{shift} | \u017e {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} @ \u00a3 $ {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 \u00bd", + "{empty} \u0160 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {enter}", + "{shift} | \u017d {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Faeroese.js b/app/Resources/public/assets/keyboard/layouts/ms-Faeroese.js new file mode 100644 index 0000000000..19ab4c10fa --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Faeroese.js @@ -0,0 +1,28 @@ +/* Faeroese Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfo.html + */ +jQuery.keyboard.layouts['ms-Faroese'] = { + "name" : "ms-Faroese", + "lang" : ["fo"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00F0 {enter}", + "a s d f g h j k l \u00E6 \u00F8 ' ", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 \u00D0 {enter}", + "A S D F G H J K L \u00C6 \u00D8 * ", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} | {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A8 ~ {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {empty} ", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Finnish.js b/app/Resources/public/assets/keyboard/layouts/ms-Finnish.js new file mode 100644 index 0000000000..a767dfbaa0 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Finnish.js @@ -0,0 +1,28 @@ +/* Finnish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfi.html + */ +jQuery.keyboard.layouts['ms-Finnish'] = { + "name" : "ms-Finnish", + "lang" : ["fi"], + "normal" : [ + "\u00A7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8 {enter}", + "a s d f g h j k l \u00F6 \u00E4 ' ", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^ {enter}", + "A S D F G H J K L \u00D6 \u00C4 * ", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {enter}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-French.js b/app/Resources/public/assets/keyboard/layouts/ms-French.js new file mode 100644 index 0000000000..238868eb47 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-French.js @@ -0,0 +1,28 @@ +/* French Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfr.html + */ +jQuery.keyboard.layouts['ms-French'] = { + "name" : "ms-French", + "lang" : ["fr"], + "normal" : [ + "\u00B2 & \u00E9 \" ' ( - \u00E8 _ \u00E7 \u00E0 ) = {bksp}", + "{tab} a z e r t y u i o p ^ $", + "q s d f g h j k l m \u00F9 * {enter}", + "{shift} < w x c v b n , ; : ! {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 \u00B0 + {bksp}", + "{tab} A Z E R T Y U I O P \u00A8 \u00A3", + "Q S D F G H J K L M % \u00B5 {enter}", + "{shift} > W X C V B N ? . / \u00A7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} ~ # { [ | ` \\ ^ @ ] } {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A4", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Gaelic.js b/app/Resources/public/assets/keyboard/layouts/ms-Gaelic.js new file mode 100644 index 0000000000..82617049bf --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Gaelic.js @@ -0,0 +1,35 @@ +/* Gaelic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgae.html + */ +jQuery.keyboard.layouts['ms-Gaelic'] = { + "name" : "ms-Gaelic", + "lang" : ["gd"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' # {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "` ! \" \u00A3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : @ ~ {enter}", + "{shift} | Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00A6 {empty} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00E9 {empty} {empty} \u00FD \u00FA \u00ED \u00F3 {empty} {empty} {empty}", + "\u00E1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ' {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00C9 {empty} {empty} \u00DD \u00DA \u00CD \u00D3 {empty} {empty} {empty}", + "\u00C1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Georgian.js b/app/Resources/public/assets/keyboard/layouts/ms-Georgian.js new file mode 100644 index 0000000000..15f374d7de --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Georgian.js @@ -0,0 +1,93 @@ +/* Georgian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgeo.html + */ +jQuery.keyboard.layouts['ms-Georgian'] = { + "name" : "ms-Georgian", + "lang" : ["ka"], + "normal" : [ + "\u201e ! ? \u2116 \u00a7 % : . ; , / \u2013 = {bksp}", + "{tab} \u10e6 \u10ef \u10e3 \u10d9 \u10d4 \u10dc \u10d2 \u10e8 \u10ec \u10d6 \u10ee \u10ea (", + "\u10e4 \u10eb \u10d5 \u10d7 \u10d0 \u10de \u10e0 \u10dd \u10da \u10d3 \u10df {enter}", + "{shift} ( \u10ed \u10e9 \u10e7 \u10e1 \u10db \u10d8 \u10e2 \u10e5 \u10d1 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u201c 1 2 3 4 5 6 7 8 9 0 - + {bksp}", + "{tab} \u10e6 \u10ef \u10e3 \u10d9 \u10d4 \u10dc \u10d2 \u10e8 \u10ec \u10d6 \u10ee \u10ea )", + "\u10e4 \u10eb \u10d5 \u10d7 \u10d0 \u10de \u10e0 \u10dd \u10da \u10d3 \u10df {enter}", + "{shift} ) \u10ed \u10e9 \u10e7 \u10e1 \u10db \u10d8 \u10e2 \u10e5 \u10d1 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} \u10f1 {empty} {empty} {empty} {empty} {empty} \u10f4 {empty} {empty}", + "\u10f6 {empty} \u10f3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} \u10f2 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Georgian (Ergonomic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgeoer.html + */ +jQuery.keyboard.layouts['ms-Georgian (Ergonomic)'] = { + "name" : "ms-Georgian (Ergonomic)", + "lang" : ["ka"], + "normal" : [ + "\u201e ! \u2116 , ; % : ? . ( ) - \u201c {bksp}", + "{tab} \u10e9 \u10de \u10e3 \u10eb \u10ed \u10e2 \u10d7 \u10dc \u10d5 \u10e8 \u10d9 \u10e5 /", + "\u10ee \u10d8 \u10d0 \u10d4 \u10dd \u10d3 \u10db \u10e1 \u10e0 \u10d1 \u10d2 {enter}", + "{shift} \\ \u10ef \u10f0 \u10e7 \u10e6 \u10df \u10d6 \u10ea \u10da \u10e4 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "' 1 2 3 4 5 6 7 8 9 0 + = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a7", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} / {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ! @ # $ \u20ac ^ & * ( ) \u2014 = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u10fc \u10f3 {empty} [ ] \\", + "\u10f4 \u10f2 \u10fa \u10f1 {empty} {empty} {empty} {empty} {empty} {empty} \u10f9 {enter}", + "{shift} {empty} {empty} \u10f5 \u10f8 \u10f7 {empty} {empty} {empty} {empty} \u10f6 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} \u00a7 {empty} {empty} {empty} {empty} \u00b0 \u00ab \u00bb _ {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} I {empty} {empty} { } |", + "{empty} {empty} D {empty} {empty} {empty} {empty} {empty} L {empty} \" {enter}", + "{shift} {empty} {empty} X C V {empty} {empty} M < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Georgian (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgeoqw.html + */ +jQuery.keyboard.layouts['ms-Georgian (QWERTY)'] = { + "name" : "ms-Georgian (QWERTY)", + "lang" : ["ka"], + "normal" : [ + "\u201e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u10e5 \u10ec \u10d4 \u10e0 \u10e2 \u10e7 \u10e3 \u10d8 \u10dd \u10de [ ] ~", + "\u10d0 \u10e1 \u10d3 \u10e4 \u10d2 \u10f0 \u10ef \u10d9 \u10da ; ' {enter}", + "{shift} \\ \u10d6 \u10ee \u10ea \u10d5 \u10d1 \u10dc \u10db , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u201c ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} {empty} \u10ed {empty} \u10e6 \u10d7 {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} \u10e8 {empty} {empty} {empty} {empty} \u10df {empty} {empty} : \" {enter}", + "{shift} {empty} \u10eb {empty} \u10e9 {empty} {empty} N {empty} < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u201e \u201c {empty} \u20ac {empty} {empty} \u00b0 {empty} {empty} \u2014 \u2013 {bksp}", + "{tab} {empty} {empty} \u10f1 \u00ae {empty} \u10f8 {empty} \u10f2 {empty} {empty} {empty} {empty} {empty}", + "\u10fa {empty} {empty} \u10f6 \u10f9 \u10f5 \u10f7 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} \u10f4 \u00a9 \u10f3 {empty} \u10fc {empty} \u00ab \u00bb {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-German.js b/app/Resources/public/assets/keyboard/layouts/ms-German.js new file mode 100644 index 0000000000..9e9c846a6d --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-German.js @@ -0,0 +1,57 @@ +/* German Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgr.html + */ +jQuery.keyboard.layouts['ms-German'] = { + "name" : "ms-German", + "lang" : ["de"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00DF \u00B4 {bksp}", + "{tab} q w e r t z u i o p \u00FC +", + "a s d f g h j k l \u00F6 \u00E4 # {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 ! \" \u00A7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00DC *", + "A S D F G H J K L \u00D6 \u00C4 ' {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 {empty} {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* German (IBM) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgr1.html + */ +jQuery.keyboard.layouts['ms-German (IBM)'] = { + "name" : "ms-German (IBM)", + "lang" : ["de"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00DF \u00B4 {bksp}", + "{tab} q w e r t z u i o p \u00FC +", + "a s d f g h j k l \u00F6 \u00E4 # {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 ! \" \u00A7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00DC *", + "A S D F G H J K L \u00D6 \u00C4 ' {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 {empty} {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Greek.js b/app/Resources/public/assets/keyboard/layouts/ms-Greek.js new file mode 100644 index 0000000000..560baec131 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Greek.js @@ -0,0 +1,216 @@ +/* Greek Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhe.html + */ +jQuery.keyboard.layouts['ms-Greek'] = { + "name" : "ms-Greek", + "lang" : ["el"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} ; \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 [ ]", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 ' \\ {enter}", + "{shift} < \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} : \u0385 \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 { }", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \" | {enter}", + "{shift} > \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} {empty} {empty} \u20AC \u00AE {empty} \u00A5 {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 {empty} \u00AC {enter}", + "{shift} {empty} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (220) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhe220.html + */ +jQuery.keyboard.layouts['ms-Greek (220)'] = { + "name" : "ms-Greek (220)", + "lang" : ["el"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 ' ] {bksp}", + "{tab} \u037E \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 + }", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 \u00A8 # {enter}", + "{shift} < \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B1 ! \" \u00A3 $ % & / ( ) = ? [ {bksp}", + "{tab} : ~ \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 * {", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \u0385 @ {enter}", + "{shift} > \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} {empty} {empty} \u20AC \u00AE {empty} \u00A5 {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 \u0385 \u00AC {enter}", + "{shift} {empty} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (220) Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhela2.html + */ +jQuery.keyboard.layouts['ms-Greek (220) Latin'] = { + "name" : "ms-Greek (220) Latin", + "lang" : ["el"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' ] {bksp}", + "{tab} q w e r t y u i o p + }", + "a s d f g h j k l \u0384 \u00A8 # {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" # $ % & / ( ) = ? [ {bksp}", + "{tab} Q W E R T Y U I O P * {", + "A S D F G H J K L \u00A8 \u0385 @ {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00B2 \u00B3 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 \u0385 \u00AC {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (319) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhe319.html + */ +jQuery.keyboard.layouts['ms-Greek (319)'] = { + "name" : "ms-Greek (319)", + "lang" : ["el"], + "normal" : [ + "\u00BD 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u00B7 \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 [ ]", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 \u2019 \u00B2 {enter}", + "{shift} \u00A7 \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B1 ! \" \u00A3 $ % \u00AC / ( ) = \u00B0 * {bksp}", + "{tab} \u2015 \u00A6 \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 \u00AB \u00BB", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \u2018 \u00B3 {enter}", + "{shift} \u00A9 \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek (319) Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhela3.html + */ +jQuery.keyboard.layouts['ms-Greek (319) Latin'] = { + "name" : "ms-Greek (319) Latin", + "lang" : ["el"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l \u00B4 ^ ` {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L \u00A8 ~ @ {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgkl.html + */ +jQuery.keyboard.layouts['ms-Greek Latin'] = { + "name" : "ms-Greek Latin", + "lang" : ["el"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' \\ {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : \" | {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00A1 \u00B2 \u00B3 \u00A4 \u20AC \u00BC \u00BD \u00BE \u2018 \u2019 \u00A5 \u00D7 {bksp}", + "{tab} \u00E4 \u00E5 \u00E9 \u00AE \u00FE \u00FC \u00FA \u00ED \u00F3 \u00F6 \u00AB \u00BB", + "\u00E1 \u00DF \u00F0 {empty} {empty} {empty} {empty} {empty} \u00F8 \u00B6 \u00B4 \u00AC {enter}", + "{shift} \u00E6 {empty} \u00A9 {empty} {empty} \u00F1 \u00B5 \u00E7 {empty} \u00BF {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00B9 {empty} {empty} \u00A3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 {bksp}", + "{tab} \u00C4 \u00C5 \u00C9 {empty} \u00DE \u00DC \u00DA \u00CD \u00D3 \u00D6 {empty} {empty}", + "\u00C1 \u00A7 \u00D0 {empty} {empty} {empty} {empty} {empty} \u00D8 \u00B0 \u00A8 \u00A6 {enter}", + "{shift} \u00C6 {empty} \u00A2 {empty} {empty} \u00D1 {empty} \u00C7 {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Greek Polytonic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhept.html + */ +jQuery.keyboard.layouts['ms-Greek Polytonic'] = { + "name" : "ms-Greek Polytonic", + "lang" : ["el"], + "normal" : [ + "~ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} ; \u03C2 \u03B5 \u03C1 \u03C4 \u03C5 \u03B8 \u03B9 \u03BF \u03C0 [ ]", + "\u03B1 \u03C3 \u03B4 \u03C6 \u03B3 \u03B7 \u03BE \u03BA \u03BB \u0384 ' \\ {enter}", + "{shift} \u03B6 \u03C7 \u03C8 \u03C9 \u03B2 \u03BD \u03BC , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "` ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} : \u0385 \u0395 \u03A1 \u03A4 \u03A5 \u0398 \u0399 \u039F \u03A0 { }", + "\u0391 \u03A3 \u0394 \u03A6 \u0393 \u0397 \u039E \u039A \u039B \u00A8 \" | {enter}", + "{shift} \u0396 \u03A7 \u03A8 \u03A9 \u0392 \u039D \u039C < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u1FC1 \u03DA \u03DE \u03E0 \u00A3 \u00A7 \u00B6 {empty} \u00A4 \u00A6 \u00B0 \u00B1 \u00BD {bksp}", + "{tab} \u1FFD {empty} \u20AC \u00AE {empty} \u00A5 {empty} {empty} {empty} {empty} \u00AB \u00BB", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0385 \u1FBF \u00AC {enter}", + "{shift} {empty} {empty} \u00A9 {empty} {empty} {empty} {empty} {empty} {empty} \u1FBE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} \u00B2 \u00B3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u1FDF {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0387", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u1FFE \u1FDD {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u1FDE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Greenlandic.js b/app/Resources/public/assets/keyboard/layouts/ms-Greenlandic.js new file mode 100644 index 0000000000..34f446a3bc --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Greenlandic.js @@ -0,0 +1,35 @@ +/* Greenlandic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdgrlnd.html + */ +jQuery.keyboard.layouts['ms-Greenlandic'] = { + "name" : "ms-Greenlandic", + "lang" : ["kl"], + "normal" : [ + "\u00bd 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00e6 \u00f8 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00c6 \u00d8 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} | {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} \u00fe {empty} ~ {empty}", + "{empty} \u00df \u00f0 {empty} {empty} {empty} {empty} \u0138 {empty} {empty} {empty} {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00de {empty} {empty} {empty}", + "{empty} {empty} \u00d0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Gujarati.js b/app/Resources/public/assets/keyboard/layouts/ms-Gujarati.js new file mode 100644 index 0000000000..aa7c450dae --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Gujarati.js @@ -0,0 +1,65 @@ +/* Gujarati Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinguj.html + */ +jQuery.keyboard.layouts['ms-Gujarati'] = { + "name" : "ms-Gujarati", + "lang" : ["gu"], + "normal" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 - \u0ac3 {bksp}", + "{tab} \u0acc \u0ac8 \u0abe \u0ac0 \u0ac2 \u0aac \u0ab9 \u0a97 \u0aa6 \u0a9c \u0aa1 \u0abc \u0ac9", + "\u0acb \u0ac7 \u0acd \u0abf \u0ac1 \u0aaa \u0ab0 \u0a95 \u0aa4 \u0a9a \u0a9f {enter}", + "{shift} \u0a82 \u0aae \u0aa8 \u0ab5 \u0ab2 \u0ab8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} \u0a8d \u0ac5 \u0acd\u0ab0 \u0ab0\u0acd \u0a9c\u0acd\u0a9e \u0aa4\u0acd\u0ab0 \u0a95\u0acd\u0ab7 \u0ab6\u0acd\u0ab0 ( ) \u0a83 \u0a8b {bksp}", + "{tab} \u0a94 \u0a90 \u0a86 \u0a88 \u0a8a \u0aad \u0a99 \u0a98 \u0aa7 \u0a9d \u0aa2 \u0a9e \u0a91", + "\u0a93 \u0a8f \u0a85 \u0a87 \u0a89 \u0aab {empty} \u0a96 \u0aa5 \u0a9b \u0aa0 {enter}", + "{shift} \u0a81 \u0aa3 {empty} {empty} \u0ab3 \u0ab6 \u0ab7 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0ae7 \u0ae8 \u0ae9 \u0aea \u0aeb \u0aec \u0aed \u0aee \u0aef \u0ae6 {empty} \u0ac4 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0965 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0ae0 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \u0ad0 {empty} {empty} {empty} {empty} {empty} {empty} \u0abd {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +// Keyboard Language +// please update this section to match this language and email me with corrections! +// gu = ISO 639-1 code for Gujarati +// *********************** +jQuery.keyboard.language.gu = { + display : { + 'a' : '\u2714:Accept (Shift+Enter)', // check mark - same action as accept + 'accept' : 'Accept:Accept (Shift+Enter)', + 'alt' : 'AltGr:Alternate Graphemes', + 'b' : '\u2190:Backspace', // Left arrow (same as ←) + 'bksp' : 'Bksp:Backspace', + 'c' : '\u2716:Cancel (Esc)', // big X, close - same action as cancel + 'cancel' : 'Cancel:Cancel (Esc)', + 'clear' : 'C:Clear', // clear num pad + 'combo' : '\u00f6:Toggle Combo Keys', + 'dec' : '.:Decimal', // decimal point for num pad (optional), change '.' to ',' for European format + 'e' : '\u21b5:Enter', // down, then left arrow - enter symbol + 'enter' : 'Enter:Enter', + 'lock' : '\u21ea Lock:Caps Lock', // caps lock + 's' : '\u21e7:Shift', // thick hollow up arrow + 'shift' : 'Shift:Shift', + 'sign' : '\u00b1:Change Sign', // +/- sign for num pad + 'space' : ' :Space', + 't' : '\u21e5:Tab', // right arrow to bar (used since this virtual keyboard works with one directional tabs) + 'tab' : '\u21e5 Tab:Tab' // \u21b9 is the true tab symbol (left & right arrows) + }, + // Message added to the key title while hovering, if the mousewheel plugin exists + wheelMessage : 'Use mousewheel to see other keys', +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Hausa.js b/app/Resources/public/assets/keyboard/layouts/ms-Hausa.js new file mode 100644 index 0000000000..0e5a894023 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Hausa.js @@ -0,0 +1,35 @@ +/* Hausa Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhau.html + */ +jQuery.keyboard.layouts['ms-Hausa'] = { + "name" : "ms-Hausa", + "lang" : ["ha"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} \u2018 \u2019 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} \u01b4 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} \u0257 {empty} {empty} {empty} {empty} \u0199 {empty} \u00b6 \u2019 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} \u0253 {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} \u01b3 {empty} {empty} {empty} {empty} {empty} {empty} \u00a6", + "{empty} {empty} \u018a {empty} {empty} {empty} {empty} \u0198 {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} \u0181 {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Hebrew.js b/app/Resources/public/assets/keyboard/layouts/ms-Hebrew.js new file mode 100644 index 0000000000..83be80c22b --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Hebrew.js @@ -0,0 +1,28 @@ +/* Hebrew Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdheb.html + */ +jQuery.keyboard.layouts['ms-Hebrew'] = { + "name" : "ms-Hebrew", + "lang" : ["he"], + "normal" : [ + "; 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} / ' \u05e7 \u05e8 \u05d0 \u05d8 \u05d5 \u05df \u05dd \u05e4 ] [ \\", + "\u05e9 \u05d3 \u05d2 \u05db \u05e2 \u05d9 \u05d7 \u05dc \u05da \u05e3 , {enter}", + "{shift} \\ \u05d6 \u05e1 \u05d1 \u05d4 \u05e0 \u05de \u05e6 \u05ea \u05e5 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} Q W E R T Y U I O P } { |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M > < / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} \u20aa {empty} {empty} {empty} {empty} {empty} {empty} \u05bf {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} \u05f0 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} \u05f2 \u05f1 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Hindi.js b/app/Resources/public/assets/keyboard/layouts/ms-Hindi.js new file mode 100644 index 0000000000..1052f12abd --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Hindi.js @@ -0,0 +1,35 @@ +/* Hindi Traditional Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinhin.html + */ +jQuery.keyboard.layouts['ms-Hindi Traditional'] = { + "name" : "ms-Hindi Traditional", + "lang" : ["hi"], + "normal" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 - \u0943 {bksp}", + "{tab} \u094c \u0948 \u093e \u0940 \u0942 \u092c \u0939 \u0917 \u0926 \u091c \u0921 \u093c \u0949", + "\u094b \u0947 \u094d \u093f \u0941 \u092a \u0930 \u0915 \u0924 \u091a \u091f {enter}", + "{shift} \u0949 \u0902 \u092e \u0928 \u0935 \u0932 \u0938 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} \u090d \u0945 \u094d\u0930 \u0930\u094d \u091c\u094d\u091e \u0924\u094d\u0930 \u0915\u094d\u0937 \u0936\u094d\u0930 ( ) \u0903 \u090b {bksp}", + "{tab} \u0914 \u0910 \u0906 \u0908 \u090a \u092d \u0919 \u0918 \u0927 \u091d \u0922 \u091e \u0911", + "\u0913 \u090f \u0905 \u0907 \u0909 \u092b \u0931 \u0916 \u0925 \u091b \u0920 {enter}", + "{shift} \u0911 \u0901 \u0923 {empty} {empty} \u0933 \u0936 \u0937 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 - = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; ' {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} , . {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{shift} {empty} \u0950 {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Hungarian.js b/app/Resources/public/assets/keyboard/layouts/ms-Hungarian.js new file mode 100644 index 0000000000..93d04885b4 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Hungarian.js @@ -0,0 +1,57 @@ +/* Hungarian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhu.html + */ +jQuery.keyboard.layouts['ms-Hungarian'] = { + "name" : "ms-Hungarian", + "lang" : ["hu"], + "normal" : [ + "0 1 2 3 4 5 6 7 8 9 \u00F6 \u00FC \u00F3 {bksp}", + "{tab} q w e r t z u i o p \u0151 \u00FA", + "a s d f g h j k l \u00E9 \u00E1 \u0171 {enter}", + "{shift} \u00ED y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ' \" + ! % / = ( ) \u00D6 \u00DC \u00D3 {bksp}", + "{tab} Q W E R T Z U I O P \u0150 \u00DA", + "A S D F G H J K L \u00C9 \u00C1 \u0170 {enter}", + "{shift} \u00CD Y X C V B N M ? : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD \u00A8 \u00B8 {bksp}", + "{tab} \\ | \u00C4 {empty} {empty} {empty} \u20AC \u00CD {empty} {empty} \u00F7 \u00D7", + "\u00E4 \u0111 \u0110 [ ] {empty} \u00ED \u0142 \u0141 $ \u00DF \u00A4 {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Hungarian 101-key Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdhu1.html + */ +jQuery.keyboard.layouts['ms-Hungarian 101-key'] = { + "name" : "ms-Hungarian 101-key", + "lang" : ["hu"], + "normal" : [ + "\u00ED 1 2 3 4 5 6 7 8 9 \u00F6 \u00FC \u00F3 {bksp}", + "{tab} q w e r t y u i o p \u0151 \u00FA", + "a s d f g h j k l \u00E9 \u00E1 \u0171 {enter}", + "{shift} \u00ED z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00CD ' \" + ! % / = ( ) \u00D6 \u00DC \u00D3 {bksp}", + "{tab} Q W E R T Y U I O P \u0150 \u00DA", + "A S D F G H J K L \u00C9 \u00C1 \u0170 {enter}", + "{shift} \u00CD Z X C V B N M ? : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "0 ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u02D9 \u00B4 \u02DD {empty} {empty} {bksp}", + "{tab} \\ | \u00C4 \u00A7 \u00A4 {empty} \u20AC \u00CD {empty} {empty} \u00F7 \u00D7", + "\u00E4 \u0111 \u0110 [ ] {empty} \u00ED \u0142 \u0141 $ \u00DF \\ {enter}", + "{shift} < > # & @ { } < ; > * {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Icelandic.js b/app/Resources/public/assets/keyboard/layouts/ms-Icelandic.js new file mode 100644 index 0000000000..afcf02d72f --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Icelandic.js @@ -0,0 +1,28 @@ +/* Icelandic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdic.html + */ +jQuery.keyboard.layouts['ms-Icelandic'] = { + "name" : "ms-Icelandic", + "lang" : ["is"], + "normal" : [ + "\u00B0 1 2 3 4 5 6 7 8 9 0 \u00F6 - {bksp}", + "{tab} q w e r t y u i o p \u00F0 '", + "a s d f g h j k l \u00E6 \u00B4 + {enter}", + "{shift} < z x c v b n m , . \u00FE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A8 ! \" # $ % & / ( ) = \u00D6 _ {bksp}", + "{tab} Q W E R T Y U I O P \u00D0 ?", + "A S D F G H J K L \u00C6 ' * {enter}", + "{shift} > Z X C V B N M ; : \u00DE {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00B0 {empty} {empty} {empty} {empty} \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ ` {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Igbo.js b/app/Resources/public/assets/keyboard/layouts/ms-Igbo.js new file mode 100644 index 0000000000..33c450c894 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Igbo.js @@ -0,0 +1,35 @@ +/* Igbo Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdibo.html + */ +jQuery.keyboard.layouts['ms-Igbo'] = { + "name" : "ms-Igbo", + "lang" : ["ig"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} \u2018 \u2019 {empty} {empty} {bksp}", + "{tab} \u1ecb\u0301 \u1ecb\u0300 \u1ecb\u0304 {empty} {empty} {empty} \u1ee5 \u1ecb \u1ecd {empty} {empty} {empty} {empty}", + "\u1ecd\u0301 \u1ecd\u0300 \u1ecd\u0304 \u1ee5\u0301 \u1ee5\u0300 \u1ee5\u0304 {empty} {empty} {empty} \u00b6 \u00b4 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} \u1e45 m\u0300 m\u0304 n\u0304 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u1eca\u0301 \u1eca\u0300 \u1eca\u0304 {empty} {empty} {empty} \u1ee4 \u1eca \u1ecc {empty} {empty} {empty} \u00a6", + "\u1ecc\u0301 \u1ecc\u0300 \u1ecc\u0304 \u1ee4\u0301 \u1ee4\u0300 \u1ee4\u0304 {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} \u1e44 M\u0300 M\u0304 N\u0304 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Inuktitut.js b/app/Resources/public/assets/keyboard/layouts/ms-Inuktitut.js new file mode 100644 index 0000000000..81d9ebaec3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Inuktitut.js @@ -0,0 +1,71 @@ +/* Inuktitut - Latin Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdiulat.html + */ +jQuery.keyboard.layouts['ms-Inuktitut - Latin'] = { + "name" : "ms-Inuktitut - Latin", + "lang" : ["iu"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ 1 2 3 4 5 6 7 8 9 0 _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ! @ # $ % * & \u2022 [ ] {empty} = {bksp}", + "{tab} \u1590 \u1404 \u1580 \u146e \u144f \u14f0 \u14a6 \u14c3 \u14d6 \u1529 \u201c \u2018 {empty}", + "\u1592 \u1406 \u1582 \u1470 \u1451 \u14f2 \u14a8 \u14c5 \u14d8 \u2026 \u0142 {enter}", + "{shift} {empty} \u1594 \u140b \u1584 \u1473 \u1456 \u14f5 \u14ab {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u00a2 \u00ae \u00bc \u00bd \u00be ^ \u2154 \u00a9 \u00f7 + {empty} {empty} {bksp}", + "{tab} \u148c \u1432 \u1547 {empty} \u1672 \u1674 \u1676 \u15a5 \u15a1 {empty} \u201d \u2019 |", + "\u148e \u1434 \u1549 \u1556 {empty} {empty} \u152b \u1558 \u15a3 {empty} \u0141 {enter}", + "{shift} | \u1491 \u1439 \u154c { } \u14c8 \u14db {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Inuktitut - Naqittaut Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinuk2.html + */ +jQuery.keyboard.layouts['ms-Inuktitut - Naqittaut'] = { + "name" : "ms-Inuktitut - Naqittaut", + "lang" : ["iu"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { [ |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ! @ # $ % * & \u2022 [ ] {empty} = {bksp}", + "{tab} \u1590 \u1404 \u1580 \u146e \u144f \u14f0 \u14a6 \u14c3 \u14d6 \u1529 \u201c \u2018 {empty}", + "\u1592 \u1406 \u1582 \u1470 \u1451 \u14f2 \u14a8 \u14c5 \u14d8 \u014b \u0142 {enter}", + "{shift} {empty} \u1594 \u140b \u1584 \u1473 \u1456 \u14f5 \u14ab {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u00a2 \u00ae \u00bc \u00bd \u00be ^ \u2154 \u00a9 \u00f7 + {empty} {empty} {bksp}", + "{tab} \u148c \u1432 \u1547 {empty} \u1672 \u1674 \u1676 \u15a5 \u15a1 {empty} \u201d \u2019 |", + "\u148e \u1434 \u1549 \u1556 {empty} {empty} \u152b \u1558 \u15a3 {empty} \u0141 {enter}", + "{shift} | \u1491 \u1439 \u154c { } \u14c8 \u14db {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Irish.js b/app/Resources/public/assets/keyboard/layouts/ms-Irish.js new file mode 100644 index 0000000000..ec3eaa4ba1 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Irish.js @@ -0,0 +1,35 @@ +/* Irish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdir.html + */ +jQuery.keyboard.layouts['ms-Irish'] = { + "name" : "ms-Irish", + "lang" : ["ga"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00ac ! \" \u00a3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00a6 {empty} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e9 {empty} {empty} {empty} \u00fa \u00ed \u00f3 {empty} {empty} {empty} {empty}", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00a6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c9 {empty} {empty} {empty} \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Italian.js b/app/Resources/public/assets/keyboard/layouts/ms-Italian.js new file mode 100644 index 0000000000..d752b171bd --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Italian.js @@ -0,0 +1,64 @@ +/* Italian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdit.html + */ +jQuery.keyboard.layouts['ms-Italian'] = { + "name" : "ms-Italian", + "lang" : ["it"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00EC {bksp}", + "{tab} q w e r t y u i o p \u00E8 +", + "a s d f g h j k l \u00F2 \u00E0 \u00F9 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" \u00A3 $ % & / ( ) = ? ^ {bksp}", + "{tab} Q W E R T Y U I O P \u00E9 *", + "A S D F G H J K L \u00E7 \u00B0 \u00A7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} @ # {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Italian (142) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdit142.html + */ +jQuery.keyboard.layouts['ms-Italian (142)'] = { + "name" : "ms-Italian (142)", + "lang" : ["it"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00EC {bksp}", + "{tab} q w e r t y u i o p \u00E8 +", + "a s d f g h j k l \u00F2 \u00E0 \u00F9 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" \u00A3 $ % & / ( ) = ? ^ {bksp}", + "{tab} Q W E R T Y U I O P \u00E9 *", + "A S D F G H J K L \u00E7 \u00B0 \u00A7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} # {empty} \u20AC {empty} { [ ] } {empty} {empty} {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Japanese-Hiragana.js b/app/Resources/public/assets/keyboard/layouts/ms-Japanese-Hiragana.js new file mode 100644 index 0000000000..1886d9f66a --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Japanese-Hiragana.js @@ -0,0 +1,85 @@ +/* Japanese Hiragana Keyboard Layout +* from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdJapan.html +*/ +jQuery.keyboard.layouts["ms-Japanese Hiragana"] = { + "name" : "ms-Japanese Hiragana", + "lang" : ["ja"], + + // Hiragana + "normal" : [ + "\u308d:Ro \u306c:Nu \u3075:Hu \u3042:A \u3046:U \u3048:E \u304a:O \u3084:Ya \u3086:Yu \u3088:Yo \u308f:Wa \u307b:Ho \u3078:He {bksp}", + "{tab} \u305f:Ta \u3066:Te \u3044:I \u3059:Su \u304b:Ka \u3093:N \u306a:Na \u306b:Ni \u3089:Ra \u305b:Se \u309b \u309c \u3080:Mu", + "\u3061:Ti \u3068:To \u3057:Si \u306f:Ha \u304D:Ki \u304f:Ku \u307e:Ma \u306e:No \u308a:Ri \u308c:Re \u3051:Ke {enter}", + "{shift} \u3064:Tu \u3055:Sa \u305d:So \u3072:Hi \u3053:Ko \u307f:Mi \u3082:Mo \u306d:Ne \u308b:Ru \u3081:Me {shift}", + "{accept} {space} {meta3} {meta1:Kana} {cancel}" + ], + "shift" : [ + "\u308d:Ro \u306c:Nu \u3075:Hu \u3041:a \u3045:u \u3047:e \u3049:o \u3083:ya \u3085:yu \u3087:yo \u3092:Wo \u30fc \u3078:He {bksp}", + "{tab} \u305f:Ta \u3066:Te \u3043:i \u3059:Su \u304b:Ka \u3093:N \u306a:Na \u306b:Ni \u3089:Ra \u305b:Se \u300c \u300d \u3080:Mu", + "\u3061:Ti \u3068:To \u3057:Si \u306f:Ha \u304D:Ki \u304f:Ku \u307e:Ma \u306e:No \u308a:Ri \u308c:Re \u3051:Ke {enter}", + "{shift} \u3063:tu \u3055:Sa \u305d:So \u3072:Hi \u3053:Ko \u307f:Mi \u3082:Mo \u3001 \u3002 \u30fb {shift}", + "{accept} {space} {meta3} {meta1:Kana} {cancel}" + ], + // English - half width (normal) + // \u5168 全 = full width active; switch to half width + // \u534a 半 = half width active; switch to full width + "meta1" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; : {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {space} {default:Eng} {meta2:\u534a:full} {cancel}" + ], + "meta1-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L + * {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {space} {default:Eng} {meta2:\u534a:full} {cancel}" + ], + // English - full width + "meta2" : [ + "\uff40 \uff11 \uff12 \uff13 \uff14 \uff15 \uff16 \uff17 \uff18 \uff19 \uff10 \uff0d \uff1d {bksp}", + "{tab} \uff51 \uff57 \uff45 \uff52 \uff54 \uff59 \uff55 \uff49 \uff4f \uff50 \uff3b \uff3d \uffe5", + "\uff41 \uff53 \uff44 \uff46 \uff47 \uff48 \uff4a \uff4b \uff4c \uff1b \uff07 {enter}", + "{shift} \uff5a \uff58 \uff43 \uff56 \uff42 \uff4e \uff4d \uff0c \uff0e \uff0f {shift}", + "{accept} {space} {default:Eng} {meta1:\u5168:half} {cancel}" + ], + "meta2-shift" : [ + "\uff5e \uff01 \uff20 \uff03 \uff04 \uff05 \uff3e \uff06 \uff0a \uff08 \uff09 \uff3f \uff0b {bksp}", + "{tab} \uff31 \uff37 \uff25 \uff32 \uff34 \uff39 \uff35 \uff29 \uff2f \uff30 \uff5b \uff5d \uff5c", + "\uff21 \uff33 \uff24 \uff26 \uff27 \uff28 \uff2a \uff2b \uff2c \uff1a \uff02 {enter}", + "{shift} \uff3a \uff38 \uff23 \uff36 \uff22 \uff2e \uff2d \uff1c \uff1e \uff1f {shift}", + "{accept} {space} {meta3:Eng} {meta1:\u5168:half} {cancel}" + ], + // Katakana full width + "meta3" : [ + "\u30ed:Ro \u30cc:Nu \u30d5:Hu \u30a2:A \u30a6:U \u30a8:E \u30aa:O \u30e4:Ya \u30e6:Yu \u30e8:Yo \u30ef:Wa \u30db:Ho \u30d8:He {bksp}", + "{tab} \u30bf:Ta \u30c6:Te \u30a4:I \u30b9:Su \u30ab:Ka \u30f3:N \u30ca:Na \u30cb:Ni \u30e9:Ra \u30bb:Se \u309b \u309c \u30e0:Mu", + "\u30c1:Ti \u30c8:To \u30b7:Si \u30cf:Ha \u30ad:Ki \u30af:Ku \u30de:Ma \u30ce:No \u30ea:Ri \u30ec:Re \u30b1:Ke {enter}", + "{shift} \u30c4:Tu \u30b5:Sa \u30bd:So \u30d2:Hi \u30b3:Ko \u30df:Mi \u30e2:Mo \u30cd:Ne \u30eb:Ru \u30e1:Me {shift}", + "{accept} {space} {default} {meta2} {meta4:\u5168:half} {cancel}" + ], + "meta3-shift" : [ + "\u30ed:Ro \u30cc:Nu \u30d5:Hu \u30a1:a \u30a5:u \u30a7:e \u30a9:o \u30e3:ya \u30e5:yu \u30e7:yo \u30f2:Wo \u30fc \u30d8:He {bksp}", + "{tab} \u30bf:Ta \u30c6:Te \u30a3:i \u30b9:Su \u30ab:Ka \u30f3:N \u30ca:Na \u30cb:Ni \u30e9:Ra \u30bb:Se \u300c \u300d \u30e0:Mu", + "\u30c1:Ti \u30c8:To \u30b7:Si \u30cf:Ha \u30ad:Ki \u30af:Ku \u30de:Ma \u30ce:No \u30ea:Ri \u30ec:Re \u30b1:Ke {enter}", + "{shift} \u30c3:tu \u30b5:Sa \u30bd:So \u30d2:Hi \u30b3:Ko \u30df:Mi \u30e2:Mo \u3001 \u3002 \u30fb {shift}", + "{accept} {space} {default} {meta2} {meta4:\u5168:half} {cancel}" + ], + // Katakana half width + "meta4" : [ + "\uff9b:Ro \uff87:Nu \uff8c:Hu \uff71:A \uff73:U \uff74:E \uff75:O \uff94:Ya \uff95:Yu \uff96:Yo \uff9c:Wa \uff8e:Ho \uff8d:He {bksp}", + "{tab} \uff80:Ta \uff83:Te \uff72:I \uff7d:Su \uff76:Ka \uff9d:N \uff85:Na \uff86:Ni \uff97:Ra \uff7e:Se \uff9e \uff9f \uff91:Mu", + "\uff81:Ti \uff84:To \uff7c:Si \uff8a:Ha \uff77:Ki \uff78:Ku \uff8f:Ma \uff89:No \uff98:Ri \uff9a:Re \uff79:Ke {enter}", + "{shift} \uff82:Tu \uff7b:Sa \uff7f:So \uff8b:Hi \uff7a:Ko \uff90:Mi \uff93:Mo \uff88:Ne \uff99:Ru \uff92:Me {shift}", + "{accept} {space} {default} {meta1} {meta3:\u534a:full} {cancel}" + ], + "meta4-shift" : [ + "\uff9b:Ro \uff87:Nu \uff8c:Hu \uff67:a \uff69:u \uff6a:e \uff6b:o \uff6c:ya \uff6d:yu \uff6e:yo \uff66:Wo \uff70 \uff8d:He {bksp}", + "{tab} \uff80:Ta \uff83:Te \uff68:i \uff7d:Su \uff76:Ka \uff9d:N \uff85:Na \uff86:Ni \uff97:Ra \uff7e:Se \u300c \u300d \uff91:Mu", + "\uff81:Ti \uff84:To \uff7c:Si \uff8a:Ha \uff77:Ki \uff78:Ku \uff8f:Ma \uff89:No \uff98:Ri \uff9a:Re \uff79:Ke {enter}", + "{shift} \uff6f:tu \uff7b:Sa \uff7f:So \uff8b:Hi \uff7a:Ko \uff90:Mi \uff93:Mo \u3001 \u3002 \u30fb {shift}", + "{accept} {space} {default} {meta1} {meta3:\u534a:full} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Kannada.js b/app/Resources/public/assets/keyboard/layouts/ms-Kannada.js new file mode 100644 index 0000000000..6ed8df8339 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Kannada.js @@ -0,0 +1,35 @@ +/* Kannada Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinkan.html + */ +jQuery.keyboard.layouts['ms-Kannada'] = { + "name" : "ms-Kannada", + "lang" : ["kn"], + "normal" : [ + "\u0cca 1 2 3 4 5 6 7 8 9 0 - \u0cc3 {bksp}", + "{tab} \u0ccc \u0cc8 \u0cbe \u0cc0 \u0cc2 \u0cac \u0cb9 \u0c97 \u0ca6 \u0c9c \u0ca1 {empty}", + "\u0ccb \u0cc7 \u0ccd \u0cbf \u0cc1 \u0caa \u0cb0 \u0c95 \u0ca4 \u0c9a \u0c9f {enter}", + "{shift} \u0cc6 \u0c82 \u0cae \u0ca8 \u0cb5 \u0cb2 \u0cb8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0c92 {empty} {empty} \u0ccd\u0cb0 \u0cb0\u0ccd \u0c9c\u0ccd\u0c9e \u0ca4\u0ccd\u0cb0 \u0c95\u0ccd\u0cb7 \u0cb6\u0ccd\u0cb0 ( ) \u0c83 \u0c8b {bksp}", + "{tab} \u0c94 \u0c90 \u0c86 \u0c88 \u0c8a \u0cad \u0c99 \u0c98 \u0ca7 \u0c9d \u0ca2 \u0c9e", + "\u0c93 \u0c8f \u0c85 \u0c87 \u0c89 \u0cab \u0cb1 \u0c96 \u0ca5 \u0c9b \u0ca0 {enter}", + "{shift} \u0c8e {empty} \u0ca3 {empty} {empty} \u0cb3 \u0cb6 \u0cb7 | / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0ce7 \u0ce8 \u0ce9 \u0cea \u0ceb \u0cec \u0ced \u0cee \u0cef \u0ce6 {empty} \u0cc4 {bksp}", + "{tab} {empty} \u0cd6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} \u0cd5 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0ce0 {bksp}", + "{tab} {empty} {empty} {empty} \u0ce1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} \u0c8c {empty} \u0cde {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Kazakh.js b/app/Resources/public/assets/keyboard/layouts/ms-Kazakh.js new file mode 100644 index 0000000000..f515c1240a --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Kazakh.js @@ -0,0 +1,21 @@ +/* Kazakh Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdkaz.html + */ +jQuery.keyboard.layouts['ms-Kazakh'] = { + "name" : "ms-Kazakh", + "lang" : ["kk"], + "normal" : [ + "( \" \u04D9 \u0456 \u04A3 \u0493 , . \u04AF \u04B1 \u049B \u04E9 \u04BB {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u0449 \u0437 \u0445 \u044A \\", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u0436 \u044D {enter}", + "{shift} \\ \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u044C \u0431 \u044E \u2116 {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + ") ! \u04D8 \u0406 \u04A2 \u0492 ; : \u04AE \u04B0 \u049A \u04E8 \u04BA {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u0429 \u0417 \u0425 \u042A /", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u0416 \u042D {enter}", + "{shift} | \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u042C \u0411 \u042E ? {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Korean.js b/app/Resources/public/assets/keyboard/layouts/ms-Korean.js new file mode 100644 index 0000000000..52d9558aef --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Korean.js @@ -0,0 +1,35 @@ +/* Korean Keyboard Layout + * generated from file : ///D : /Repos/Keyboard/tmp/Layouts/Korean/Korean Keyboard Layout.htm + */ +jQuery.keyboard.layouts["ms-Korean"] = { + "name" : "ms-Korean", + "lang" : ["ko"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u1107 \u110c \u1103 \u1100 \u1109 \u116d \u1167 \u1163 \u1162 \u1166 [ ] \u20a9", + "\u1106 \u1102 \u110b \u1105 \u1112 \u1169 \u1165 \u1161 \u1175 ; ' {enter}", + "{shift} \u110f \u1110 \u110e \u1111 \u1172 \u116e \u1173 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} \u1108 \u110d \u1104 \u1101 \u110a \u116d \u1167 \u1163 \u1164 \u1168 { } |", + '\u1106 \u1102 \u110b \u1105 \u1112 \u1169 \u1165 \u1161 \u1175 : " {enter}', + "{shift} \u110f \u1110 \u110e \u1111 \u1172 \u116e \u1173 < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u20a9", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Kyrgyz-Cyrillic.js b/app/Resources/public/assets/keyboard/layouts/ms-Kyrgyz-Cyrillic.js new file mode 100644 index 0000000000..094632ea64 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Kyrgyz-Cyrillic.js @@ -0,0 +1,35 @@ +/* Kyrgyz Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdKyr.html + */ +jQuery.keyboard.layouts['ms-Kyrgyz Cyrillic'] = { + "name" : "ms-Kyrgyz Cyrillic", + "lang" : ["ky"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u04af {empty} {empty} \u04a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} \u04e9 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u04ae {empty} {empty} \u04a2 {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} \u04e8 {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Lao.js b/app/Resources/public/assets/keyboard/layouts/ms-Lao.js new file mode 100644 index 0000000000..84b475c5a1 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Lao.js @@ -0,0 +1,28 @@ +/* Lao Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlao.html + */ +jQuery.keyboard.layouts['ms-Lao'] = { + "name" : "ms-Lao", + "lang" : ["lo"], + "normal" : [ + "\" \u0ea2 \u0e9f \u0ec2 \u0e96 \u0eb8 \u0eb9 \u0e84 \u0e95 \u0e88 \u0e82 \u0e8a \u0ecd {bksp}", + "{tab} \u0ebb \u0ec4 \u0eb3 \u0e9e \u0eb0 \u0eb4 \u0eb5 \u0eae \u0e99 \u0e8d \u0e9a \u0ea5 /", + "\u0eb1 \u0eab \u0e81 \u0e94 \u0ec0 \u0ec9 \u0ec8 \u0eb2 \u0eaa \u0ea7 \u0e87 {enter}", + "{shift} \u0e9c \u0e9b \u0ec1 \u0ead \u0eb6 \u0eb7 \u0e97 \u0ea1 \u0ec3 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "' 1 2 3 4 \u0ecc \u0ebc 5 6 7 8 9 \u0ecd\u0ec8 {bksp}", + "{tab} \u0ebb\u0ec9 0 * _ + \u0eb4\u0ec9 \u0eb5\u0ec9 \u0ea3 \u0edc \u0ebd - \u0eab\u0ebc \\", + "\u0eb1\u0ec9 ; . , : \u0eca \u0ecb ! ? % = {enter}", + "{shift} \u20ad ( \u0eaf x \u0eb6\u0ec9 \u0eb7\u0ec9 \u0ec6 \u0edd $ / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0ed1 \u0ed2 \u0ed3 \u0ed4 \u0ed5 \u0ed6 \u0ed7 \u0ed8 \u0ed9 \u0ed0 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Latin-American.js b/app/Resources/public/assets/keyboard/layouts/ms-Latin-American.js new file mode 100644 index 0000000000..9b96ab585d --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Latin-American.js @@ -0,0 +1,28 @@ +/* Latin American Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdla.html + */ +jQuery.keyboard.layouts['ms-Latin American'] = { + "name" : "ms-Latin American", + "lang" : ["es"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 ' \u00BF {bksp}", + "{tab} q w e r t y u i o p \u00B4 +", + "a s d f g h j k l \u00F1 { } {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 ! \" # $ % & / ( ) = ? \u00A1 {bksp}", + "{tab} Q W E R T Y U I O P \u00A8 *", + "A S D F G H J K L \u00D1 [ ] {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \\ {empty} {bksp}", + "{tab} @ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ ` {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Latvian.js b/app/Resources/public/assets/keyboard/layouts/ms-Latvian.js new file mode 100644 index 0000000000..ee2b632bc5 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Latvian.js @@ -0,0 +1,71 @@ +/* Latvian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlv.html + */ +jQuery.keyboard.layouts['ms-Latvian'] = { + "name" : "ms-Latvian", + "lang" : ["lv"], + "normal" : [ + "\u00ad 1 2 3 4 5 6 7 8 9 0 - f {bksp}", + "{tab} \u016b g j r m v n z \u0113 \u010d \u017e h \u0137", + "\u0161 u s i l d a t e c \u00b4 {enter}", + "{shift} \u0123 \u0146 b \u012b k p o \u0101 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "? ! \u00ab \u00bb $ % / & \u00d7 ( ) _ F {bksp}", + "{tab} \u016a G J R M V N Z \u0112 \u010c \u017d H \u0136", + "\u0160 U S I L D A T E C \u00b0 {enter}", + "{shift} \u0122 \u0145 B \u012a K P O \u0100 ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00ab {empty} {empty} \u20ac \" \u2019 {empty} : {empty} {empty} \u2013 = {bksp}", + "{tab} q \u0123 {empty} \u0157 w y {empty} {empty} {empty} {empty} [ ] {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u20ac {empty} \u00b4 {enter}", + "{shift} \\ {empty} x {empty} \u0137 {empty} \u00f5 {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} @ # $ ~ ^ \u00b1 {empty} {empty} {empty} \u2014 ; {bksp}", + "{tab} Q \u0122 {empty} \u0156 W Y {empty} {empty} {empty} {empty} { } {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a8 {enter}", + "{shift} | {empty} X {empty} \u0136 {empty} \u00d5 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Latvian (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlv1.html + */ +jQuery.keyboard.layouts['ms-Latvian (QWERTY)'] = { + "name" : "ms-Latvian (QWERTY)", + "lang" : ["lv"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] {empty}", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00ad {empty} \u00ab \u00bb \u20ac {empty} \u2019 {empty} {empty} {empty} {empty} \u2013 {empty} {bksp}", + "{tab} {empty} {empty} \u0113 \u0157 {empty} {empty} \u016b \u012b \u00f5 {empty} {empty} {empty} {empty}", + "\u0101 \u0161 {empty} {empty} \u0123 {empty} {empty} \u0137 \u013c {empty} \u00b4 {enter}", + "{shift} {empty} \u017e {empty} \u010d {empty} {empty} \u0146 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} \u00a7 \u00b0 {empty} \u00b1 \u00d7 {empty} {empty} \u2014 {empty} {bksp}", + "{tab} {empty} {empty} \u0112 \u0156 {empty} {empty} \u016a \u012a \u00d5 {empty} {empty} {empty} {empty}", + "\u0100 \u0160 {empty} {empty} \u0122 {empty} {empty} \u0136 \u013b {empty} \u00a8 {enter}", + "{shift} {empty} \u017d {empty} \u010c {empty} {empty} \u0145 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Lithuanian.js b/app/Resources/public/assets/keyboard/layouts/ms-Lithuanian.js new file mode 100644 index 0000000000..a30fa58206 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Lithuanian.js @@ -0,0 +1,93 @@ +/* Lithuanian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlt1.html + */ +jQuery.keyboard.layouts['ms-Lithuanian'] = { + "name" : "ms-Lithuanian", + "lang" : ["lt"], + "normal" : [ + "` \u0105 \u010d \u0119 \u0117 \u012f \u0161 \u0173 \u016b 9 0 - \u017e {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ \u0104 \u010c \u0118 \u0116 \u012e \u0160 \u0172 \u016a ( ) _ \u017d {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 {empty} = {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} ! @ # $ % ^ & * {empty} {empty} {empty} + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Lithuanian IBM Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlt.html + */ +jQuery.keyboard.layouts['ms-Lithuanian IBM'] = { + "name" : "ms-Lithuanian IBM", + "lang" : ["lt"], + "normal" : [ + "` ! \" / ; : , . ? ( ) _ + {bksp}", + "{tab} \u0105 \u017e e r t y u i o p \u012f \u201c |", + "a s d f g h j k l \u0173 \u0117 {enter}", + "{shift} \\ z \u016b c v b n m \u010d \u0161 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0104 \u017d E R T Y U I O P \u012e \u201d \\", + "A S D F G H J K L \u0172 \u0116 {enter}", + "{shift} | Z \u016a C V B N M \u010c \u0160 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} { [ ] } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Lithuanian Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdlt2.html + */ +jQuery.keyboard.layouts['ms-Lithuanian Standard'] = { + "name" : "ms-Lithuanian Standard", + "lang" : ["lt"], + "normal" : [ + "` ! - / ; : , . = ( ) ? x {bksp}", + "{tab} \u0105 \u017e e r t y u i o p \u012f w q", + "a s d \u0161 g h j k l \u0173 \u0117 {enter}", + "{shift} < z \u016b c v b n m \u010d f / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ 1 2 3 4 5 6 7 8 9 0 + X {bksp}", + "{tab} \u0104 \u017d E R T Y U I O P \u012e W Q", + "A S D \u0160 G H J K L \u0172 \u0116 {enter}", + "{shift} > Z \u016a C V B N M \u010c F / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00b4 @ _ # $ \u00a7 ^ & * [ ] ' % {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \" {enter}", + "{shift} \u2013 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u201e \u201c {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Luxembourgish.js b/app/Resources/public/assets/keyboard/layouts/ms-Luxembourgish.js new file mode 100644 index 0000000000..3d1d4a8292 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Luxembourgish.js @@ -0,0 +1,28 @@ +/* Luxembourgish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsf.html + */ +jQuery.keyboard.layouts['ms-Luxembourgish'] = { + "name" : "ms-Luxembourgish", + "lang" : ["lb"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 ' ^ {bksp}", + "{tab} q w e r t z u i o p \u00e8 \u00a8 $", + "a s d f g h j k l \u00e9 \u00e0 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 + \" * \u00e7 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00fc ! \u00a3", + "A S D F G H J K L \u00f6 \u00e4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00a6 @ # \u00b0 \u00a7 \u00ac | \u00a2 {empty} {empty} \u00b4 ~ {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] }", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Macedonian.js b/app/Resources/public/assets/keyboard/layouts/ms-Macedonian.js new file mode 100644 index 0000000000..f1d7d4bd41 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Macedonian.js @@ -0,0 +1,57 @@ +/* Macedonian (FYROM) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmac.html + */ +jQuery.keyboard.layouts['ms-Macedonian (FYROM)'] = { + "name" : "ms-Macedonian (FYROM)", + "lang" : ["mk"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0455 \u0443 \u0438 \u043e \u043f \u0448 \u0453 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045c {enter}", + "{shift} \u0451 \u0437 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \u201e \u201c \u2019 % \u2018 & * ( ) _ + {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0405 \u0423 \u0418 \u041e \u041f \u0428 \u0403 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040c {enter}", + "{shift} \u0401 \u0417 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0402 \u0452 {empty}", + "{empty} {empty} {empty} [ ] {empty} {empty} {empty} {empty} \u040b \u045b {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Macedonian (FYROM) - Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmacst.html + */ +jQuery.keyboard.layouts['ms-Macedonian (FYROM) - Standard'] = { + "name" : "ms-Macedonian (FYROM) - Standard", + "lang" : ["mk"], + "normal" : [ + "\u045d 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0455 \u0443 \u0438 \u043e \u043f \u0448 \u0453 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045c {enter}", + "{shift} \u0450 \u0437 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u040d ! \u201e \u201c ' % \u201a \u2018 * ( ) - + {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0405 \u0423 \u0418 \u041e \u041f \u0428 \u0403 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040c {enter}", + "{shift} \u0400 \u0417 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00b0 @ # $ {empty} ^ & \u2026 { } \u2014 \u0301 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Malayalam.js b/app/Resources/public/assets/keyboard/layouts/ms-Malayalam.js new file mode 100644 index 0000000000..e6beb5e449 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Malayalam.js @@ -0,0 +1,35 @@ +/* Malayalam Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinmal.html + */ +jQuery.keyboard.layouts['ms-Malayalam'] = { + "name" : "ms-Malayalam", + "lang" : ["ml"], + "normal" : [ + "\u0d4a 1 2 3 4 5 6 7 8 9 0 - \u0d43 {bksp}", + "{tab} \u0d4c \u0d48 \u0d3e \u0d40 \u0d42 \u0d2c \u0d39 \u0d17 \u0d26 \u0d1c \u0d21 {empty}", + "\u0d4b \u0d47 \u0d4d \u0d3f \u0d41 \u0d2a \u0d30 \u0d15 \u0d24 \u0d1a \u0d1f {enter}", + "{shift} \u0d46 \u0d02 \u0d2e \u0d28 \u0d35 \u0d32 \u0d38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0d12 {empty} {empty} \u0d4d\u0d30 {empty} {empty} {empty} \u0d15\u0d4d\u0d37 {empty} ( ) \u0d03 \u0d0b {bksp}", + "{tab} \u0d14 \u0d10 \u0d06 \u0d08 \u0d0a \u0d2d \u0d19 \u0d18 \u0d27 \u0d1d \u0d22 \u0d1e", + "\u0d13 \u0d0f \u0d05 \u0d07 \u0d09 \u0d2b \u0d31 \u0d16 \u0d25 \u0d1b \u0d20 {enter}", + "{shift} \u0d0e {empty} \u0d23 {empty} \u0d34 \u0d33 \u0d36 \u0d37 {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0d67 \u0d68 \u0d69 \u0d6a \u0d6b \u0d6c \u0d6d \u0d6e \u0d6f \u0d66 {empty} {empty} {bksp}", + "{tab} \u0d57 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0d60 {bksp}", + "{tab} {empty} {empty} {empty} \u0d61 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} \u0d0c {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Maltese.js b/app/Resources/public/assets/keyboard/layouts/ms-Maltese.js new file mode 100644 index 0000000000..8194451a79 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Maltese.js @@ -0,0 +1,71 @@ +/* Maltese 47-Key Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmlt47.html + */ +jQuery.keyboard.layouts['ms-Maltese 47-Key'] = { + "name" : "ms-Maltese 47-Key", + "lang" : ["mt"], + "normal" : [ + "\u010b 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u0121 \u0127 \u017c", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u010a ! @ \u20ac $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u0120 \u0126 \u017b", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e8 {empty} {empty} {empty} \u00f9 \u00ec \u00f2 {empty} [ ] \\", + "\u00e0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c8 {empty} {empty} {empty} \u00d9 \u00cc \u00d2 {empty} { } |", + "\u00c0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Maltese 48-Key Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmlt48.html + */ +jQuery.keyboard.layouts['ms-Maltese 48-Key'] = { + "name" : "ms-Maltese 48-Key", + "lang" : ["mt"], + "normal" : [ + "\u010b 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u0121 \u0127 #", + "a s d f g h j k l ; ' {enter}", + "{shift} \u017c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u010a ! \" \u20ac $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u0120 \u0126 ~", + "A S D F G H J K L : @ {enter}", + "{shift} \u017b Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e8 {empty} {empty} {empty} \u00f9 \u00ec \u00f2 {empty} [ ] {empty}", + "\u00e0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u00ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c8 {empty} {empty} {empty} \u00d9 \u00cc \u00d2 {empty} { } {empty}", + "\u00c0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Maori.js b/app/Resources/public/assets/keyboard/layouts/ms-Maori.js new file mode 100644 index 0000000000..8edbff6229 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Maori.js @@ -0,0 +1,21 @@ +/* Maori Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmaori.html + */ +jQuery.keyboard.layouts['ms-Maori'] = { + name : "ms-Maori", + lang : ["mi"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + shift : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Marathi.js b/app/Resources/public/assets/keyboard/layouts/ms-Marathi.js new file mode 100644 index 0000000000..83510e935a --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Marathi.js @@ -0,0 +1,35 @@ +/* Marathi Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinmar.html + */ +jQuery.keyboard.layouts['ms-Marathi'] = { + "name" : "ms-Marathi", + "lang" : ["mr"], + "normal" : [ + "{empty} \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 - \u0943 {bksp}", + "{tab} \u094c \u0948 \u093e \u0940 \u0942 \u092c \u0939 \u0917 \u0926 \u091c \u0921 \u093c \u0949", + "\u094b \u0947 \u094d \u093f \u0941 \u092a \u0930 \u0915 \u0924 \u091a \u091f {enter}", + "{shift} \u0949 \u0902 \u092e \u0928 \u0935 \u0932 \u0938 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} \u090d \u0945 \u094d\u0930 \u0930\u094d \u091c\u094d\u091e \u0924\u094d\u0930 \u0915\u094d\u0937 \u0936\u094d\u0930 ( ) \u0903 \u090b {bksp}", + "{tab} \u0914 \u0910 \u0906 \u0908 \u090a \u092d \u0919 \u0918 \u0927 \u091d \u0922 \u091e \u0911", + "\u0913 \u090f \u0905 \u0907 \u0909 \u092b \u0931 \u0916 \u0925 \u091b \u0920 {enter}", + "{shift} \u0911 \u0901 \u0923 {empty} {empty} \u0933 \u0936 \u0937 \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ] \\", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ; ' {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} , . {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} : \" {enter}", + "{shift} {empty} \u093d \u0950 {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Mongolian-Cyrillic.js b/app/Resources/public/assets/keyboard/layouts/ms-Mongolian-Cyrillic.js new file mode 100644 index 0000000000..f3847d3cfa --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Mongolian-Cyrillic.js @@ -0,0 +1,43 @@ +/* Mongolian Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmon.html + */ +jQuery.keyboard.layouts['ms-Mongolian Cyrillic'] = { + "name" : "ms-Mongolian Cyrillic", + "lang" : ["mn"], + "normal" : [ + "= \u2116 - \" \u20ae : . _ , % ? \u0435 \u0449 {bksp}", + "{tab} \u0444 \u0446 \u0443 \u0436 \u044d \u043d \u0433 \u0448 \u04af \u0437 \u043a \u044a \\", + "\u0439 \u044b \u0431 \u04e9 \u0430 \u0445 \u0440 \u043e \u043b \u0434 \u043f {enter}", + "{shift} \\ \u044f \u0447 \u0451 \u0441 \u043c \u0438 \u0442 \u044c \u0432 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "+ 1 2 3 4 5 6 7 8 9 0 \u0415 \u0429 {bksp}", + "{tab} \u0424 \u0426 \u0423 \u0416 \u042d \u041d \u0413 \u0428 \u04ae \u0417 \u041a \u042a |", + "\u0419 \u042b \u0411 \u04e8 \u0410 \u0425 \u0420 \u041e \u041b \u0414 \u041f {enter}", + "{shift} | \u042f \u0427 \u0401 \u0421 \u041c \u0418 \u0422 \u042c \u0412 / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Mongolian (Mongolian Script) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdmonmo.html + */ +jQuery.keyboard.layouts['ms-Mongolian (Mongolian Script)'] = { + "name" : "ms-Mongolian (Mongolian Script)", + "lang" : ["mn"], + "normal" : [ + "\u180d 1 2 3 4 5 6 7 8 9 0 \u202f = {bksp}", + "{tab} \u1834 \u1823 \u1821 \u1837 \u1832 \u1836 \u1826 \u1822 \u1825 \u182b \u3014 \u3015 \u1801", + "\u1820 \u1830 \u1833 \u1839 \u182d \u182c \u1835 \u183a \u182f ; \u180b {enter}", + "{shift} {empty} \u183d \u1831 \u183c \u1824 \u182a \u1828 \u182e \u1802 \u1803 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! \u2048 \u2049 \u2014 % {ZWNJ} \u180a {ZWJ} ( ) \u180e + {bksp}", + "{tab} {empty} \u1838 \u1827 \u183f {empty} {empty} {empty} {empty} {empty} {empty} \u3008 \u3009 |", + "{empty} {empty} {empty} {empty} {empty} \u183e {empty} \u183b \u1840 \u1804 \u180c {enter}", + "{shift} {empty} \u1841 {empty} \u1842 {empty} {empty} \u1829 {empty} \u300a \u300b / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Nepali.js b/app/Resources/public/assets/keyboard/layouts/ms-Nepali.js new file mode 100644 index 0000000000..e31dc4523e --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Nepali.js @@ -0,0 +1,28 @@ +/* Nepali Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdnepr.html + */ +jQuery.keyboard.layouts['ms-Nepali'] = { + "name" : "ms-Nepali", + "lang" : ["ne"], + "normal" : [ + "\u091e \u091c\u094d\u091e \u0918 \u0919 \u091d \u091b \u091f \u0920 \u0921 \u0922 \u0923 ( . {bksp}", + "{tab} \u0924\u094d\u0930 \u0927 \u092d \u091a \u0924 \u0925 \u0917 \u0937 \u092f \u0909 \u0943 \u0947 \u094d\u0930", + "\u092c \u0915 \u092e \u093e \u0928 \u091c \u0935 \u092a \u093f \u0938 \u0941 {enter}", + "{shift} \u0936 \u0939 \u0905 \u0916 \u0926 \u0932 \u092b , \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u091e\u094d \u0967 \u0968 \u0969 \u096a \u096b \u096c \u096d \u096e \u096f \u0966 ) \u0902 {bksp}", + "{tab} \u094b \u0927\u094d \u092d\u094d \u091a\u094d \u0924\u094d \u0925\u094d \u0917\u094d \u0915\u094d\u0937 \u0907 \u090f \u0930\u094d \u0948 \u094d", + "\u092c\u094d \u0915\u094d \u092e\u094d \u0901 \u0928\u094d \u091c\u094d \u0935\u094d \u092a\u094d \u0940 \u0938\u094d \u0942 {enter}", + "{shift} \u0936\u094d \u0939\u094d \u090b \u0916\u094d \u0926\u094d \u0932\u094d \u0903 ? \u0936\u094d\u0930 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 {empty} + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u090a {empty} \u0914 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} \u0906 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Norwegian.js b/app/Resources/public/assets/keyboard/layouts/ms-Norwegian.js new file mode 100644 index 0000000000..dec3c2134d --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Norwegian.js @@ -0,0 +1,64 @@ +/* Norwegian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdno.html + */ +jQuery.keyboard.layouts['ms-Norwegian'] = { + "name" : "ms-Norwegian", + "lang" : ["no"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00F8 \u00E6 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00A7 ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00D8 \u00C6 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } {empty} \u00B4 {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Norwegian with Sami Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdno1.html + */ +jQuery.keyboard.layouts['ms-Norwegian with Sami'] = { + "name" : "ms-Norwegian with Sami", + "lang" : ["no"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00f8 \u00e6 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00d8 \u00c6 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} \u00b4 {bksp}", + "{tab} \u00e2 {empty} \u20ac {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~ {empty}", + "\u00e1 \u0161 \u0111 \u01e5 \u01e7 \u021f {empty} \u01e9 {empty} \u00f6 \u00e4 {enter}", + "{shift} {empty} \u017e {empty} \u010d \u01ef \u0292 \u014b \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u00c2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00cf \u00d5 {empty} {empty} {empty} {empty}", + "\u00c1 \u0160 \u0110 \u01e4 \u01e6 \u021e {empty} \u01e8 {empty} \u00d6 \u00c4 {enter}", + "{shift} {empty} \u017d {empty} \u010c \u01ee \u01b7 \u014a {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Oriya.js b/app/Resources/public/assets/keyboard/layouts/ms-Oriya.js new file mode 100644 index 0000000000..350f9ce0e3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Oriya.js @@ -0,0 +1,35 @@ +/* Oriya Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinori.html + */ +jQuery.keyboard.layouts['ms-Oriya'] = { + "name" : "ms-Oriya", + "lang" : ["or"], + "normal" : [ + "1 2 3 4 5 6 7 8 9 0 0 \u0b43 {bksp}", + "{tab} \u0b4c \u0b48 \u0b3e \u0b40 \u0b42 \u0b2c \u0b39 \u0b17 \u0b26 \u0b1c \u0b21 \u0b3c", + "\u0b4b \u0b47 \u0b4d \u0b3f \u0b41 \u0b2a \u0b30 \u0b15 \u0b24 \u0b1a \u0b1f {enter}", + "{shift} \u0b5f \u0b02 \u0b2e \u0b28 \u0b2c \u0b32 \u0b38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "{empty} {empty} \u0b4d\u0b30 \u0b30\u0b4d \u0b1c\u0b4d\u0b1e \u0b24\u0b4d\u0b30 \u0b15\u0b4d\u0b37 \u0b36\u0b4d\u0b30 ( ) \u0b03 \u0b0b {bksp}", + "{tab} \u0b14 \u0b10 \u0b06 \u0b08 \u0b0a \u0b2d \u0b19 \u0b18 \u0b27 \u0b1d \u0b22 \u0b1e", + "\u0b13 \u0b0f \u0b05 \u0b07 \u0b09 \u0b2b {empty} \u0b16 \u0b25 \u0b1b \u0b20 {enter}", + "{shift} \u0b71 \u0b01 \u0b23 {empty} {empty} \u0b33 \u0b36 \u0b37 {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0b67 \u0b68 \u0b69 \u0b6a \u0b6b \u0b6c \u0b6d \u0b6e \u0b6f \u0b66 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0b5c {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0b60 {bksp}", + "{tab} {empty} {empty} {empty} \u0b61 {empty} {empty} {empty} {empty} {empty} {empty} \u0b5d {empty}", + "{empty} {empty} {empty} \u0b0c {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0b3d {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Pashto.js b/app/Resources/public/assets/keyboard/layouts/ms-Pashto.js new file mode 100644 index 0000000000..9d5f24ee43 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Pashto.js @@ -0,0 +1,28 @@ +/* Pashto (Afghanistan) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpash.html + */ +jQuery.keyboard.layouts['ms-Pashto (Afghanistan)'] = { + "name" : "ms-Pashto (Afghanistan)", + "lang" : ["ps"], + "normal" : [ + "{ZWJ} \u06f1 \u06f2 \u06f3 \u06f4 \u06f5 \u06f6 \u06f7 \u06f8 \u06f9 \u06f0 - = {bksp}", + "{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \\", + "\u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u06a9 \u06ab {enter}", + "{shift} \u0638 \u0637 \u0632 \u0631 \u0630 \u062f \u0693 \u0648 \u0696 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0654 ! \u066c \u066b \u060b \u066a \u00d7 \u00bb \u00ab ) ( \u0640 + {bksp}", + "{tab} \u0652 \u064c \u064d \u064b \u064f \u0650 \u064e \u0651 \u0681 \u0685 ] [ *", + "\u069a \u06cd \u064a \u067e \u0623 \u0622 \u067c \u06bc \u0629 : \u061b {enter}", + "{shift} \u0626 \u06d0 \u0698 \u0621 {ZWNJ} \u0689 \u0624 \u060c . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ~ @ # $ % ^ & \u066d \u2022 \u00b0 _ \u00f7 {bksp}", + "{tab} \u20ac \u0671 \u0649 {LRM} {RLM} \u0653 \u0659 \u0670 ' \" } { |", + "{empty} {empty} \u06d2 \u06ba \u06b7 \u0625 \u0679 > < \u0643 \u06af {enter}", + "{shift} ? ; {empty} {empty} {empty} \u0688 \u0691 , \u06c7 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Persian.js b/app/Resources/public/assets/keyboard/layouts/ms-Persian.js new file mode 100644 index 0000000000..a9da539b9f --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Persian.js @@ -0,0 +1,21 @@ +/* Persian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfa.html + */ +jQuery.keyboard.layouts['ms-Persian'] = { + "name" : "ms-Persian", + "lang" : ["fa"], + "normal" : [ + "\u00f7 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \u067e", + "\u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u06a9 \u06af {enter}", + "{shift} \u067e \u0638 \u0637 \u0632 \u0631 \u0630 \u062f \u0626 \u0648 . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u00d7 ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} \u064b \u064c \u064d \u0631\u064a\u0627\u0644 \u060c \u061b , ] [ \\ } { |", + "\u064e \u064f \u0650 \u0651 \u06c0 \u0622 \u0640 \u00ab \u00bb : \" {enter}", + "{shift} | \u0629 \u064a \u0698 \u0624 \u0625 \u0623 \u0621 < > / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Polish.js b/app/Resources/public/assets/keyboard/layouts/ms-Polish.js new file mode 100644 index 0000000000..bdb5f7d188 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Polish.js @@ -0,0 +1,64 @@ +/* Polish (214) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpl.html + */ +jQuery.keyboard.layouts['ms-Polish (214)'] = { + "name" : "ms-Polish (214)", + "lang" : ["pl"], + "normal" : [ + "\u02DB 1 2 3 4 5 6 7 8 9 0 + ' {bksp}", + "{tab} q w e r t z u i o p \u017C \u015B", + "a s d f g h j k l \u0142 \u0105 \u00F3 {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B7 ! \" # \u00A4 % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0144 \u0107", + "A S D F G H J K L \u0141 \u0119 \u017A {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02C7 ^ \u02D8 \u00B0 \u02DB ` \u00B7 \u00B4 \u02DD \u00A8 \u00B8 {bksp}", + "{tab} \\ \u00A6 {empty} {empty} {empty} {empty} \u20AC {empty} {empty} {empty} \u00F7 \u00D7", + "{empty} \u0111 \u0110 {empty} {empty} {empty} {empty} {empty} {empty} $ \u00DF {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00A7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Polish (Programmers) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpl1.html + */ +jQuery.keyboard.layouts['ms-Polish (Programmers)'] = { + "name" : "ms-Polish (Programmers)", + "lang" : ["pl"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' \\ {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : \" | {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u0119 {empty} {empty} {empty} \u20AC {empty} \u00F3 {empty} {empty} {empty}", + "\u0105 \u015B {empty} {empty} {empty} {empty} {empty} {empty} \u0142 {empty} {empty} {empty} {enter}", + "{shift} \u017C \u017A \u0107 {empty} {empty} \u0144 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u0118 {empty} {empty} {empty} {empty} {empty} \u00D3 {empty} {empty} {empty}", + "\u0104 \u015A {empty} {empty} {empty} {empty} {empty} {empty} \u0141 {empty} {empty} {empty} {enter}", + "{shift} \u017B \u0179 \u0106 {empty} {empty} \u0143 {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Portuguese.js b/app/Resources/public/assets/keyboard/layouts/ms-Portuguese.js new file mode 100644 index 0000000000..eec0535e13 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Portuguese.js @@ -0,0 +1,57 @@ +/* Portuguese Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdpo.html + */ +jQuery.keyboard.layouts['ms-Portuguese'] = { + "name" : "ms-Portuguese", + "lang" : ["pt"], + "normal" : [ + "\\ 1 2 3 4 5 6 7 8 9 0 ' \u00AB {bksp}", + "{tab} q w e r t y u i o p + \u00B4", + "a s d f g h j k l \u00E7 \u00BA ~ {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "| ! \" # $ % & / ( ) = ? \u00BB {bksp}", + "{tab} Q W E R T Y U I O P * `", + "A S D F G H J K L \u00C7 \u00AA ^ {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 \u00A7 \u20AC {empty} { [ ] } {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00A8 ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Portuguese (Brazilian ABNT) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdbr.html + */ +jQuery.keyboard.layouts['ms-Portuguese (Brazilian ABNT)'] = { + "name" : "ms-Portuguese (Brazilian ABNT)", + "lang" : ["pt"], + "normal" : [ + "' 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u00B4 [", + "a s d f g h j k l \u00E7 ~ ] {enter}", + "{shift} \\ z x c v b n m , . ; / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\" ! @ # $ % \u00A8 & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ` {", + "A S D F G H J K L \u00C7 ^ } {enter}", + "{shift} | Z X C V B N M < > : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00B9 \u00B2 \u00B3 \u00A3 \u00A2 \u00AC {empty} {empty} {empty} {empty} {empty} \u00A7 {bksp}", + "{tab} / ? \u00B0 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00AA", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00BA {enter}", + "{shift} {empty} {empty} {empty} \u20A2 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B0 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Punjabi.js b/app/Resources/public/assets/keyboard/layouts/ms-Punjabi.js new file mode 100644 index 0000000000..e8a5efdfa3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Punjabi.js @@ -0,0 +1,35 @@ +/* Punjabi Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdinpun.html + */ +jQuery.keyboard.layouts['ms-Punjabi'] = { + "name" : "ms-Punjabi", + "lang" : ["pa"], + "normal" : [ + "{empty} 1 2 3 4 5 6 7 8 9 0 - {empty} {bksp}", + "{tab} \u0a4c \u0a48 \u0a3e \u0a40 \u0a42 \u0a2c \u0a39 \u0a17 \u0a26 \u0a1c \u0a21 \u0a3c", + "\u0a4b \u0a47 \u0a4d \u0a3f \u0a41 \u0a2a \u0a30 \u0a15 \u0a24 \u0a1a \u0a1f {enter}", + "{shift} \u0a70 \u0a2e \u0a28 \u0a35 \u0a32 \u0a38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0a4d\u0a39 \u0a4d\u0a35 \u0a4d\u0a2f \u0a4d\u0a30 \u0a71 {empty} {empty} {empty} {empty} ( ) {empty} {empty} {bksp}", + "{tab} \u0a14 \u0a10 \u0a06 \u0a08 \u0a0a \u0a2d \u0a19 \u0a18 \u0a27 \u0a1d \u0a22 \u0a1e", + "\u0a13 \u0a0f \u0a05 \u0a07 \u0a09 \u0a2b \u0a5c \u0a16 \u0a25 \u0a1b \u0a20 {enter}", + "{shift} \u0a02 \u0a23 {empty} \u0a72 \u0a33 \u0a36 {empty} \u0964 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0a67 \u0a68 \u0a69 \u0a6a \u0a6b \u0a6c \u0a6d \u0a6e \u0a6f \u0a66 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0a5a {empty} \u0a5b \u0a5c {empty}", + "{empty} {empty} {empty} {empty} {empty} \u0a5e {empty} \u0a59 {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} \u0a73 {empty} {empty} {empty} \u0965 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \u0a74 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Romanian.js b/app/Resources/public/assets/keyboard/layouts/ms-Romanian.js new file mode 100644 index 0000000000..c86ebdb342 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Romanian.js @@ -0,0 +1,100 @@ +/* Romanian (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdro.html + */ +jQuery.keyboard.layouts['ms-Romanian (Legacy)'] = { + "name" : "ms-Romanian (Legacy)", + "lang" : ["ro"], + "normal" : [ + "] 1 2 3 4 5 6 7 8 9 0 + ' {bksp}", + "{tab} q w e r t z u i o p \u0103 \u00ee \u00e2", + "a s d f g h j k l \u015f \u0163 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "[ ! \" # \u00a4 % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0102 \u00ce \u00c2", + "A S D F G H J K L \u015e \u0162 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u00b7 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 {empty}", + "{empty} \u0111 \u0110 {empty} {empty} {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} \u001c {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Romanian (Programmers) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdropr.html + */ +jQuery.keyboard.layouts['ms-Romanian (Programmers)'] = { + "name" : "ms-Romanian (Programmers)", + "lang" : ["ro"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \u00e2 \u00df \u20ac {empty} \u021b {empty} {empty} \u00ee {empty} \u00a7 \u201e \u201d {empty}", + "\u0103 \u0219 \u0111 {empty} {empty} {empty} {empty} {empty} \u0142 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} \u00a9 {empty} {empty} {empty} {empty} \u00ab \u00bb {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u2013 \u00b1 {bksp}", + "{tab} \u00c2 {empty} {empty} {empty} \u021a {empty} {empty} \u00ce {empty} {empty} {empty} {empty} {empty}", + "\u0102 \u0218 \u0110 {empty} {empty} {empty} {empty} {empty} \u0141 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Romanian (Standard) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdrost.html + */ +jQuery.keyboard.layouts['ms-Romanian (Standard)'] = { + "name" : "ms-Romanian (Standard)", + "lang" : ["ro"], + "normal" : [ + "\u201e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p \u0103 \u00ee \u00e2", + "a s d f g h j k l \u0219 \u021b {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u201d ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P \u0102 \u00ce \u00c2", + "A S D F G H J K L \u0218 \u021a {enter}", + "{shift} | Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} \u00a7 [ ] \\", + "{empty} \u00df \u0111 {empty} {empty} {empty} {empty} {empty} \u0142 ; ' {enter}", + "{shift} {empty} {empty} {empty} \u00a9 {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u2013 \u00b1 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} \u0110 {empty} {empty} {empty} {empty} {empty} \u0141 : \" {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00ab \u00bb {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Russian.js b/app/Resources/public/assets/keyboard/layouts/ms-Russian.js new file mode 100644 index 0000000000..451254ba14 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Russian.js @@ -0,0 +1,43 @@ +/* Russian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdru.html + */ +jQuery.keyboard.layouts['ms-Russian'] = { + "name" : "ms-Russian", + "lang" : ["ru"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Russian (Typewriter) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdru1.html + */ +jQuery.keyboard.layouts['ms-Russian (Typewriter)'] = { + "name" : "ms-Russian (Typewriter)", + "lang" : ["ru"], + "normal" : [ + "| \u2116 - / \" : , . _ ? % ! ; {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a )", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} ) \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "+ 1 2 3 4 5 6 7 8 9 0 = \\ {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a (", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} ( \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Sami.js b/app/Resources/public/assets/keyboard/layouts/ms-Sami.js new file mode 100644 index 0000000000..15d783f4ff --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Sami.js @@ -0,0 +1,71 @@ +/* Sami Extended Finland-Sweden Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsmsfi.html + */ +jQuery.keyboard.layouts['ms-Sami Extended Finland-Sweden'] = { + "name" : "ms-Sami Extended Finland-Sweden", + "lang" : ["se"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} \u00e1 \u0161 e r t \u0167 u i o p \u00e5 \u014b \u0111", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} \u017e z \u010d c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00bd ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} \u00c1 \u0160 E R T \u0166 U I O P \u00c5 \u014a \u0110", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} \u017d Z \u010c C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "| {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {bksp}", + "{tab} q w \u20ac {empty} {empty} y {empty} \u00ef \u00f5 {empty} \u00a8 ~ '", + "\u00e2 {empty} {empty} {empty} \u01e7 \u01e5 {empty} \u01e9 {empty} \u00f8 \u00e6 {enter}", + "{shift} \u01ef \u0292 x {empty} {empty} {empty} {empty} \u00b5 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} Q W {empty} {empty} {empty} Y {empty} \u00cf \u00d5 {empty} ^ \u02c7 *", + "\u00c2 {empty} {empty} {empty} \u01e6 \u01e4 {empty} \u01e8 {empty} \u00d8 \u00c6 {enter}", + "{shift} \u01ee \u01b7 X {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sami Extended Norway Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsmsno.html + */ +jQuery.keyboard.layouts['ms-Sami Extended Norway'] = { + "name" : "ms-Sami Extended Norway", + "lang" : ["se"], + "normal" : [ + "| 1 2 3 4 5 6 7 8 9 0 + \\ {bksp}", + "{tab} \u00e1 \u0161 e r t \u0167 u i o p \u00e5 \u014b \u0111", + "a s d f g h j k l \u00f8 \u00e6 {enter}", + "{shift} \u017e z \u010d c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a7 ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} \u00c1 \u0160 E R T \u0166 U I O P \u00c5 \u014a \u0110", + "A S D F G H J K L \u00d8 \u00c6 {enter}", + "{shift} \u017d Z \u010c C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } {empty} \u00b4 {bksp}", + "{tab} q w \u20ac {empty} {empty} y {empty} \u00ef \u00f5 {empty} \u00a8 ~ '", + "\u00e2 {empty} {empty} {empty} \u01e7 \u01e5 {empty} \u01e9 {empty} \u00f6 \u00e4 {enter}", + "{shift} \u01ef \u0292 x {empty} {empty} {empty} {empty} \u00b5 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} Q W {empty} {empty} {empty} Y {empty} \u00cf \u00d5 {empty} ^ \u02c7 *", + "\u00c2 {empty} {empty} {empty} \u01e6 \u01e4 {empty} \u01e8 {empty} \u00d6 \u00c4 {enter}", + "{shift} \u01ee \u01b7 X {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Serbian.js b/app/Resources/public/assets/keyboard/layouts/ms-Serbian.js new file mode 100644 index 0000000000..2cbe122783 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Serbian.js @@ -0,0 +1,57 @@ +/* Serbian (Latin) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdycl.html + */ +jQuery.keyboard.layouts['ms-Serbian (Latin)'] = { + "name" : "ms-Serbian (Latin)", + "lang" : ["sr"], + "normal" : [ + "\u201a 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + "a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + "A S D F G H J K L \u010c \u0106 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 \u00a4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00df {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian (Cyrillic) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdycc.html + */ +jQuery.keyboard.layouts['ms-Serbian (Cyrillic)'] = { + "name" : "ms-erbian (Cyrillic)", + "lang" : ["sr"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + "\u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + "\u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Setswana.js b/app/Resources/public/assets/keyboard/layouts/ms-Setswana.js new file mode 100644 index 0000000000..ea2e3bd168 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Setswana.js @@ -0,0 +1,72 @@ +/* Setswana Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdnso.html + */ +jQuery.keyboard.layouts['ms-Setswana'] = { + "name" : "ms-Setswana", + "lang" : ["tn"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} \\ z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}", + "{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac", + "\u00e1 \u00df \u00f0 {empty} {empty} {empty} {empty} {empty} \u00f8 \u00b6 \u00b4 {enter}", + "{shift} {empty} \u00e6 {empty} \u00a9 {empty} {empty} \u00f1 \u00b5 \u00e7 \u0161 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {bksp}", + "{tab} \u00c4 \u00c5 \u00c9 {empty} \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 {empty} {empty} \u00a6", + "\u00c1 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} \u00d8 \u00b0 \u00a8 {enter}", + "{shift} {empty} \u00c6 {empty} \u00a2 {empty} {empty} \u00d1 {empty} \u00c7 \u0160 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + + +/* Setswana Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdnso1.html + */ +jQuery.keyboard.layouts['ms-Setswana (Sesotho sa Leboa)'] = { + "name" : "ms-Setswana (Sesotho sa Leboa)", + "lang" : ["tn"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}", + "{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac", + "\u00e1 \u00df \u00f0 {empty} {empty} {empty} {empty} {empty} \u00f8 \u00b6 \u00b4 {enter}", + "{shift} \u00e6 {empty} \u00a9 {empty} {empty} \u00f1 \u00b5 \u00e7 \u0161 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {bksp}", + "{tab} \u00c4 \u00c5 \u00c9 {empty} \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 {empty} {empty} \u00a6", + "\u00c1 \u00a7 \u00d0 {empty} {empty} {empty} {empty} {empty} \u00d8 \u00b0 \u00a8 {enter}", + "{shift} \u00c6 {empty} \u00a2 {empty} {empty} \u00d1 {empty} \u00c7 \u0160 {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Sinhala.js b/app/Resources/public/assets/keyboard/layouts/ms-Sinhala.js new file mode 100644 index 0000000000..f03be12f11 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Sinhala.js @@ -0,0 +1,64 @@ +/* Sinhala Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsn1.html + */ +jQuery.keyboard.layouts['ms-Sinhala'] = { + "name" : "ms-Sinhala", + "lang" : ["si"], + "normal" : [ + "\u0dca{ZWJ}\u0dbb 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0dd4 \u0d85 \u0dd0 \u0dbb \u0d92 \u0dc4 \u0db8 \u0dc3 \u0daf \u0da0 \u0da4 ; {ZWJ}", + "\u0dca \u0dd2 \u0dcf \u0dd9 \u0da7 \u0dba \u0dc0 \u0db1 \u0d9a \u0dad . {enter}", + "{shift} {ZWJ} ' \u0d82 \u0da2 \u0da9 \u0d89 \u0db6 \u0db4 \u0dbd \u0d9c / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0dbb\u0dca{ZWJ} ! @ $ $ % ^ & * ( ) _ + {bksp}", + "{tab} \u0dd6 \u0d8b \u0dd1 \u0d8d \u0d94 \u0dc1 \u0db9 \u0dc2 \u0db0 \u0da1 \u0da5 : {empty}", + "\u0ddf \u0dd3 \u0dd8 \u0dc6 \u0da8 \u0dca{ZWJ}\u0dba \u0dc5\u0dd4 \u0dab \u0d9b \u0dae , {enter}", + "{shift} {empty} \" \u0d83 \u0da3 \u0daa \u0d8a \u0db7 \u0db5 \u0dc5 \u0d9d / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "\u0df3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0df4 {enter}", + "{shift} {empty} {empty} \u0d9e \u0da6 \u0dac {empty} {empty} {empty} \u0d8f \u0d9f {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sinhala - Wij 9 Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsw09.html + */ +jQuery.keyboard.layouts['ms-Sinhala - Wij 9'] = { + "name" : "ms-Sinhala - Wij 9", + "lang" : ["si"], + "normal" : [ + "\u0dca{ZWJ}\u0dbb 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0dd4 \u0d85 \u0dd0 \u0dbb \u0d91 \u0dc4 \u0db8 \u0dc3 \u0daf \u0da0 \u0da4 ; \u0dca{ZWJ}", + "\u0dca \u0dd2 \u0dcf \u0dd9 \u0da7 \u0dba \u0dc0 \u0db1 \u0d9a \u0dad . {enter}", + "{shift} ' \u0d82 \u0da2 \u0da9 \u0d89 \u0db6 \u0db4 \u0dbd \u0d9c / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0dbb\u0dca{ZWJ} ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} \u0dd6 \u0d8b \u0dd1 \u0d8d \u0d94 \u0dc1 \u0db9 \u0dc2 \u0db0 \u0da1 \u0da5 : {empty}", + "\u0ddf \u0dd3 \u0dd8 \u0dc6 \u0da8 \u0dca{ZWJ}\u0dba \u0dc5\u0dd4 \u0dab \u0d9b \u0dae , {enter}", + "{shift} \" \u0d83 \u0da3 \u0daa \u0d8a \u0db7 \u0db5 \u0dc5 \u0d9d / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}", + "{tab} \u0dde \u0ddc \u0ddb \u0dda {empty} {empty} {empty} {empty} \u0db3 {empty} [ ] \\", + "\u0df3 \u0ddd {empty} {empty} {empty} {empty} {ZWJ} {empty} {empty} {empty} \u0df4 {enter}", + "{shift} {empty} \u0d9e \u0da6 \u0dac {empty} {ZWNJ} {empty} \u0d8f \u0d9f {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u00b9 {empty} {empty} \u00a3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } |", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Slovak.js b/app/Resources/public/assets/keyboard/layouts/ms-Slovak.js new file mode 100644 index 0000000000..4310de1227 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Slovak.js @@ -0,0 +1,57 @@ +/* Slovak Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsl.html + */ +jQuery.keyboard.layouts['ms-Slovak'] = { + "name" : "ms-Slovak", + "lang" : ["sk"], + "normal" : [ + "; + \u013e \u0161 \u010d \u0165 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fa \u00e4 \u0148", + "a s d f g h j k l \u00f4 \u00a7 {enter}", + "{shift} & y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Z U I O P / ( )", + "A S D F G H J K L \" ! {enter}", + "{shift} * Y X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} ' \u00f7 \u00d7 \u00a4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} < > # & @ { } {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Slovak (QWERTY) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsl1.html + */ +jQuery.keyboard.layouts['ms-Slovak (QWERTY)'] = { + "name" : "ms-Slovak (QWERTY)", + "lang" : ["sk"], + "normal" : [ + "; + \u013e \u0161 \u010d \u0165 \u017e \u00fd \u00e1 \u00ed \u00e9 = \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00fa \u00e4 \u0148", + "a s d f g h j k l \u00f4 \u00a7 {enter}", + "{shift} & z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 1 2 3 4 5 6 7 8 9 0 % \u02c7 {bksp}", + "{tab} Q W E R T Y U I O P / ( )", + "A S D F G H J K L \" ! {enter}", + "{shift} * Z X C V B N M ? : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} ' \u00f7 \u00d7 \u00a4", + "{empty} \u0111 \u0110 [ ] {empty} {empty} \u0142 \u0141 $ \u00df {enter}", + "{shift} < > # & @ { } {empty} < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Slovenian.js b/app/Resources/public/assets/keyboard/layouts/ms-Slovenian.js new file mode 100644 index 0000000000..287cc4e077 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Slovenian.js @@ -0,0 +1,28 @@ +/* Slovenian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdcr.html + */ +jQuery.keyboard.layouts['ms-Slovenian'] = { + "name" : "ms-Slovenian", + "lang" : ["sl"], + "normal" : [ + "\u00b8 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + "a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00a8 ! \" # $ % & / ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + "A S D F G H J K L \u010c \u0106 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} ~ \u02c7 ^ \u02d8 \u00b0 \u02db ` \u02d9 \u00b4 \u02dd \u00a8 \u00b8 {bksp}", + "{tab} \\ | \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00f7 \u00d7 \u00a4", + "{empty} {empty} {empty} [ ] {empty} {empty} \u0142 \u0141 {empty} \u00df {enter}", + "{shift} {empty} {empty} {empty} {empty} @ { } \u00a7 < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Sorbian.js b/app/Resources/public/assets/keyboard/layouts/ms-Sorbian.js new file mode 100644 index 0000000000..9bed5cb747 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Sorbian.js @@ -0,0 +1,86 @@ +/* Sorbian Standard Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsors1.html + */ +jQuery.keyboard.layouts['ms-Sorbian Standard'] = { + "name" : "ms-Sorbian Standard", + "lang" : ["wen", "dsb", "hsb"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fc + #", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00dc * '", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} \u00b2 \u00b3 {empty} {empty} {empty} { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sorbian Extended Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsorex.html + */ +jQuery.keyboard.layouts['ms-Sorbian Extended'] = { + "name" : "ms-Sorbian Extended", + "lang" : ["wen", "dsb", "hsb"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fc + \u0142", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00dc * \u0141", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00bb \u00ab \u201e \u201a \u2018 \u201c { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ #", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Sorbian Standard (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsorst.html + */ +jQuery.keyboard.layouts['ms-Sorbian Standard (Legacy)'] = { + "name" : "ms-Sorbian Standard (Legacy)", + "lang" : ["wen", "dsb", "hsb"], + "normal" : [ + "^ 1 2 3 4 5 6 7 8 9 0 \u00df \u00b4 {bksp}", + "{tab} q w e r t z u i o p \u00fc + \u0142", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < y x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00b0 ! \" \u00a7 $ % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00dc * \u0141", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Y X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00bb \u00ab \u201e \u201a \u2018 \u201c { [ ] } \\ {empty} {bksp}", + "{tab} @ {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~ #", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Spanish.js b/app/Resources/public/assets/keyboard/layouts/ms-Spanish.js new file mode 100644 index 0000000000..a70f741495 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Spanish.js @@ -0,0 +1,57 @@ +/* Spanish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsp.html + */ +jQuery.keyboard.layouts['ms-Spanish'] = { + "name" : "ms-Spanish", + "lang" : ["es"], + "normal" : [ + "\u00BA 1 2 3 4 5 6 7 8 9 0 ' \u00A1 {bksp}", + "{tab} q w e r t y u i o p ` +", + "a s d f g h j k l \u00F1 \u00B4 \u00E7 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00AA ! \" \u00B7 $ % & / ( ) = ? \u00BF {bksp}", + "{tab} Q W E R T Y U I O P ^ *", + "A S D F G H J K L \u00D1 \u00A8 \u00C7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\\ | @ # ~ \u20AC \u00AC {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Spanish Variation Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdes.html + */ +jQuery.keyboard.layouts['ms-Spanish Variation'] = { + "name" : "ms-Spanish Variation", + "lang" : ["es"], + "normal" : [ + "' 1 2 3 4 5 6 7 8 9 0 - \u00A8 {bksp}", + "{tab} q w e r t y u i o p \u00F7 `", + "a s d f g h j k l \u00F1 \u00E7 \u00B4 {enter}", + "{shift} < z x c v b n m , . = {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B7 \u00AA \" / ( ) \u00A1 ! \u00BF ? \u20A7 + \u00A8 {bksp}", + "{tab} Q W E R T Y U I O P \u00D7 `", + "A S D F G H J K L \u00D1 \u00C7 \u00B4 {enter}", + "{shift} > Z X C V B N M ; : % {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\\ | @ # \u00BC \u00BD \u00AC _ # \u00A7 \\ * ~ {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "$ & @ [ ] | \u00A3 \u00B1 {empty} ~ { } {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ^ {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Swedish-Sami.js b/app/Resources/public/assets/keyboard/layouts/ms-Swedish-Sami.js new file mode 100644 index 0000000000..c2ad148fd5 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Swedish-Sami.js @@ -0,0 +1,35 @@ +/* Swedish with Sami Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdfi1.html + */ +jQuery.keyboard.layouts['ms-Swedish with Sami'] = { + "name" : "ms-Swedish with Sami", + "lang" : ["sv", "se"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00b4 {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u00a8 '", + "a s d f g h j k l \u00f6 \u00e4 {enter}", + "{shift} < z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00bd ! \" # \u00a4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00c5 ^ *", + "A S D F G H J K L \u00d6 \u00c4 {enter}", + "{shift} > Z X C V B N M ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00a3 $ \u20ac {empty} { [ ] } \\ {empty} {bksp}", + "{tab} \u00e2 {empty} \u20ac {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~ {empty}", + "\u00e1 \u0161 \u0111 \u01e5 \u01e7 \u021f {empty} \u01e9 {empty} \u00f8 \u00e6 {enter}", + "{shift} | \u017e {empty} \u010d \u01ef \u0292 \u014b \u00b5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u00c2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00cf \u00d5 {empty} {empty} {empty} {empty}", + "\u00c1 \u0160 \u0110 \u01e4 \u01e6 \u021e {empty} \u01e8 {empty} \u00d8 \u00c6 {enter}", + "{shift} {empty} \u017d {empty} \u010c \u01ee \u01b7 \u014a {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Swedish.js b/app/Resources/public/assets/keyboard/layouts/ms-Swedish.js new file mode 100644 index 0000000000..6e69e5fc67 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Swedish.js @@ -0,0 +1,64 @@ +/* Swedish Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsw.html + */ +jQuery.keyboard.layouts['ms-Swedish'] = { + "name" : "ms-Swedish", + "lang" : ["sv"], + "normal" : [ + "\u00A7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00F6 \u00E4 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00D6 \u00C4 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ~", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Swedish with Sami Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsw1.html + */ +jQuery.keyboard.layouts['ms-Swedish with Sami'] = { + "name" : "ms-Swedish with Sami", + "lang" : ["sv"], + "normal" : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u00B4 {bksp}", + "{tab} q w e r t y u i o p \u00E5 \u00A8", + "a s d f g h j k l \u00F6 \u00E4 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00BD ! \" # \u00A4 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Y U I O P \u00C5 ^", + "A S D F G H J K L \u00D6 \u00C4 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} @ \u00A3 $ \u20AC {empty} { [ ] } \\ {empty} {bksp}", + "{tab} \u00E2 {empty} \u20AC {empty} \u0167 {empty} {empty} \u00ef \u00f5 {empty} {empty} ~", + "\u00E1 \u0161 \u0111 \u01e5 \u01E7 \u021F {empty} \u01e9 {empty} \u00F8 \u00E6 {empty} {enter}", + "{shift} | \u017E {empty} \u010d \u01EF \u0292 \u014B \u00B5 {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} \u00C2 {empty} {empty} {empty} \u0166 {empty} {empty} \u00CF \u00D5 {empty} {empty} {empty}", + "\u00C1 \u0160 \u0110 \u01E4 \u01E6 \u021e {empty} \u01E8 {empty} \u00D8 \u00C6 {empty} {enter}", + "{shift} {empty} \u017D {empty} \u010C \u01EE \u01B7 \u014A {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Swiss-German.js b/app/Resources/public/assets/keyboard/layouts/ms-Swiss-German.js new file mode 100644 index 0000000000..0f0348e4cb --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Swiss-German.js @@ -0,0 +1,28 @@ +/* Swiss German Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsg.html + */ +jQuery.keyboard.layouts['ms-Swiss German'] = { + "name" : "ms-Swiss German", + "lang" : ["de", "sv"], + "normal" : [ + "\u00A7 1 2 3 4 5 6 7 8 9 0 ' ^ {bksp}", + "{tab} q w e r t z u i o p \u00FC \u00A8", + "a s d f g h j k l \u00F6 \u00E4 $ {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00B0 + \" * \u00E7 % & / ( ) = ? ` {bksp}", + "{tab} Q W E R T Z U I O P \u00E8 !", + "A S D F G H J K L \u00E9 \u00E0 \u00A3 {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00A6 @ # \u00B0 \u00A7 \u00AC | \u00A2 {empty} {empty} \u00B4 ~ {bksp}", + "{tab} {empty} {empty} \u20AC {empty} {empty} {empty} {empty} {empty} {empty} {empty} [ ]", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } {enter}", + "{shift} \\ {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Syriac.js b/app/Resources/public/assets/keyboard/layouts/ms-Syriac.js new file mode 100644 index 0000000000..b3e24de9d1 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Syriac.js @@ -0,0 +1,57 @@ +/* Syriac Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsyr1.html + */ +jQuery.keyboard.layouts['ms-Syriac'] = { + "name" : "ms-Syriac", + "lang" : ["syr"], + "normal" : [ + "\u070f 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0714 \u0728 \u0716 \u0729 \u0726 \u071c \u0725 \u0717 \u071e \u071a \u0713 \u0715 \u0706", + "\u072b \u0723 \u071d \u0712 \u0720 \u0710 \u072c \u0722 \u0721 \u071f \u071b {enter}", + "{shift} \u0706 ] [ \u0724 \u072a \u0727 \u0700 . \u0718 \u0719 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u032e ! \u030a \u0325 \u0749 \u2670 \u2671 \u070a \u00bb ) ( \u00ab + {bksp}", + "{tab} \u0730 \u0733 \u0736 \u073a \u073d \u0740 \u0741 \u0308 \u0304 \u0307 \u0303 \u074a :", + "\u0731 \u0734 \u0737 \u073b \u073e \u0711 \u0640 \u0324 \u0331 \u0323 \u0330 {enter}", + "{shift} : \u0732 \u0735 \u0738 \u073c \u073f \u0739 \u0742 \u060c \u061b / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0651 \u0701 \u0702 \u0703 \u0704 \u0705 \u0708 \u0709 \u070b \u070c \u070d \u250c \u2510 {bksp}", + "{tab} \u064e \u064b \u064f \u064c \u0653 \u0654 \u0747 \u0743 \u0745 \u032d {empty} {empty} {empty}", + "\u0650 \u064d {empty} \u0621 \u0655 \u0670 \u0748 \u0744 \u0746 {empty} {empty} {enter}", + "{shift} {empty} {empty} \u0652 {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Syriac Phonetic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdsyr2.html + */ +jQuery.keyboard.layouts['ms-Syriac Phonetic'] = { + "name" : "ms-Syriac Phonetic", + "lang" : ["syr"], + "normal" : [ + "\u070f 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0729 \u0718 \u0716 \u072a \u072c \u071d \u071c \u0725 \u0727 \u0726 ] [ \u0706", + "\u0710 \u0723 \u0715 \u0714 \u0713 \u0717 \u071b \u071f \u0720 \u071a \u071e {enter}", + "{shift} \u0706 \u0719 \u0728 \u0724 \u072b \u0712 \u0722 \u0721 \u0700 . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u032e ! \u030a \u0325 \u0749 \u2670 \u2671 \u070a \u00bb ) ( \u00ab + {bksp}", + "{tab} \u0730 \u0733 \u0736 \u073a \u073d \u0740 \u0741 \u0308 \u0304 \u0307 \u0303 \u074a :", + "\u0731 \u0734 \u0737 \u073b \u073e \u0711 \u0640 \u0324 \u0331 \u0323 \u0330 {enter}", + "{shift} : \u0732 \u0735 \u0738 \u073c \u073f \u0739 \u0742 \u060c \u061b / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0651 \u0701 \u0702 \u0703 \u0704 \u0705 \u0708 \u0709 \u070b \u070c \u070d \u250c \u2510 {bksp}", + "{tab} \u064e \u064b \u064f \u064c \u0653 \u0654 \u0747 \u0743 \u0745 \u032d {empty} {empty} {empty}", + "\u0650 \u064d {empty} \u0621 \u0655 \u0670 \u0748 \u0744 \u0746 {empty} {empty} {enter}", + "{shift} {empty} {empty} \u0652 {empty} {ZWJ} {ZWNJ} {LRM} {RLM} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Tajik.js b/app/Resources/public/assets/keyboard/layouts/ms-Tajik.js new file mode 100644 index 0000000000..91f9c99f01 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Tajik.js @@ -0,0 +1,21 @@ +/* Tajik Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtajik.html + */ +jQuery.keyboard.layouts['ms-Tajik'] = { + "name" : "ms-Tajik", + "lang" : ["tg"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 \u0493 \u04ef {bksp}", + "{tab} \u0439 \u049b \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u04b3 \u0437 \u0445 \u044a \\", + "\u0444 \u04b7 \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \\ \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u04e3 \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \" \u2116 ; % : ? * ( ) \u0492 \u04ee {bksp}", + "{tab} \u0419 \u049a \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u04b2 \u0417 \u0425 \u042a /", + "\u0424 \u04b6 \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u04e2 \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Tamil.js b/app/Resources/public/assets/keyboard/layouts/ms-Tamil.js new file mode 100644 index 0000000000..43091a6933 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Tamil.js @@ -0,0 +1,28 @@ +/* Tamil Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdintam.html + */ +jQuery.keyboard.layouts['ms-Tamil'] = { + "name" : "ms-Tamil", + "lang" : ["ta"], + "normal" : [ + "\u0bca 1 2 3 4 5 6 7 8 9 0 - {empty} {bksp}", + "{tab} \u0bcc \u0bc8 \u0bbe \u0bc0 \u0bc2 \u0baa \u0bb9 \u0b95 \u0ba4 \u0b9c \u0b9f \u0b9e", + "\u0bcb \u0bc7 \u0bcd \u0bbf \u0bc1 \u0baa \u0bb0 \u0b95 \u0ba4 \u0b9a \u0b9f {enter}", + "{shift} \u0bc6 {empty} \u0bae \u0ba8 \u0bb5 \u0bb2 \u0bb8 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0b92 {empty} {empty} {empty} {empty} {empty} \u0ba4\u0bcd\u0bb0 \u0b95\u0bcd\u0bb7 \u0bb7\u0bcd\u0bb0 {empty} {empty} \u0b83 {empty} {bksp}", + "{tab} \u0b94 \u0b90 \u0b86 \u0b88 \u0b8a \u0baa \u0b99 \u0b95 \u0ba4 \u0b9a \u0b9f \u0b9e", + "\u0b93 \u0b8f \u0b85 \u0b87 \u0b89 \u0baa \u0bb1 \u0b95 \u0ba4 \u0b9a \u0b9f {enter}", + "{shift} \u0b8e {empty} \u0ba3 \u0ba9 \u0bb4 \u0bb3 \u0bb7 \u0bb7 \u0bb8\u0bcd\u0bb0\u0bc0 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0be7 \u0be8 \u0be9 \u0bea \u0beb \u0bec \u0bed \u0bee \u0bef \u0bf0 \u0bf1 \u0bf2 {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Tatar.js b/app/Resources/public/assets/keyboard/layouts/ms-Tatar.js new file mode 100644 index 0000000000..9f628735d3 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Tatar.js @@ -0,0 +1,35 @@ +/* Tatar Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtat.html + */ +jQuery.keyboard.layouts['ms-Tatar'] = { + "name" : "ms-Tatar", + "lang" : ["tt"], + "normal" : [ + "\u04BB 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u04E9 \u0443 \u043A \u0435 \u043D \u0433 \u0448 \u04D9 \u0437 \u0445 \u04AF", + "\u0444 \u044B \u0432 \u0430 \u043F \u0440 \u043E \u043B \u0434 \u04A3 \u044D \\ {enter}", + "{shift} \u0491 \u044F \u0447 \u0441 \u043C \u0438 \u0442 \u0497 \u0431 \u044E . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u04BA ! \" \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u04E8 \u0423 \u041A \u0415 \u041D \u0413 \u0428 \u04D8 \u0417 \u0425 \u04AE", + "\u0424 \u042B \u0412 \u0410 \u041F \u0420 \u041E \u041B \u0414 \u04A2 \u042D / {enter}", + "{shift} \u0490 \u042F \u0427 \u0421 \u041C \u0418 \u0422 \u0496 \u0411 \u042E , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u0451 {empty} @ # $ {empty} {empty} [ ] { } {empty} {empty} {bksp}", + "{tab} {empty} \u0446 {empty} {empty} {empty} {empty} {empty} {empty} \u0449 {empty} {empty} \u044A", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0436 ' {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u044C < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u0401 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} \u0426 {empty} {empty} {empty} {empty} {empty} {empty} \u0429 {empty} {empty} \u042A", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0416 {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u042C {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Telugu.js b/app/Resources/public/assets/keyboard/layouts/ms-Telugu.js new file mode 100644 index 0000000000..2265f95d7b --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Telugu.js @@ -0,0 +1,35 @@ +/* Telugu Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdintel.html + */ +jQuery.keyboard.layouts['ms-Telugu'] = { + "name" : "ms-Telugu", + "lang" : ["te"], + "normal" : [ + "\u0c4a 1 2 3 4 5 6 7 8 9 0 - \u0c43 {bksp}", + "{tab} \u0c4c \u0c48 \u0c3e \u0c40 \u0c42 \u0c2c \u0c39 \u0c17 \u0c26 \u0c1c \u0c21 {empty}", + "\u0c4b \u0c47 \u0c4d \u0c3f \u0c41 \u0c2a \u0c30 \u0c15 \u0c24 \u0c1a \u0c1f {enter}", + "{shift} \u0c46 \u0c02 \u0c2e \u0c28 \u0c35 \u0c32 \u0c38 , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0c12 {empty} {empty} \u0c4d\u0c30 {empty} \u0c1c\u0c4d\u0c1e \u0c24\u0c4d\u0c30 \u0c15\u0c4d\u0c37 \u0c36\u0c4d\u0c30 ( ) \u0c03 \u0c0b {bksp}", + "{tab} \u0c14 \u0c10 \u0c06 \u0c08 \u0c0a \u0c2d \u0c19 \u0c18 \u0c27 \u0c1d \u0c22 \u0c1e", + "\u0c13 \u0c0f \u0c05 \u0c07 \u0c09 \u0c2b \u0c31 \u0c16 \u0c25 \u0c1b \u0c20 {enter}", + "{shift} \u0c0e \u0c01 \u0c23 \u0c28 {empty} \u0c33 \u0c36 \u0c37 {empty} / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u0c67 \u0c68 \u0c69 \u0c6a \u0c6b \u0c6c \u0c6d \u0c6e \u0c6f \u0c66 {empty} \u0c44 {bksp}", + "{tab} {empty} \u0c56 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} \u0c55 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0c60 {bksp}", + "{tab} {empty} {empty} {empty} \u0c61 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} \u0c0c {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Thai.js b/app/Resources/public/assets/keyboard/layouts/ms-Thai.js new file mode 100644 index 0000000000..512f7442a4 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Thai.js @@ -0,0 +1,87 @@ +/* Thai Kedmanee Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth0.html + */ +jQuery.keyboard.layouts['ms-Thai Kedmanee'] = { + "name" : "ms-Thai Kedmanee", + "lang" : ["th"], + "normal" : [ + "_ \u0E45 / - \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E15 \u0E08 \u0E02 \u0E0A {bksp}", + "{tab} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{shift} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {bksp}", + "{tab} \u0E50 \u0022 \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 , \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B . {enter}", + "{shift} ( ) \u0E09 \u0E2E \u0E3A \u0E4C ? \u0E12 \u0E2C \u0E26 {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Thai Kedmanee (non-ShiftLock) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth2.html + */ +jQuery.keyboard.layouts['ms-Thai Kedmanee (non-ShiftLock)'] = { + "name" : "ms-Thai Kedmanee (non-ShiftLock)", + "lang" : ["th"], + "normal" : [ + "_ \u0E45 / - \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E15 \u0E08 \u0E02 \u0E0A {bksp}", + "{tab} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{shift} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {bksp}", + "{tab} \u0E50 \u0022 \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 , \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B . {enter}", + "{shift} ( ) \u0E09 \u0E2E \u0E3A \u0E4C ? \u0E12 \u0E2C \u0E26 {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Thai Pattachote Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth1.html + */ +jQuery.keyboard.layouts['ms-Thai Pattachote'] = { + "name" : "ms-Thai Pattachote", + "lang" : ["th"], + "normal" : [ + "_ = \u0E52 \u0E53 \u0E54 \u0E55 \u0E39 \u0E57 \u0E58 \u0E59 \u0E50 \u0E51 \u0E56 {bksp}", + "{tab} \u0E47 \u0E15 \u0E22 \u0E2D \u0E23 \u0E48 \u0E14 \u0E21 \u0E27 \u0E41 \u0E43 \u0E0C \uF8C7", + "\u0E49 \u0E17 \u0E07 \u0E01 \u0E31 \u0E35 \u0E32 \u0E19 \u0E40 \u0E44 \u0E02 {enter}", + "{shift} \u0E1A \u0E1B \u0E25 \u0E2B \u0E34 \u0E04 \u0E2A \u0E30 \u0E08 \u0E1E {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0E3F + \u0022 / , ? \u0E38 _ . ( ) - % {bksp}", + "{tab} \u0E4A \u0E24 \u0E46 \u0E0D \u0E29 \u0E36 \u0E1D \u0E0B \u0E16 \u0E12 \u0E2F \u0E26 \u0E4D", + "\u0E4B \u0E18 \u0E33 \u0E13 \u0E4C \u0E37 \u0E1C \u0E0A \u0E42 \u0E06 \u0E11 {enter}", + "{shift} \u0E0E \u0E0F \u0E10 \u0E20 \u0E31 \u0E28 \u0E2E \u0E1F \u0E09 \u0E2C {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Thai Pattachote (non-ShiftLock) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdth3.html + */ +jQuery.keyboard.layouts['ms-Thai Pattachote (non-ShiftLock)'] = { + "name" : "ms-Thai Pattachote (non-ShiftLock)", + "lang" : ["th"], + "normal" : [ + "_ = \u0E52 \u0E53 \u0E54 \u0E55 \u0E39 \u0E57 \u0E58 \u0E59 \u0E50 \u0E51 \u0E56 {bksp}", + "{tab} \u0E47 \u0E15 \u0E22 \u0E2D \u0E23 \u0E48 \u0E14 \u0E21 \u0E27 \u0E41 \u0E43 \u0E0C \uF8C7", + "\u0E49 \u0E17 \u0E07 \u0E01 \u0E31 \u0E35 \u0E32 \u0E19 \u0E40 \u0E44 \u0E02 {enter}", + "{shift} \u0E1A \u0E1B \u0E25 \u0E2B \u0E34 \u0E04 \u0E2A \u0E30 \u0E08 \u0E1E {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0E3F + \u0022 / , ? \u0E38 _ . ( ) - % {bksp}", + "{tab} \u0E4A \u0E24 \u0E46 \u0E0D \u0E29 \u0E36 \u0E1D \u0E0B \u0E16 \u0E12 \u0E2F \u0E26 \u0E4D", + "\u0E4B \u0E18 \u0E33 \u0E13 \u0E4C \u0E37 \u0E1C \u0E0A \u0E42 \u0E06 \u0E11 {enter}", + "{shift} \u0E0E \u0E0F \u0E10 \u0E20 \u0E31 \u0E28 \u0E2E \u0E1F \u0E09 \u0E2C {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Tibetan.js b/app/Resources/public/assets/keyboard/layouts/ms-Tibetan.js new file mode 100644 index 0000000000..406f927da5 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Tibetan.js @@ -0,0 +1,35 @@ +/* Tibetan (PRC) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtiprc.html + */ +jQuery.keyboard.layouts['ms-Tibetan (PRC)'] = { + "name" : "ms-Tibetan (PRC)", + "lang" : ["bo"], + "normal" : [ + "\u0f68 \u0f21 \u0f22 \u0f23 \u0f24 \u0f25 \u0f26 \u0f27 \u0f28 \u0f29 \u0f20 \u0f67 \u0f5d {bksp}", + "{tab} \u0f45 \u0f46 \u0f7a \u0f62 \u0f4f \u0f61 \u0f74 \u0f72 \u0f7c \u0f55 \u0f59 \u0f5a \u0f5b", + "\u0f60 \u0f66 \u0f51 \u0f56 \u0f44 \u0f58 \u0f0b \u0f42 \u0f63 \u0f5e \u0f0d {enter}", + "{shift} \u0f5f \u0f64 \u0f40 \u0f41 \u0f54 \u0f53 m \u0f50 \u0f47 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0f01 \u0f2a \u0f2b \u0f2c \u0f2d \u0f2e \u0f2f \u0f30 \u0f31 \u0f32 \u0f33 \u0f3c \u0f3d {bksp}", + "{tab} \u0f15 \u0f16 \u0f17 \u0fbc \u0f4a \u0fbb \u0f18 \u0f19 \u0f1a \u0f1b \u0f1c \u0f1d \u0f1e", + "\u0f71 \u0f1f \u0f4c \u0f3e \u0f3f \u0fcf \u0f02 \u0f03 \u0f06 \u0f07 \u0f38 {enter}", + "{shift} \u0f34 \u0f65 \u0f69 \u0f87 \u0f86 \u0f4e M \u0f4b \u0f3a / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "\u0f00 \u0f76 \u0f77 \u0f78 \u0f79 \u0f73 \u0f09 \u0f0a \u0f0f \u0f10 \u0f12 \u0f0c \u0f13 {bksp}", + "{tab} \u0f89 \u0f88 \u0fbe \u0f6a \u0f9a \u0fbf \u0f75 \u0f73 \u0fc0 \u0fc1 \u0fc2 \u0fc3 \u0f5c", + "\u0fc4 \u0fc5 \u0f9c \u0f57 \u0fc6 \u0fc7 \u0fc8 \u0f43 \u0fc9 \u0fca \u0fcb {enter}", + "{shift} \u0fcc \u0fb5 \u0fb9 \u0f36 \u0f82 \u0f9e \u0f52 \u0f9b \u0f8b {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Turkish.js b/app/Resources/public/assets/keyboard/layouts/ms-Turkish.js new file mode 100644 index 0000000000..9eb6d69492 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Turkish.js @@ -0,0 +1,71 @@ +/* Turkish F Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtuf.html + */ +jQuery.keyboard.layouts['ms-Turkish F'] = { + "name" : "ms-Turkish F", + "lang" : ["tr"], + "normal" : [ + "+ 1 2 3 4 5 6 7 8 9 0 / - {bksp}", + "{tab} f g \u011F \u0131 o d r n h p q w", + "u i e a \u00FC t k m l y \u015F x {enter}", + "{shift} < j \u00F6 v c \u00E7 z s b . , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "* ! \u0022 ^ $ % & ' ( ) = ? _ {bksp}", + "{tab} F G \u011E I O D R N H P Q W", + "U \u0130 E A \u00DC T K M L Y \u015E X {enter}", + "{shift} > J \u00D6 V C \u00C7 Z S B : ; {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00AC \u00B9 \u00B2 # \u00BC \u00BD \u00BE { [ ] } \u005C | {bksp}", + "{tab} @ {empty} {empty} \u00B6 {empty} \u00A5 {empty} {empty} \u00F8 \u00A3 \u00A8 ~", + "\u00E6 \u00DF \u20AC {empty} {empty} {empty} {empty} {empty} {empty} \u00B4 {empty} ` {enter}", + "{shift} | \u00AB \u00BB \u00A2 {empty} {empty} {empty} \u00B5 \u00D7 \u00F7 \u00AD {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00A1 {empty} \u00B3 \u00A4 {empty} {empty} {empty} {empty} {empty} {empty} \u00BF {empty} {bksp}", + "{tab} {empty} {empty} {empty} \u00AE {empty} {empty} {empty} {empty} \u00D8 {empty} {empty} {empty}", + "\u00C6 \u00A7 {empty} \u00AA {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} \u00A6 < > \u00A9 {empty} {empty} {empty} \u00BA {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Turkish Q Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdtuq.html + */ +jQuery.keyboard.layouts['ms-Turkish Q'] = { + "name" : "ms-Turkish Q", + "lang" : ["tr"], + "normal" : [ + "\u0022 1 2 3 4 5 6 7 8 9 0 * - {bksp}", + "{tab} q w e r t y u \u0131 o p \u011F \u00FC", + "a s d f g h j k l \u015F i , {enter}", + "{shift} < z x c v b n m \u00F6 \u00E7 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00E9 ! ' ^ + % & / ( ) = ? _ {bksp}", + "{tab} Q W E R T Y U I O P \u011E \u00DC", + "A S D F G H J K L \u015E \u0130 ; {enter}", + "{shift} > Z X C V B N M \u00D6 \u00C7 : {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "< > \u00A3 # $ \u00BD {empty} { [ ] } \u005C | {bksp}", + "{tab} @ {empty} \u20AC {empty} {empty} {empty} {empty} i {empty} {empty} \u00A8 ~", + "\u00E6 \u00DF {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00B4 {empty} ` {enter}", + "{shift} | {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u0130 {empty} {empty} {empty} {empty}", + "\u00C6 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Turkmen.js b/app/Resources/public/assets/keyboard/layouts/ms-Turkmen.js new file mode 100644 index 0000000000..9cab0f5174 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Turkmen.js @@ -0,0 +1,21 @@ +/* Turkmen Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdturme.html + */ +jQuery.keyboard.layouts['ms-Turkmen'] = { + "name" : "ms-Turkmen", + "lang" : ["tk"], + "normal" : [ + "\u017e 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u00e4 w e r t y u i o p \u0148 \u00f6 \u015f", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z \u00fc \u00e7 \u00fd b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u017d ! @ # $ % \u2116 & * ( ) _ + {bksp}", + "{tab} \u00c4 W E R T Y U I O P \u0147 \u00d6 \u015e", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z \u00dc \u00c7 \u00dd B N M < > / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-US-Dvorak.js b/app/Resources/public/assets/keyboard/layouts/ms-US-Dvorak.js new file mode 100644 index 0000000000..2c46dc19f0 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-US-Dvorak.js @@ -0,0 +1,65 @@ +/* US-Dvorak Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbddv.html + */ +jQuery.keyboard.layouts['ms-US-Dvorak'] = { + "name" : "ms-US-Dvorak", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 [ ] {bksp}", + "{tab} ' , . p y f g c r l / = \u005C", + "a o e u i d h t n s - {enter}", + "{shift} ; q j k x b m w v z {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) { } {bksp}", + "{tab} \u0022 < > P Y F G C R L ? + |", + "A O E U I D H T N S _ {enter}", + "{shift} : Q J K X B M W V Z {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-Dvorak for left hand Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusl.html + */ +jQuery.keyboard.layouts['ms-US-Dvorak for left hand'] = { + "name" : "ms-US-Dvorak for left hand", + "lang" : ["en"], + "normal" : [ + "` [ ] / p f m l j 4 3 2 1 {bksp}", + "{tab} ; q b y u r s o . 6 5 = \u005C", + "- k c d t h e a z 8 7 {enter}", + "{shift} ' x g v w n i , 0 9 {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ { } ? P F M L J $ # @ ! {bksp}", + "{tab} : Q B Y U R S O > ^ % + |", + "_ K C D T H E A Z * & {enter}", + "{shift} \u0022 X G V W N I < ) ( {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-Dvorak for right hand Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusr.html + */ +jQuery.keyboard.layouts['ms-US-Dvorak for right hand'] = { + "name" : "ms-US-Dvorak for right hand", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 j l m f p / [ ] {bksp}", + "{tab} 5 6 q . o r s u y b ; = \u005C", + "7 8 z a e h t d c k - {enter}", + "{shift} 9 0 x , i n w v g ' {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ J L M F P ? { } {bksp}", + "{tab} % ^ Q > O R S U Y B : + |", + "& * Z A E H T D C K _ {enter}", + "{shift} ( ) X < I N W V G \u0022 {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-US-English.js b/app/Resources/public/assets/keyboard/layouts/ms-US-English.js new file mode 100644 index 0000000000..f467eb7d44 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-US-English.js @@ -0,0 +1,79 @@ +/* US English (Latin) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdus.html + */ +jQuery.keyboard.layouts['ms-US English (Latin)'] = { + "name" : "ms-US English (Latin)", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u005c", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US English (IBM Arabic 238_L) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusa.html + */ +jQuery.keyboard.layouts['ms-US English (IBM Arabic 238_L)'] = { + "name" : "ms-US English (IBM Arabic 238_L)", + "lang" : ["en"], + "normal" : [ + "< 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] `", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005C z x c v b n m , . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "> ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M , . ? {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* US-International Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdusx.html + */ +jQuery.keyboard.layouts['ms-US-International'] = { + "name" : "ms-US-International", + "lang" : ["en"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l ; ' \u005C {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { }", + "A S D F G H J K L : \u0022 | {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} \u00A1 \u00B2 \u00B3 \u00A4 \u20AC \u00BC \u00BD \u00BE \u2018 \u2019 \u00A5 \u00D7 {bksp}", + "{tab} \u00E4 \u00E5 \u00E9 \u00AE \u00FE \u00FC \u00FA \u00ED \u00F3 \u00F6 \u00AB \u00BB", + "\u00E1 \u00DF \u00F0 {empty} {empty} {empty} {empty} {empty} \u00F8 \u00B6 \u00B4 \u00AC {enter}", + "{shift} \u00E6 {empty} \u00A9 {empty} {empty} \u00F1 \u00B5 \u00E7 {empty} \u00BF {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} \u00B9 {empty} {empty} \u00A3 {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00F7 {bksp}", + "{tab} \u00C4 \u00C5 \u00C9 {empty} \u00DE \u00DC \u00DA \u00CD \u00D3 \u00D6 {empty} {empty}", + "\u00C1 \u00A7 \u00D0 {empty} {empty} {empty} {empty} {empty} \u00D8 \u00B0 \u00A8 \u00A6 {enter}", + "{shift} \u00C6 {empty} \u00A2 {empty} {empty} \u00D1 {empty} \u00C7 {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Ukrainian.js b/app/Resources/public/assets/keyboard/layouts/ms-Ukrainian.js new file mode 100644 index 0000000000..699e797c58 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Ukrainian.js @@ -0,0 +1,71 @@ +/* Ukrainian Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdur.html + */ +jQuery.keyboard.layouts['ms-Ukrainian'] = { + "name" : "ms-Ukrainian", + "lang" : ["uk"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u0457 \u005c", + "\u0444 \u0456 \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u0454 {enter}", + "{shift} \u0491 \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u0401 ! \u0022 \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u0407 /", + "\u0424 \u0406 \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u0404 {enter}", + "{shift} \u0490 \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0491 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0490 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Ukrainian (Enhanced) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdur1.html + */ +jQuery.keyboard.layouts['ms-Ukrainian (Enhanced)'] = { + "name" : "ms-Ukrainian (Enhanced)", + "lang" : ["uk"], + "normal" : [ + "' 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u0457 \u005c", + "\u0444 \u0456 \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u0454 {enter}", + "{shift} \u0491 \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u20b4 ! \u0022 \u2116 ; % : ? * ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u0407 /", + "\u0424 \u0406 \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u0404 {enter}", + "{shift} \u0490 \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0491 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} \u0490 {empty} {empty} {empty} {empty} {empty} {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-United-Kingdom.js b/app/Resources/public/assets/keyboard/layouts/ms-United-Kingdom.js new file mode 100644 index 0000000000..02f7f96be2 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-United-Kingdom.js @@ -0,0 +1,71 @@ +/* United Kingdom Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbduk.html + */ +jQuery.keyboard.layouts['ms-United Kingdom'] = { + "name" : "ms-United Kingdom", + "lang" : ["en-uk"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00ac ! \u0022 \u00a3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00a6 {empty} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00e9 {empty} {empty} {empty} \u00fa \u00ed \u00f3 {empty} {empty} {empty} {empty}", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} \u00c9 {empty} {empty} {empty} \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* United Kingdom Extended Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdukx.html + */ +jQuery.keyboard.layouts['ms-United Kingdom Extended'] = { + "name" : "ms-United Kingdom Extended", + "lang" : ["en-uk"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] #", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00ac ! \u0022 \u00a3 $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } ~", + "A S D F G H J K L : @ {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "\u00a6 {empty} \u00a8 {empty} \u20ac {empty} ^ {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} \u1e83 \u00e9 {empty} {empty} \u00fd \u00fa \u00ed \u00f3 {empty} {empty} {empty} ~", + "\u00e1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00b4 {enter}", + "{shift} {empty} {empty} {empty} \u00e7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} \u1e82 \u00c9 {empty} {empty} \u00dd \u00da \u00cd \u00d3 {empty} {empty} {empty} {empty}", + "\u00c1 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} ` {enter}", + "{shift} {empty} {empty} {empty} \u00c7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Urdu.js b/app/Resources/public/assets/keyboard/layouts/ms-Urdu.js new file mode 100644 index 0000000000..d41ea4a007 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Urdu.js @@ -0,0 +1,21 @@ +/* Urdu Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdurdu.html + */ +jQuery.keyboard.layouts['ms-Urdu'] = { + "name" : "ms-Urdu", + "lang" : ["ur"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0637 \u0635 \u06be \u062f \u0679 \u067e \u062a \u0628 \u062c \u062d ] [ \\", + "\u0645 \u0648 \u0631 \u0646 \u0644 \u06c1 \u0627 \u06a9 \u06cc \u061b ' {enter}", + "{shift} \\ \u0642 \u0641 \u06d2 \u0633 \u0634 \u063a \u0639 \u060c \u06d4 / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ \u066a ^ \u06d6 \u066d ) ( _ + {bksp}", + "{tab} \u0638 \u0636 \u0630 \u0688 \u062b \u0651 \u06c3 \u0640 \u0686 \u062e } { |", + "\u0698 \u0632 \u0691 \u06ba \u06c2 \u0621 \u0622 \u06af \u064a : \" {enter}", + "{shift} | {ZWJ} {ZWNJ} \u06d3 {LRM} \u0624 \u0626 {RLM} > < / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Uyghur.js b/app/Resources/public/assets/keyboard/layouts/ms-Uyghur.js new file mode 100644 index 0000000000..6b04aa5d2b --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Uyghur.js @@ -0,0 +1,43 @@ +/* Uyghur Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdughr1.html + */ +jQuery.keyboard.layouts['ms-Uyghur'] = { + "name" : "ms-Uyghur", + "lang" : ["ug"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0686 \u06cb \u06d0 \u0631 \u062a \u064a \u06c7 \u06ad \u0648 \u067e ] [ \u005c", + "\u06be \u0633 \u062f \u0627 \u06d5 \u0649 \u0642 \u0643 \u0644 \u061b ' {enter}", + "{shift} \u0632 \u0634 \u063a \u06c8 \u0628 \u0646 \u0645 \u060c . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00bb \u00ab |", + "{empty} {empty} \u0698 \u0641 \u06af \u062e \u062c \u06c6 \u0644\u0627 : \u0022 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} > < / {shift}", + "{accept} {space} {cancel}" + ] +}; + +/* Uyghur (Legacy) Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdughr.html + */ +jQuery.keyboard.layouts['ms-Uyghur (Legacy)'] = { + "name" : "ms-Uyghur (Legacy)", + "lang" : ["ug"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0686 \u06cb \u06d0 \u0631 \u062a \u064a \u06c7 \u06ad \u0648 \u067e ] [ \u005c", + "\u06be \u0633 \u062f \u0627 \u06d5 \u0649 \u0642 \u0643 \u0644 \u061b ' {enter}", + "{shift} \u0632 \u0634 \u063a \u06c8 \u0628 \u0646 \u0645 \u060c . / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ) ( _ + {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00bb \u00ab |", + "{empty} {empty} \u0698 \u06a7 \u06af \u062e \u062c \u06c6 \u0644\u0627 : \u0022 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} > < / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Uzbek-Cyrillic.js b/app/Resources/public/assets/keyboard/layouts/ms-Uzbek-Cyrillic.js new file mode 100644 index 0000000000..55c362eecf --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Uzbek-Cyrillic.js @@ -0,0 +1,21 @@ +/* Uzbek Cyrillic Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbduzb.html + */ +jQuery.keyboard.layouts['ms-Uzbek Cyrillic'] = { + "name" : "ms-Uzbek Cyrillic", + "lang" : ["uz"], + "normal" : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 \u0493 \u04b3 {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u045e \u0437 \u0445 \u044a \u005c", + "\u0444 \u049b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u005c \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u0401 ! \u0022 \u2116 ; % : ? * ( ) \u0492 \u04b2 {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u040e \u0417 \u0425 \u042a /", + "\u0424 \u049a \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} / \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Vietnamese.js b/app/Resources/public/assets/keyboard/layouts/ms-Vietnamese.js new file mode 100644 index 0000000000..dec4c18ed8 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Vietnamese.js @@ -0,0 +1,35 @@ +/* Vietnamese Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdvntc.html + */ +jQuery.keyboard.layouts['ms-Vietnamese'] = { + "name" : "ms-Vietnamese", + "lang" : ["vi"], + "normal" : [ + "` \u0103 \u00e2 \u00ea \u00f4 \u0300 \u0309 \u0303 \u0301 \u0323 \u0111 - \u20ab {bksp}", + "{tab} q w e r t y u i o p \u01b0 \u01a1 \u005c", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ \u0102 \u00c2 \u00ca \u00d4 \u0300 \u0309 \u0303 \u0301 \u0323 \u0110 _ + {bksp}", + "{tab} Q W E R T Y U I O P \u01af \u01a0 |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u005c", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Wolof.js b/app/Resources/public/assets/keyboard/layouts/ms-Wolof.js new file mode 100644 index 0000000000..e1accb5037 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Wolof.js @@ -0,0 +1,28 @@ +/* Wolof Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdwol.html + */ +jQuery.keyboard.layouts['ms-Wolof'] = { + "name" : "ms-Wolof", + "lang" : ["wo"], + "normal" : [ + "\u00e3 & \u00e9 \u0022 ' ( - \u00f1 _ \u014b \u00e0 ) = {bksp}", + "{tab} a z e r t y u i o p ^ \u00f3 *", + "q s d f g h j k l m \u00f9 {enter}", + "{shift} < w x c v b n , ; : / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "\u00c3 1 2 3 4 5 6 7 8 9 0 \u00c9 + {bksp}", + "{tab} A Z E R T Y U I O P \u00a8 \u00d3 \u00d1", + "Q S D F G H J K L M \u00c0 {enter}", + "{shift} > W X C V B N ? . / / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} ~ # { [ | ` \u005c ^ @ ] } {bksp}", + "{tab} {empty} {empty} \u20ac {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a4 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Yakut.js b/app/Resources/public/assets/keyboard/layouts/ms-Yakut.js new file mode 100644 index 0000000000..a5b89f0140 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Yakut.js @@ -0,0 +1,21 @@ +/* Yakut Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdyak.html + */ +jQuery.keyboard.layouts['ms-Yakut'] = { + "name" : "ms-Yakut", + "lang" : ["sah"], + "normal" : [ + "\u0022 ! \u043d\u044c \u0434\u044c \u04a5 \u0495 \u04e9 \u04bb \u04af ; : - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \u005c", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u0022 \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {space} {cancel}" + ], + "shift" : [ + "\u2116 ? \u041d\u044c \u0414\u044c \u04a4 \u0494 \u04e8 \u04ba \u04ae ( ) _ + {bksp}", + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u2116 \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e / {shift}", + "{accept} {space} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/ms-Yoruba.js b/app/Resources/public/assets/keyboard/layouts/ms-Yoruba.js new file mode 100644 index 0000000000..d81ca01989 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/ms-Yoruba.js @@ -0,0 +1,35 @@ +/* Yoruba Keyboard Layout + * generated from http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdyba.html + */ +jQuery.keyboard.layouts['ms-Yoruba'] = { + "name" : "ms-Yoruba", + "lang" : ["yo"], + "normal" : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] {empty}", + "a s d f g h j k l ; ' {enter}", + "{shift} \u005c z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "shift" : [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : \u0022 {enter}", + "{shift} | Z X C V B N M < > / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt" : [ + "{empty} {empty} {empty} {empty} {empty} \u20ac {empty} {empty} {empty} \u2018 \u2019 {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty}", + "\u1ecd\u0301 \u1ecd\u0300 {empty} {empty} {empty} {empty} {empty} \u1eb9\u0301 \u1eb9\u0300 \u00b6 {empty} {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {bksp}", + "{tab} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} \u00a6", + "\u1ecc\u0301 \u1ecc\u0300 {empty} {empty} {empty} {empty} {empty} \u1eb8\u0301 \u1eb8\u0300 {empty} \u00a8 {enter}", + "{shift} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/persian.js b/app/Resources/public/assets/keyboard/layouts/persian.js new file mode 100644 index 0000000000..9f93b34cf1 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/persian.js @@ -0,0 +1,43 @@ +/* Persian (Farsi) keyboard layouts +* translate by Majid Ramezani -> majid.r830@gmail.com +* --------------------------------------------------------------------------------------------------------- +* To use: +* Point to this js file into your page header: +* Initialize the keyboard using: $('input').keyboard({ layout: 'Persian' }); +* in select add - > "Persian (Farsi), persian, Persian", +* +* based on http://unicode-table.com/en/# +*/ + +jQuery.keyboard.layouts['Persian'] = { + 'name': 'Persian (Farsi)', + 'lang': ['fa'], + 'normal': [ + '~ \u06f1 \u06f2 \u06f3 \u06f4 \u06f5 \u06f6 \u06f7 \u06f8 \u06f9 \u06f0 - = {bksp}', + '{tab} \u0636 \u0635 \u062b \u0642 \u0641 \u063a \u0639 \u0647 \u062e \u062d \u062c \u0686 \u067e', + '{lock} \u0634 \u0633 \u06cc \u0628 \u0644 \u0627 \u062a \u0646 \u0645 \u0643 \u06af {enter}', + '{shift} \u0638 \u0637 \u0632 \u0698 \u0631 \u0630 \u062f \u0678 \u0648 . \u061f {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'shift': [ + '\u00a9 \u0021 \u0040 \u0023 \u0024 \u0025 \u005e \u0026 \u002a \u0028 \u0029 \u005f \u002b {bksp}', + '{tab} \u064b \u064c \u064d \u00ae \u060c \u061b \u002c \u005d \u005b \u007d \u007b \u00d7 \u00b1', + '{lock} \u064e \u064f \u0650 \u0651 \u06c0 \u0622 \u0640 \u00ab \u00bb : " {enter}', + '{shift} \u0629 \u064a \u00b0 \u0624 \u0625 \u0623 \u0621 \u003c \u003e \u00a6 \u00f7 {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt': [ + '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}', + '{tab} q w e r t y u i o p [ ] \\', + '{lock} a s d f g h j k l ; \' {enter}', + '{shift} z x c v b n m , . / {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ], + 'alt-shift': [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + '{tab} Q W E R T Y U I O P { } |', + '{lock} A S D F G H J K L : " {enter}', + '{shift} Z X C V B N M < > ? {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/polish.js b/app/Resources/public/assets/keyboard/layouts/polish.js new file mode 100644 index 0000000000..0096578e6b --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/polish.js @@ -0,0 +1,36 @@ +/* Polish keyboard layouts + * contains layout: 'polish-qwerty' + * Author: Piotr Roznicki + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'polish-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +jQuery.keyboard.layouts['polish-qwerty'] = { + 'name' : 'polish-qwerty', + 'lang' : ['pl'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \u00B0", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w \u0119 r t y \u20ac i \u00f3 p [ ] \u00B0", + '\u0105 \u015b d f g h j k \u0142 : " {enter}', + "{shift} \u017c \u017a \u0107 v b \u0144 m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/portuguese.js b/app/Resources/public/assets/keyboard/layouts/portuguese.js new file mode 100644 index 0000000000..6e2ad3e92c --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/portuguese.js @@ -0,0 +1,50 @@ +/* Portuguese (pt) keyboard layout + * contains layout: 'portuguese-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'portuguese-pt' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + + * Portuguese-pt layout by Luiz Castelo-Branco ( translations at Castelo-Branco . org ), based on: + * http://ascii-table.com/keyboard.php/163 and/with + * Unicode 6.2 from http://www.unicode.org/Public/6.2.0/charts/CodeCharts.pdf + +*/ + +// portuguese-pt +jQuery.keyboard.layouts['portuguese-qwerty'] = { + 'name' : 'portuguese-qwerty', + 'lang' : ['pt'], + 'normal' : [ + "\u005C 1 2 3 4 5 6 7 8 9 0 \u0027 \u00ab {bksp}", + "{tab} q w e r t y u i o p \u002b \u00b4", + "a s d f g h j k l \u00e7 \u00ba \u007e {enter}", + "{shift} \u003c z x c v b n m \u002c \u002e \u002d {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ], + 'shift' : [ + "\u007c \u0021 \u0022 \u0023 \u0024 \u0025 \u0026 \u002f \u0028 \u0029 \u003d \u003F \u00bb {bksp}", + "{tab} Q W E R T Y U I O P \u002a \u0060", + "A S D F G H J K L \u00c7 \u00aa \u005e {enter}", + "{shift} \u003e Z X C V B N M \u003b \u003a \u005f {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ], + // AltGr + 'alt' : [ + "\u005C 1 \u0040 \u00a3 \u00a7 \u20ac 6 \u007b \u005b \u005d \u007d \u0027 \u00ab {bksp}", + "{tab} q w \u20ac r t y u i o p \u0308 \u00b4", + "a s d f g h j k l \u00e7 \u00ba \u007e {enter}", + "{shift} \u003c z x c v b n m \u002c \u002e \u002d {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ], + 'alt-shift' : [ + "\u007c \u0021 \u0022 \u0023 \u0024 \u0025 \u0026 \u002f \u0028 \u0029 \u003d \u003F \u00bb {bksp}", + "{tab} Q W \u20ac R T Y U I O P \u0308 \u0060", + "A S D F G H J K L \u00c7 \u00aa \u005e {enter}", + "{shift} \u003e Z X C V B N M \u003b \u003a \u005f {shift}", + "{cancel} {space} {alt} {combo} {accept}" + ] + +}; diff --git a/app/Resources/public/assets/keyboard/layouts/romanian.js b/app/Resources/public/assets/keyboard/layouts/romanian.js new file mode 100644 index 0000000000..a3a521a089 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/romanian.js @@ -0,0 +1,45 @@ +/* Romanian keyboard layouts + * contains layout: Romanian National Standard SR 13392:2004 + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'romanian' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://en.wikipedia.org/wiki/Romanian_keyboard_layout for the actual (standard) layout. +More details http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdrost.html and http://ascii-table.com/keyboard.php/446 (for the actual codes)*/ + +/* Submitted July 2014 - Alex Florea */ + +jQuery.keyboard.layouts['romanian'] = { + 'normal' : [ + "\u201e 1 2 3 4 5 6 7 8 9 0 \u002d \u003d {bksp}", + "{tab} q w e r t y u i o p \u0103 \u00ee \u00e2", + "a s d f g h j k l \u0219 \u021b {enter}", + "{shift} \u005c z x c v b n m \u002c \u002e \u002f {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u201d \u0021 \u0040 \u0023 \u0024 \u0025 \u005e \u0026 \u002a \u0028 \u0029 \u005f \u002b {bksp}", + "{tab} Q W E R T Y U I O P \u0102 \u00ce \u00c2", + "A S D F G H J K L \u0218 \u021a {enter}", + "{shift} \u007c Z X C V B N M \u003b \u003a ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0060 \u0303 \u030c \u0302 \u0306 \u030a \u0328 \u0300 \u0307 \u0301 \u030b \u0308 \u0327 {bksp}", + "{tab} a z \u20ac r t y u i o p \u007b \u007d \u005c", + "a \u00df \u0111 f g h j k \u0142 \u003b \u0027 {enter}", + "{shift} \u005c z x \u00a9 v b n m \u003c \u003e \u002f {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u007e 1 2 3 4 5 6 7 8 9 0 \u2013 \u00b1 {bksp}", + "{tab} q w e r t y u i o p \u007b \u007d \u007c", + "a s \u0110 f g h j k \u0141 \u003a \u0022 {enter}", + "{shift} \u005c z x c v b n m \u00ab \u00bb \u002f {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], +}; diff --git a/app/Resources/public/assets/keyboard/layouts/russian.js b/app/Resources/public/assets/keyboard/layouts/russian.js new file mode 100644 index 0000000000..8229969e19 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/russian.js @@ -0,0 +1,76 @@ +/* Russian keyboard layouts + * contains layout: 'russian-qwerty' & 'russian-mac' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'russian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* Thanks to Yury Kotlyarov (https://github.com/yura) */ +jQuery.keyboard.layouts['russian-qwerty'] = { + 'name' : 'Russian-qwerty', + 'lang' : ['ru'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + 'A S D F G H J K L : " {enter}', + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0451 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \\", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '\u0401 ! " \u2116 ; \u20ac : ? * ( ) _ + {bksp}', + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a /", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e , {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts["russian-mac"] = { + 'name' : 'Russian-mac', + 'lang' : ['ru'], + "default": [ + "] 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} \u0439 \u0446 \u0443 \u043a \u0435 \u043d \u0433 \u0448 \u0449 \u0437 \u0445 \u044a \u0451", + "\u0444 \u044b \u0432 \u0430 \u043f \u0440 \u043e \u043b \u0434 \u0436 \u044d {enter}", + "{shift} \u044f \u0447 \u0441 \u043c \u0438 \u0442 \u044c \u0431 \u044e / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift: [ + '[ ! " \u2116 % : , . ; ( ) _ + {bksp}', + "{tab} \u0419 \u0426 \u0423 \u041a \u0415 \u041d \u0413 \u0428 \u0429 \u0417 \u0425 \u042a \u0401", + "\u0424 \u042b \u0412 \u0410 \u041f \u0420 \u041e \u041b \u0414 \u0416 \u042d {enter}", + "{shift} \u042f \u0427 \u0421 \u041c \u0418 \u0422 \u042c \u0411 \u042e ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt: [ + "] ! @ # $ % ^ & * ( ) \u2013 \u00bb {bksp}", + "{tab} \u0458 \u045f \u045c \u00ae \u2020 \u045a \u0453 \u0455 \u045e \u2018 \u201c \u044a \u0451", + "\u0192 \u044b \u045b \u00f7 \u00a9 } \u00b0 \u0459 \u2206 \u2026 \u044d {enter}", + "{shift} \u0452 \u2248 \u2260 \u00b5 \u0438 \u2122 ~ \u2264 \u2265 \u201c {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift": [ + "[ | \" \u00a3 \u20ac \u221e \u00ac \u00b6 \u221a ' ` \u2014 \u00ab {bksp}", + "{tab} \u0408 \u040f \u040c \u00ae \u2020 \u040a \u0403 \u0405 \u040e \u2019 \u201d \u042a \u0401 ", + "\u0192 \u042b \u040b \u00f7 \u00a9 { \u2022 \u0409 \u2206 \u2026 \u042d {enter}", + "{shift} \u0402 \u2248 \u2260 \u00b5 \u0418 \u2122 ~ < > \u201e {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/serbian.js b/app/Resources/public/assets/keyboard/layouts/serbian.js new file mode 100644 index 0000000000..32658d741d --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/serbian.js @@ -0,0 +1,131 @@ +/* Serbian keyboard layouts + * contains layout: 'sr-Cyrl' & 'sr' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'russian-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* Serbian Cyrillic Keyboard Layout (српски) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts["sr-Cyrl"] = { + 'name' : "Serbian Cyrillic (sr-Cyrl)", + 'lang' : ['sr'], + "default" : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + " \u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! " # $ % & / ( ) = ? * {bksp}', + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + " \u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} > \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "` 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + " \u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} < \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian Latin Keyboard Layout (Srpski) * generated from http://www.greywyvern.com/code/javascript/keyboard layouts */ +jQuery.keyboard.layouts.sr = { + 'name' : "Serbian Latin (sr)", + 'lang' : ['sr'], + "default" : [ + "\u00b8 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + " a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift : [ + '\u00a8 ! " # $ % & / ( ) = ? * {bksp}', + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + " A S D F G H J K L \u010c \u0106 {enter}", + "{shift} > Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt : [ + "\u00b8 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + " a s d f g h j k l \u010d \u0107 {enter}", + "{shift} < y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian Cyrillic Keyboard Layout (српски) for Mac */ +jQuery.keyboard.layouts["sr-Cyrl-mac"] = { + 'name' : "Serbian Cyrillic for Mac (sr-Cyrl)", + 'lang' : ['sr'], + "default" : [ + "< 1 2 3 4 5 6 7 8 9 0 ' + {bksp}", + "{tab} \u0459 \u045a \u0435 \u0440 \u0442 \u0437 \u0443 \u0438 \u043e \u043f \u0448 \u0452 \u0436", + " \u0430 \u0441 \u0434 \u0444 \u0433 \u0445 \u0458 \u043a \u043b \u0447 \u045b {enter}", + "{shift} \u0455 \u045f \u0446 \u0432 \u0431 \u043d \u043c , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift : [ + '> ! " # $ % & / ( ) = ? * {bksp}', + "{tab} \u0409 \u040a \u0415 \u0420 \u0422 \u0417 \u0423 \u0418 \u041e \u041f \u0428 \u0402 \u0416", + " \u0410 \u0421 \u0414 \u0424 \u0413 \u0425 \u0408 \u041a \u041b \u0427 \u040b {enter}", + "{shift} \u0405 \u040f \u0426 \u0412 \u0411 \u041d \u041c ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt : [ + "` \u2020 \u00b0 \u20ac \u201e \u2122 \u221e \u00a3 \u0490 \u00b6 \u2022 \u2013 = {bksp}", + "{tab} q w e r t y u i o p [ ] \u2018", + ' a s d f g h j k l ; " {enter}', + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ ! @ # \u201c % ^ & * ( ) \u2014 + {bksp}", + "{tab} Q W E R T Y U I O P { } \u2019", + " A S D F G H J K L : \u201d {enter}", + "{shift} Z X C V B N M < > ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* Serbian Latin Keyboard Layout (Srpski) for Mac */ +jQuery.keyboard.layouts["sr-mac"] = { + 'name' : "Serbian Latin for Mac (sr)", + 'lang' : ['sr'], + "default" : [ + "< 1 2 3 4 5 6 7 8 9 0 / + {bksp}", + "{tab} q w e r t z u i o p \u0161 \u0111 \u017e", + " a s d f g h j k l \u010d \u0107 {enter}", + "{shift} y x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + shift : [ + "> ! \" # $ % & ' ( ) = ? * {bksp}", + "{tab} Q W E R T Z U I O P \u0160 \u0110 \u017d", + " A S D F G H J K L \u010c \u0106 {enter}", + "{shift} Y X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + alt : [ + "` \u00a1 \u2122 \u00a3 \u00a2 \u221e \u00a7 \u00b6 \u2022 \u00aa \u00ba - \u2260 {bksp}", + "{tab} \u0153 \u2211 \u00b4 \u00ae \u2020 \u2014 \u00a8 ^ \u00f8 \u03c0 [ ] ", + "\u00e5 \u00df \u2202 \u0192 \u00a9 \u030f \u2206 \u0311 \u00ac \u2026 ^ {enter}", + "{shift} \u03a9 \u2248 \u00e7 \u221a \u222b ~ \u00b5 \u2264 \u2265 \u00f7 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + "alt-shift" : [ + "~ \u2044 @ \u2039 \u203a \u20ac \u0131 \u2013 \u00b0 \u00b7 \u201a _ \u00b1 {bksp}", + "{tab} \u0152 \u201e \u2030 \u201c \u2018 \u201d \u2019 \u00c9 \u00d8 \u220f { } |", + "\u00c5 \u00cd \u00ce \u00cf \u00cc \u00d3 \u00d4 \uf8ff \u00d2 \u00e6 \u00c6 {enter}", + "{shift} \u00ab \u00bb \u00c7 \u25ca \u00d1 \u02c6 \u00af \u00c8 \u02c7 \u00bf {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/spanish.js b/app/Resources/public/assets/keyboard/layouts/spanish.js new file mode 100644 index 0000000000..0eff35b14a --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/spanish.js @@ -0,0 +1,77 @@ +/* Spanish keyboard layouts + * contains layouts: 'spanish-qwerty' and 'spanish-qwerty-sp' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'spanish-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + * + * Spanish layouts by Paco Alcantara (https://github.com/pacoalcantara) + * Based on: http://ascii-table.com/keyboard.php/171 and http://ascii-table.com/keyboard.php/071-2 + */ +jQuery.keyboard.layouts['spanish-qwerty'] = { + 'name' : 'spanish-qwerty', + 'lang' : ['es'], + 'normal' : [ + "\u007c 1 2 3 4 5 6 7 8 9 0 \' \u00bf {bksp}", + "{tab} q w e r t y u i o p \u0301 +", + "a s d f g h j k l \u00f1 \u007b \u007d {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u00b0 ! \" # $ % & / ( ) = ? \u00a1 {bksp}", + "{tab} Q W E R T Y U I O P \u0308 *", + "A S D F G H J K L \u00d1 \u005b \u005d {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00ac 1 2 3 4 5 6 7 8 9 0 \\ \u00bf {bksp}", + "{tab} @ w e r t y u i o p \u0301 \u0303", + "a s d f g h j k l \u00f1 \u0302 \u0300 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u00b0 ! \" # $ % & / ( ) = ? \u00a1 {bksp}", + "{tab} Q W E R T Y U I O P \u0308 *", + "A S D F G H J K L \u00d1 \u005b \u005d {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +jQuery.keyboard.layouts['spanish-qwerty-sp'] = { + 'name' : 'spanish-qwerty-sp', + 'lang' : ['es'], + 'normal' : [ + "\u00ba 1 2 3 4 5 6 7 8 9 0 \' \u00a1 {bksp}", + "{tab} q w e r t y u i o p \u0300 +", + "a s d f g h j k l \u00f1 \u0301 \u00e7 {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u00aa ! \" \u00b7 $ % & / ( ) = ? \u00bf {bksp}", + "{tab} Q W E R T Y U I O P \u005e *", + "A S D F G H J K L \u00d1 \u0308 \u00c7 {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\\ \u007c @ # 4 5 \u00ac 7 8 9 0 \u0027 \u00a1 {bksp}", + "{tab} q w e r t y u i o p [ ]", + "a s d f g h j k l \u00f1 { } {enter}", + "{shift} \u007c z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u00aa ! \" \u00b7 $ % & / ( ) = ? \u00bf {bksp}", + "{tab} Q W E R T Y U I O P [ ]", + "A S D F G H J K L \u00d1 { } {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/swedish.js b/app/Resources/public/assets/keyboard/layouts/swedish.js new file mode 100644 index 0000000000..e8ca89a2da --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/swedish.js @@ -0,0 +1,63 @@ +/* Swedish keyboard layouts + * contains layout: 'swedish-qwerty' & 'swedish-dvorak' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'swedish-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* qwerty by Mika Perreri Korhonen (https://github.com/jouk0) - */ +jQuery.keyboard.layouts['swedish-qwerty'] = { + 'name' : 'swedish-qwerty', + 'lang' : ['sv'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u0301 {bksp}", + "{tab} q w e r t y u i o p \u00e5 \u0308", + "a s d f g h j k l \u00f6 \u00e4 ' {enter}", + "{shift} < z x c v b n m , . - {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00bd ! " # \u00a4 % & / ( ) = ? \u0300 {bksp}', + "{tab} Q W E R T Y U I O P \u00c5 \u0302", + "A S D F G H J K L \u00d6 \u00c4 * {enter}", + "{shift} > Z X C V B N M ; : _ {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '\u00a7 1 @ \u00a3 $ 5 6 { [ ] } \\ \u0301 {bksp}', + '{tab} q w € r t y u i o p \u00e5 \u0303', + "a s d f g h j k l \u00f6 \u00e4 ' {enter}", + '{shift} | z x c v b n \u00b5 , . - {shift}', + '{accept} {alt} {space} {alt} {cancel}' + ] +}; + +/* dvorak - from http://www.ludd.luth.se/~torger/se_dvorak.html */ +jQuery.keyboard.layouts['swedish-dvorak'] = { + 'name' : 'swedish-qwerty', + 'lang' : ['sv'], + 'normal' : [ + "\u00a7 1 2 3 4 5 6 7 8 9 0 + \u0301 {bksp}", + "{tab} \u00f6 \u00e5 \u00e4 p y f g c r l q \u00a8", + "a o e u i d h t n s - < {enter}", + "{shift} ' , . j k x b m w v z {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00bd ! " # \u00a4 % & / ( ) = ? ` {bksp}', + "{tab} \u00d6 \u00c5 \u00c4 P Y F G C R L Q ^", + "A O E U I D H T N S _ > {enter}", + "{shift} * ; : J K X B M W V Z {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00a7 1 @ \u00a3 $ 5 6 { [ ] } \\ \u00b4 {bksp}", + "{tab} \u00f6 \u00e5 \u00e4 p y f g c r l q ~", + "a o e u i d h t n s - | {enter}", + "{shift} ' , . j k x b m w v z {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/tamil.js b/app/Resources/public/assets/keyboard/layouts/tamil.js new file mode 100644 index 0000000000..8518da1f73 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/tamil.js @@ -0,0 +1,60 @@ +/* Tamil keyboard layouts + * contains layout: 'tamil-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'tamil-tamil99-mod' }); + * + * Copyright 2013, Muthiah Annamalai + * + * Author : Muthiah Annamalai + * + * This file derives from general keyboard jQuery plugin. + * You may reuse this file under MIT License + * + * Acknowledgements : Thamiza project contributors Mugunth, Sethu have reference implementations of + * of the keyboard + */ + +/* based on Tamil99 keyboard layout - modified Tamil 99 keyboard */ +jQuery.keyboard.layouts['tamil-tamil99-mod'] = { + 'name' : 'tamil-tamil99-mod', + 'lang' : ['ta'], + 'normal' : [ + /* ா ி ீ ு ூ ெ ே ை ொ ோ ௌ ஃ */ + "\u0BBE \u0BBF \u0BC0 \u0BC1 \u0BC2 \u0BC6 \u0BC7 \u0BC8 \u0BCA \u0BCB \u0BCC \u0B83 {bksp}", + /* ஆ ஈ ஊ ஐ ஏ ள ற ன ட ண ச ஞ \ */ + "{tab} \u0b86 \u0b88 \u0b8a \u0b90 \u0b8f \u0bb3 \u0bb1 \u0ba9 \u0b9f \u0ba3 \u0b9a \u0b9e ", + /* அ இ உ ் எ க ப ம த ந ய */ + "\u0b85 \u0b87 \u0b89 \u0bcd \u0b8e \u0b95 \u0baa \u0bae \u0ba4 \u0ba8 \u0baf {enter}", + /* ஔ ஒ ஓ வ ங ல ர , . ழ */ + "{shift} \u0b94 \u0b93 \u0b92 \u0bb5 \u0b99 \u0bb2 \u0bb0 , . \u0bb4 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + /* numeric key row */ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + /* sanskrit row */ + /* ஸ ஷ ஜ ஹ ஶ்ரீ க்ஷ */ + "{tab} \u0bb8 \u0bb7 \u0b9c \u0bb9 \u0bb6\u0bcd\u0bb0\u0bc0 \u0b95\u0bcd\u0bb7 \u0020 [ ] { } ", + /* ௹ ௺ ௸ ஃ \u0020 \u0020 \u0020 \" : ; \' {enter} */ + "\u0bf9 \u0bfa \u0bf8 \u0b83 \u0020 \u0020 \u0020 \" : ; \' {enter}", + /* ௳ ௴ ௵ ௶ ௷ */ + "{shift} \u0bf3 \u0bf4 \u0bf5 \u0bf6 \u0bf7 \u0020 / \u0020 \u0020 / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0060 1 2 3 4 5 6 7 8 9 0 - \u003D {bksp}", + "{tab} q w e r t y u i o p \u005B \u005D \u005C", + "a s d f g h j k l ; \u0027 {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u007E | @ # $ % \u00ac & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ! \u00a6 \u00a2", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M { } ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/thai.js b/app/Resources/public/assets/keyboard/layouts/thai.js new file mode 100644 index 0000000000..19c9292299 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/thai.js @@ -0,0 +1,43 @@ +/* Thai keyboard layouts + * contains layout: 'thai-qwerty' + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'thai-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/190 */ +jQuery.keyboard.layouts['thai-qwerty'] = { + 'name' : 'thai-qwerty', + 'lang' : ['th'], + 'normal' : [ + "\u005F \u0E45 \u002F \u002D \u0E20 \u0E16 \u0E38 \u0E36 \u0E04 \u0E05 \u0E08 \u0E02 \u0E0A {bksp}", + "{tab} \u0E46 \u0E44 \u0E33 \u0E1E \u0E30 \u0E31 \u0E35 \u0E23 \u0E19 \u0E22 \u0E1A \u0E25 \u0E03 ", + "\u0E1F \u0E2B \u0E01 \u0E14 \u0E40 \u0E49 \u0E48 \u0E32 \u0E2A \u0E27 \u0E07 {enter}", + "{shift} \u0E1C \u0E1B \u0E41 \u0E2D \u0E34 \u0E37 \u0E17 \u0E21 \u0E43 \u0E1D {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "% + \u0E51 \u0E52 \u0E53 \u0E54 \u0E39 \u0E3F \u0E55 \u0E56 \u0E57 \u0E58 \u0E59 {bksp}", + "{tab} \u0E50 \u0022 \u0E0E \u0E11 \u0E18 \u0E4D \u0E4A \u0E13 \u0E2F \u0E0D \u0E10 \u002C \u0E05", + "\u0E24 \u0E06 \u0E0F \u0E42 \u0E0C \u0E47 \u0E4B \u0E29 \u0E28 \u0E0B \u002E {enter}", + "{shift} ( ) \u0E09 \u0E2E \u0E3A \u0E4C \u003F \u0E12 \u0E2C \u0E26 {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0060 1 2 3 4 5 6 7 8 9 0 - \u003D {bksp}", + "{tab} q w e r t y u i o p \u005B \u005D \u005C", + "a s d f g h j k l ; \u0027 {enter}", + "{shift} z x c v b n m , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + "\u007E | @ # $ % \u00ac & * ( ) _ + {bksp}", + "{tab} Q W E R T Y U I O P ! \u00a6 \u00a2", + "A S D F G H J K L : \" {enter}", + "{shift} Z X C V B N M { } ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/turkish.js b/app/Resources/public/assets/keyboard/layouts/turkish.js new file mode 100644 index 0000000000..aa20f6b1c8 --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/turkish.js @@ -0,0 +1,65 @@ +/* Turkish keyboard layouts + * contains layout: 'turkish-q' & 'turkish-f' + * + * Contributor Baris Aydinoglu + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'turkish-q' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* from http://ascii-table.com/keyboard.php/179 */ +jQuery.keyboard.layouts['turkish-q'] = { + 'name' : 'turkish-q', + 'lang' : ['tr'], + 'normal' : [ + "\u0022 1 2 3 4 5 6 7 8 9 0 \u002a \u002d {bksp}", + "{tab} q w e r t y u \u0131 o p \u011f \u00fc", + "{lock} a s d f g h j k l \u015f \u0069 , {enter}", + "{shift} < z x c v b n m \u00f6 \u00e7 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '\u00e9 ! \u0027 \u0302 + % & / ( ) = ? \u005f {bksp}', + "{tab} Q W E R T Y U \u0049 O P \u011e \u00DC", + "{lock} A S D F G H J K L \u015e \u0130 ; {enter}", + "{shift} > Z X C V B N M \u00d6 \u00c7 : {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u0022 1 \u00a3 # $ \u00bd 6 { [ ] } \u005c \u002d {bksp}", + "{tab} @ w \u20ac r t y u \u0131 o p \u0308 \u0303", + "{lock} a s d f g h j k l \u0301 \u0069 \u0300 {enter}", + "{shift} | z x c v b n m \u00f6 \u00e7 . {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; + +/* from http://ascii-table.com/keyboard.php/440 */ +jQuery.keyboard.layouts['turkish-f'] = { + 'name' : 'turkish-f', + 'lang' : ['tr'], + 'normal' : [ + "\u002B \u0031 \u0032 \u0033 \u0034 \u0035 \u0036 \u0037 \u0038 \u0039 \u0030 \u002F \u002D {bksp}", + "{tab} \u0066 \u0067 \u011F \u0131 \u006F \u0064 \u0072 \u006E \u0068 \u0070 \u0071 \u0077", + "{lock} \u0075 \u0069 \u0065 \u0061 \u00FC \u0074 \u006B \u006D \u006C \u0079 \u015F \u0078 {enter}", + "{shift} \u003C \u006A \u00F6 \u0076 \u0063 \u00E7 \u007A \u0073 \u0062 \u002E \u002C {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + "\u002A \u0021 \u0022 \u0302 \u0024 \u0025 \u0026 \u0027 \u0028 \u0029 \u003D \u003F \u005F {bksp}", + "{tab} \u0046 \u0047 \u011E \u0049 \u004F \u0044 \u0052 \u004E \u0048 \u0050 \u0051 \u0057", + "{lock} \u0055 \u0130 \u0045 \u0041 \u00DC \u0054 \u004B \u004D \u004C \u0059 \u015E \u0058 {enter}", + "{shift} \u003E \u004A \u00D6 \u0056 \u0043 \u00C7 \u005A \u0053 \u0042 \u003A \u003B {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + "\u00AC \u00B9 \u00B2 \u0023 \u00BC \u00BD \u00BE \u007B \u005B \u005D \u007D \u005C \u002D {bksp}", + "{tab} \u0040 \u0067 \u011F \u0131 \u006F \u00A5 \u0072 \u006E \u0068 \u00A3 \u0308 \u0303", + "{lock} \u0075 \u00DF \u20AC \u0061 \u00FC \u0074 \u006B \u006D \u006C \u0301 \u015F \u0300 {enter}", + "{shift} \u007C \u00AB \u00BB \u0076 \u0063 \u00E7 \u007A \u0073 \u00D7 \u00F7 \u002C {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/layouts/vietnamese.js b/app/Resources/public/assets/keyboard/layouts/vietnamese.js new file mode 100644 index 0000000000..232a3ec9ed --- /dev/null +++ b/app/Resources/public/assets/keyboard/layouts/vietnamese.js @@ -0,0 +1,44 @@ +/* Vietnamese keyboard layouts + Telex key combinations (see https://github.com/Mottie/Keyboard/pull/136) + * contains layout: 'vietnamese-qwerty' + * Vinh Can Code: tbvinh@gmail.com + * + * To use: + * Point to this js file into your page header: + * Initialize the keyboard using: $('input').keyboard({ layout: 'vietnamese-qwerty' }); + * + * license for this file: WTFPL, unless the source layout site has a problem with me using them as a reference + */ + +/* based on http://ascii-table.com/keyboard.php/461 */ +jQuery.keyboard.layouts['vietnamese-qwerty'] = { + 'name' : 'vietnamese-qwerty', + 'lang' : ['vi'], + 'normal' : [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "{tab} q w e r t y u i o p [ ] \\", + "a s d f g h j k l ; ' {enter}", + "{shift} z x c v b n m < > , . / {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'shift' : [ + '~ ! @ # $ % ^ & * ( ) _ + {bksp}', + "{tab} Q W E R T Y U I O P { } |", + "A S D F G H J K L : ' {enter}", + "{shift} Z X C V B N M < > ; : ? {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt' : [ + '{empty} \u0103 \u00e2 \u00ea \u00f4 {empty} \u031b {empty} {empty} {empty} \u0111 \u002d \u20ab {bksp}', + "{tab} {empty} {empty} {empty} {empty} {empty} \u00ff {empty} {empty} \u0153 {empty} \u01b0 \u01a1 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } \u0302 {enter}", + "{shift} {empty} {empty} \u00e7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ], + 'alt-shift' : [ + '{empty} \u0102 \u00c2 \u00ca \u00d4 {empty} {empty} {empty} {empty} {empty} \u0110 \u005f + {bksp}', + "{tab} {empty} {empty} {empty} {empty} {empty} \u0178 {empty} {empty} \u0152 {empty} \u01af \u01a0 {empty}", + "{empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} { } \u0308 {enter}", + "{shift} {empty} {empty} \u00c7 {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {empty} {shift}", + "{accept} {alt} {space} {alt} {cancel}" + ] +}; diff --git a/app/Resources/public/assets/keyboard/package.json b/app/Resources/public/assets/keyboard/package.json new file mode 100644 index 0000000000..9c4bb1547c --- /dev/null +++ b/app/Resources/public/assets/keyboard/package.json @@ -0,0 +1,69 @@ +{ + "name": "virtual-keyboard", + "title": "Keyboard", + "description": "Virtual Keyboard using jQuery UI", + "version": "1.28.7", + "author": { + "name": "Jeremy Satterfield", + "url": "https://github.com/jsatt" + }, + "maintainers": [ + { + "name": "Rob Garrison", + "url": "https://github.com/Mottie", + "email": "wowmotty@gmail.com" + } + ], + "license": "MIT", + "dependencies": { + "jquery": ">=3.3.1" + }, + "optionalDependencies": { + "jquery-ui": ">=1.12.1" + }, + "keywords": [ + "customizable", + "keyboard", + "ui", + "accessibility", + "osk", + "jquery-plugin" + ], + "homepage": "https://github.com/Mottie/Keyboard", + "demo": "http://mottie.github.io/Keyboard/", + "docs": "https://github.com/Mottie/Keyboard/wiki", + "bugs": "https://github.com/Mottie/Keyboard/issues", + "main": "dist/js/jquery.keyboard.js", + "files": [ + "dist/**/*" + ], + "repository": { + "type": "git", + "url": "git://github.com/Mottie/keyboard.git" + }, + "scripts": { + "authors": "bash tools/authors.sh", + "lint": "eslint *.js || true" + }, + "npmName": "virtual-keyboard", + "npmFileMap": [ + { + "basePath": "dist", + "files": [ + "**/*" + ] + } + ], + "devDependencies": { + "grunt": "^1.0.3", + "grunt-cli": "^1.3.1", + "grunt-contrib-clean": "^2.0.0", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-cssmin": "^3.0.0", + "grunt-contrib-jshint": "^2.0.0", + "grunt-contrib-qunit": "^3.0.1", + "grunt-contrib-uglify": "^4.0.0", + "grunt-contrib-watch": "^1.1.0" + } +} diff --git a/app/Resources/public/assets/keyboard/testing/qunit-2.2.0.css b/app/Resources/public/assets/keyboard/testing/qunit-2.2.0.css new file mode 100644 index 0000000000..90e1269f15 --- /dev/null +++ b/app/Resources/public/assets/keyboard/testing/qunit-2.2.0.css @@ -0,0 +1,436 @@ +/*! + * QUnit 2.2.0 + * https://qunitjs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-11T16:19Z + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header (excluding toolbar) */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699A4; + background-color: #0D3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: 400; + + border-radius: 5px 5px 0 0; +} + +#qunit-header a { + text-decoration: none; + color: #C2CCD1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #FFF; +} + +#qunit-banner { + height: 5px; +} + +#qunit-filteredTest { + padding: 0.5em 1em 0.5em 1em; + color: #366097; + background-color: #F4FF77; +} + +#qunit-userAgent { + padding: 0.5em 1em 0.5em 1em; + color: #FFF; + background-color: #2B81AF; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + + +/** Toolbar */ + +#qunit-testrunner-toolbar { + padding: 0.5em 1em 0.5em 1em; + color: #5E740B; + background-color: #EEE; +} + +#qunit-testrunner-toolbar .clearfix { + height: 0; + clear: both; +} + +#qunit-testrunner-toolbar label { + display: inline-block; +} + +#qunit-testrunner-toolbar input[type=checkbox], +#qunit-testrunner-toolbar input[type=radio] { + margin: 3px; + vertical-align: -2px; +} + +#qunit-testrunner-toolbar input[type=text] { + box-sizing: border-box; + height: 1.6em; +} + +.qunit-url-config, +.qunit-filter, +#qunit-modulefilter { + display: inline-block; + line-height: 2.1em; +} + +.qunit-filter, +#qunit-modulefilter { + float: right; + position: relative; + margin-left: 1em; +} + +.qunit-url-config label { + margin-right: 0.5em; +} + +#qunit-modulefilter-search { + box-sizing: border-box; + width: 400px; +} + +#qunit-modulefilter-search-container:after { + position: absolute; + right: 0.3em; + content: "\25bc"; + color: black; +} + +#qunit-modulefilter-dropdown { + /* align with #qunit-modulefilter-search */ + box-sizing: border-box; + width: 400px; + position: absolute; + right: 0; + top: 50%; + margin-top: 0.8em; + + border: 1px solid #D3D3D3; + border-top: none; + border-radius: 0 0 .25em .25em; + color: #000; + background-color: #F5F5F5; + z-index: 99; +} + +#qunit-modulefilter-dropdown a { + color: inherit; + text-decoration: none; +} + +#qunit-modulefilter-dropdown .clickable.checked { + font-weight: bold; + color: #000; + background-color: #D2E0E6; +} + +#qunit-modulefilter-dropdown .clickable:hover { + color: #FFF; + background-color: #0D3349; +} + +#qunit-modulefilter-actions { + display: block; + overflow: auto; + + /* align with #qunit-modulefilter-dropdown-list */ + font: smaller/1.5em sans-serif; +} + +#qunit-modulefilter-dropdown #qunit-modulefilter-actions > * { + box-sizing: border-box; + max-height: 2.8em; + display: block; + padding: 0.4em; +} + +#qunit-modulefilter-dropdown #qunit-modulefilter-actions > button { + float: right; + font: inherit; +} + +#qunit-modulefilter-dropdown #qunit-modulefilter-actions > :last-child { + /* insert padding to align with checkbox margins */ + padding-left: 3px; +} + +#qunit-modulefilter-dropdown-list { + max-height: 200px; + overflow-y: auto; + margin: 0; + border-top: 2px groove threedhighlight; + padding: 0.4em 0 0; + font: smaller/1.5em sans-serif; +} + +#qunit-modulefilter-dropdown-list li { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +#qunit-modulefilter-dropdown-list .clickable { + display: block; + padding-left: 0.15em; +} + + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 1em 0.4em 1em; + border-bottom: 1px solid #FFF; + list-style-position: inside; +} + +#qunit-tests > li { + display: none; +} + +#qunit-tests li.running, +#qunit-tests li.pass, +#qunit-tests li.fail, +#qunit-tests li.skipped, +#qunit-tests li.aborted { + display: list-item; +} + +#qunit-tests.hidepass { + position: relative; +} + +#qunit-tests.hidepass li.running, +#qunit-tests.hidepass li.pass { + visibility: hidden; + position: absolute; + width: 0; + height: 0; + padding: 0; + border: 0; + margin: 0; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li.skipped strong { + cursor: default; +} + +#qunit-tests li a { + padding: 0.5em; + color: #C2CCD1; + text-decoration: none; +} + +#qunit-tests li p a { + padding: 0.25em; + color: #6B6464; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #FFF; + + border-radius: 5px; +} + +.qunit-source { + margin: 0.6em 0 0.3em; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: 0.2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 0.5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + color: #374E0C; + background-color: #E0F2BE; + text-decoration: none; +} + +#qunit-tests ins { + color: #500; + background-color: #FFCACA; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: #000; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #FFF; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3C510C; + background-color: #FFF; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #FFF; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; +} + +#qunit-tests .fail { color: #000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: #008000; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + + +/*** Aborted tests */ +#qunit-tests .aborted { color: #000; background-color: orange; } +/*** Skipped tests */ + +#qunit-tests .skipped { + background-color: #EBECE9; +} + +#qunit-tests .qunit-todo-label, +#qunit-tests .qunit-skipped-label { + background-color: #F4FF77; + display: inline-block; + font-style: normal; + color: #366097; + line-height: 1.8em; + padding: 0 0.5em; + margin: -0.4em 0.4em -0.4em 0; +} + +#qunit-tests .qunit-todo-label { + background-color: #EEE; +} + +/** Result */ + +#qunit-testresult { + color: #2B81AF; + background-color: #D2E0E6; + + border-bottom: 1px solid #FFF; +} +#qunit-testresult .clearfix { + height: 0; + clear: both; +} +#qunit-testresult .module-name { + font-weight: 700; +} +#qunit-testresult-display { + padding: 0.5em 1em 0.5em 1em; + width: 85%; + float:left; +} +#qunit-testresult-controls { + padding: 0.5em 1em 0.5em 1em; + width: 10%; + float:left; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} diff --git a/app/Resources/public/assets/keyboard/testing/qunit-2.2.0.js b/app/Resources/public/assets/keyboard/testing/qunit-2.2.0.js new file mode 100644 index 0000000000..b399f417c6 --- /dev/null +++ b/app/Resources/public/assets/keyboard/testing/qunit-2.2.0.js @@ -0,0 +1,4841 @@ +/*! + * QUnit 2.2.0 + * https://qunitjs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-11T16:19Z + */ +(function (global$1) { + 'use strict'; + + global$1 = 'default' in global$1 ? global$1['default'] : global$1; + + var window = global$1.window; + var console = global$1.console; + var setTimeout = global$1.setTimeout; + var clearTimeout = global$1.clearTimeout; + + var document = window && window.document; + var navigator = window && window.navigator; + + var sessionStorage = function () { + var x = "qunit-test-string"; + try { + sessionStorage.setItem(x, x); + sessionStorage.removeItem(x); + return sessionStorage; + } catch (e) { + return undefined; + } + }(); + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + + + + + + + + + + + var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } else { + return Array.from(arr); + } + }; + + var toString = Object.prototype.toString; + var hasOwn = Object.prototype.hasOwnProperty; + var now = Date.now || function () { + return new Date().getTime(); + }; + + var defined = { + document: window && window.document !== undefined, + setTimeout: setTimeout !== undefined + }; + + // Returns a new Array with the elements that are in a but not in b + function diff(a, b) { + var i, + j, + result = a.slice(); + + for (i = 0; i < result.length; i++) { + for (j = 0; j < b.length; j++) { + if (result[i] === b[j]) { + result.splice(i, 1); + i--; + break; + } + } + } + return result; + } + + /** + * Determines whether an element exists in a given array or not. + * + * @method inArray + * @param {Any} elem + * @param {Array} array + * @return {Boolean} + */ + function inArray(elem, array) { + return array.indexOf(elem) !== -1; + } + + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + function objectValues(obj) { + var key, + val, + vals = is("array", obj) ? [] : {}; + for (key in obj) { + if (hasOwn.call(obj, key)) { + val = obj[key]; + vals[key] = val === Object(val) ? objectValues(val) : val; + } + } + return vals; + } + + function extend(a, b, undefOnly) { + for (var prop in b) { + if (hasOwn.call(b, prop)) { + if (b[prop] === undefined) { + delete a[prop]; + } else if (!(undefOnly && typeof a[prop] !== "undefined")) { + a[prop] = b[prop]; + } + } + } + + return a; + } + + function objectType(obj) { + if (typeof obj === "undefined") { + return "undefined"; + } + + // Consider: typeof null === object + if (obj === null) { + return "null"; + } + + var match = toString.call(obj).match(/^\[object\s(.*)\]$/), + type = match && match[1]; + + switch (type) { + case "Number": + if (isNaN(obj)) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Set": + case "Map": + case "Date": + case "RegExp": + case "Function": + case "Symbol": + return type.toLowerCase(); + } + + if ((typeof obj === "undefined" ? "undefined" : _typeof(obj)) === "object") { + return "object"; + } + } + + // Safe object type checking + function is(type, obj) { + return objectType(obj) === type; + } + + // Test for equality any JavaScript type. + // Authors: Philippe Rathé , David Chan + var equiv = (function () { + + // Value pairs queued for comparison. Used for breadth-first processing order, recursion + // detection and avoiding repeated comparison (see below for details). + // Elements are { a: val, b: val }. + var pairs = []; + + var getProto = Object.getPrototypeOf || function (obj) { + return obj.__proto__; + }; + + function useStrictEquality(a, b) { + + // This only gets called if a and b are not strict equal, and is used to compare on + // the primitive values inside object wrappers. For example: + // `var i = 1;` + // `var j = new Number(1);` + // Neither a nor b can be null, as a !== b and they have the same type. + if ((typeof a === "undefined" ? "undefined" : _typeof(a)) === "object") { + a = a.valueOf(); + } + if ((typeof b === "undefined" ? "undefined" : _typeof(b)) === "object") { + b = b.valueOf(); + } + + return a === b; + } + + function compareConstructors(a, b) { + var protoA = getProto(a); + var protoB = getProto(b); + + // Comparing constructors is more strict than using `instanceof` + if (a.constructor === b.constructor) { + return true; + } + + // Ref #851 + // If the obj prototype descends from a null constructor, treat it + // as a null prototype. + if (protoA && protoA.constructor === null) { + protoA = null; + } + if (protoB && protoB.constructor === null) { + protoB = null; + } + + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if (protoA === null && protoB === Object.prototype || protoB === null && protoA === Object.prototype) { + return true; + } + + return false; + } + + function getRegExpFlags(regexp) { + return "flags" in regexp ? regexp.flags : regexp.toString().match(/[gimuy]*$/)[0]; + } + + function isContainer(val) { + return ["object", "array", "map", "set"].indexOf(objectType(val)) !== -1; + } + + function breadthFirstCompareChild(a, b) { + + // If a is a container not reference-equal to b, postpone the comparison to the + // end of the pairs queue -- unless (a, b) has been seen before, in which case skip + // over the pair. + if (a === b) { + return true; + } + if (!isContainer(a)) { + return typeEquiv(a, b); + } + if (pairs.every(function (pair) { + return pair.a !== a || pair.b !== b; + })) { + + // Not yet started comparing this pair + pairs.push({ a: a, b: b }); + } + return true; + } + + var callbacks = { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + "symbol": useStrictEquality, + "date": useStrictEquality, + + "nan": function nan() { + return true; + }, + + "regexp": function regexp(a, b) { + return a.source === b.source && + + // Include flags in the comparison + getRegExpFlags(a) === getRegExpFlags(b); + }, + + // abort (identical references / instance methods were skipped earlier) + "function": function _function() { + return false; + }, + + "array": function array(a, b) { + var i, len; + + len = a.length; + if (len !== b.length) { + + // Safe and faster + return false; + } + + for (i = 0; i < len; i++) { + + // Compare non-containers; queue non-reference-equal containers + if (!breadthFirstCompareChild(a[i], b[i])) { + return false; + } + } + return true; + }, + + // Define sets a and b to be equivalent if for each element aVal in a, there + // is some element bVal in b such that aVal and bVal are equivalent. Element + // repetitions are not counted, so these are equivalent: + // a = new Set( [ {}, [], [] ] ); + // b = new Set( [ {}, {}, [] ] ); + "set": function set$$1(a, b) { + var innerEq, + outerEq = true; + + if (a.size !== b.size) { + + // This optimization has certain quirks because of the lack of + // repetition counting. For instance, adding the same + // (reference-identical) element to two equivalent sets can + // make them non-equivalent. + return false; + } + + a.forEach(function (aVal) { + + // Short-circuit if the result is already known. (Using for...of + // with a break clause would be cleaner here, but it would cause + // a syntax error on older Javascript implementations even if + // Set is unused) + if (!outerEq) { + return; + } + + innerEq = false; + + b.forEach(function (bVal) { + var parentPairs; + + // Likewise, short-circuit if the result is already known + if (innerEq) { + return; + } + + // Swap out the global pairs list, as the nested call to + // innerEquiv will clobber its contents + parentPairs = pairs; + if (innerEquiv(bVal, aVal)) { + innerEq = true; + } + + // Replace the global pairs list + pairs = parentPairs; + }); + + if (!innerEq) { + outerEq = false; + } + }); + + return outerEq; + }, + + // Define maps a and b to be equivalent if for each key-value pair (aKey, aVal) + // in a, there is some key-value pair (bKey, bVal) in b such that + // [ aKey, aVal ] and [ bKey, bVal ] are equivalent. Key repetitions are not + // counted, so these are equivalent: + // a = new Map( [ [ {}, 1 ], [ {}, 1 ], [ [], 1 ] ] ); + // b = new Map( [ [ {}, 1 ], [ [], 1 ], [ [], 1 ] ] ); + "map": function map(a, b) { + var innerEq, + outerEq = true; + + if (a.size !== b.size) { + + // This optimization has certain quirks because of the lack of + // repetition counting. For instance, adding the same + // (reference-identical) key-value pair to two equivalent maps + // can make them non-equivalent. + return false; + } + + a.forEach(function (aVal, aKey) { + + // Short-circuit if the result is already known. (Using for...of + // with a break clause would be cleaner here, but it would cause + // a syntax error on older Javascript implementations even if + // Map is unused) + if (!outerEq) { + return; + } + + innerEq = false; + + b.forEach(function (bVal, bKey) { + var parentPairs; + + // Likewise, short-circuit if the result is already known + if (innerEq) { + return; + } + + // Swap out the global pairs list, as the nested call to + // innerEquiv will clobber its contents + parentPairs = pairs; + if (innerEquiv([bVal, bKey], [aVal, aKey])) { + innerEq = true; + } + + // Replace the global pairs list + pairs = parentPairs; + }); + + if (!innerEq) { + outerEq = false; + } + }); + + return outerEq; + }, + + "object": function object(a, b) { + var i, + aProperties = [], + bProperties = []; + + if (compareConstructors(a, b) === false) { + return false; + } + + // Be strict: don't ensure hasOwnProperty and go deep + for (i in a) { + + // Collect a's properties + aProperties.push(i); + + // Skip OOP methods that look the same + if (a.constructor !== Object && typeof a.constructor !== "undefined" && typeof a[i] === "function" && typeof b[i] === "function" && a[i].toString() === b[i].toString()) { + continue; + } + + // Compare non-containers; queue non-reference-equal containers + if (!breadthFirstCompareChild(a[i], b[i])) { + return false; + } + } + + for (i in b) { + + // Collect b's properties + bProperties.push(i); + } + + // Ensures identical properties name + return typeEquiv(aProperties.sort(), bProperties.sort()); + } + }; + + function typeEquiv(a, b) { + var type = objectType(a); + + // Callbacks for containers will append to the pairs queue to achieve breadth-first + // search order. The pairs queue is also used to avoid reprocessing any pair of + // containers that are reference-equal to a previously visited pair (a special case + // this being recursion detection). + // + // Because of this approach, once typeEquiv returns a false value, it should not be + // called again without clearing the pair queue else it may wrongly report a visited + // pair as being equivalent. + return objectType(b) === type && callbacks[type](a, b); + } + + function innerEquiv(a, b) { + var i, pair; + + // We're done when there's nothing more to compare + if (arguments.length < 2) { + return true; + } + + // Clear the global pair queue and add the top-level values being compared + pairs = [{ a: a, b: b }]; + + for (i = 0; i < pairs.length; i++) { + pair = pairs[i]; + + // Perform type-specific comparison on any pairs that are not strictly + // equal. For container types, that comparison will postpone comparison + // of any sub-container pair to the end of the pair queue. This gives + // breadth-first search order. It also avoids the reprocessing of + // reference-equal siblings, cousins etc, which can have a significant speed + // impact when comparing a container of small objects each of which has a + // reference to the same (singleton) large object. + if (pair.a !== pair.b && !typeEquiv(pair.a, pair.b)) { + return false; + } + } + + // ...across all consecutive argument pairs + return arguments.length === 2 || innerEquiv.apply(this, [].slice.call(arguments, 1)); + } + + return innerEquiv; + })(); + + /** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ + var config = { + + // The queue of tests to run + queue: [], + + // Block until document ready + blocking: true, + + // By default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // By default, modify document.title when suite is done + altertitle: true, + + // HTML Reporter: collapse every test except the first failing test + // If false, all failing tests will be expanded + collapse: true, + + // By default, scroll to top of the page when suite is done + scrolltop: true, + + // Depth up-to which object will be dumped + maxDepth: 5, + + // When enabled, all tests must call expect() + requireExpects: false, + + // Placeholder for user-configurable form-exposed URL parameters + urlConfig: [], + + // Set of all modules. + modules: [], + + // Stack of nested modules + moduleStack: [], + + // The first unnamed module + currentModule: { + name: "", + tests: [], + childModules: [], + testsRun: 0 + }, + + callbacks: {}, + + // The storage module to use for reordering tests + storage: sessionStorage + }; + + // take a predefined QUnit.config and extend the defaults + var globalConfig = window && window.QUnit && window.QUnit.config; + + // only extend the global config if there is no QUnit overload + if (window && window.QUnit && !window.QUnit.version) { + extend(config, globalConfig); + } + + // Push a loose unnamed module to the modules collection + config.modules.push(config.currentModule); + + // Based on jsDump by Ariel Flesler + // http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html + var dump = (function () { + function quote(str) { + return "\"" + str.toString().replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\""; + } + function literal(o) { + return o + ""; + } + function join(pre, arr, post) { + var s = dump.separator(), + base = dump.indent(), + inner = dump.indent(1); + if (arr.join) { + arr = arr.join("," + s + inner); + } + if (!arr) { + return pre + post; + } + return [pre, inner + arr, base + post].join(s); + } + function array(arr, stack) { + var i = arr.length, + ret = new Array(i); + + if (dump.maxDepth && dump.depth > dump.maxDepth) { + return "[object Array]"; + } + + this.up(); + while (i--) { + ret[i] = this.parse(arr[i], undefined, stack); + } + this.down(); + return join("[", ret, "]"); + } + + function isArray(obj) { + return ( + + //Native Arrays + toString.call(obj) === "[object Array]" || + + // NodeList objects + typeof obj.length === "number" && obj.item !== undefined && (obj.length ? obj.item(0) === obj[0] : obj.item(0) === null && obj[0] === undefined) + ); + } + + var reName = /^function (\w+)/, + dump = { + + // The objType is used mostly internally, you can fix a (custom) type in advance + parse: function parse(obj, objType, stack) { + stack = stack || []; + var res, + parser, + parserType, + objIndex = stack.indexOf(obj); + + if (objIndex !== -1) { + return "recursion(" + (objIndex - stack.length) + ")"; + } + + objType = objType || this.typeOf(obj); + parser = this.parsers[objType]; + parserType = typeof parser === "undefined" ? "undefined" : _typeof(parser); + + if (parserType === "function") { + stack.push(obj); + res = parser.call(this, obj, stack); + stack.pop(); + return res; + } + return parserType === "string" ? parser : this.parsers.error; + }, + typeOf: function typeOf(obj) { + var type; + + if (obj === null) { + type = "null"; + } else if (typeof obj === "undefined") { + type = "undefined"; + } else if (is("regexp", obj)) { + type = "regexp"; + } else if (is("date", obj)) { + type = "date"; + } else if (is("function", obj)) { + type = "function"; + } else if (obj.setInterval !== undefined && obj.document !== undefined && obj.nodeType === undefined) { + type = "window"; + } else if (obj.nodeType === 9) { + type = "document"; + } else if (obj.nodeType) { + type = "node"; + } else if (isArray(obj)) { + type = "array"; + } else if (obj.constructor === Error.prototype.constructor) { + type = "error"; + } else { + type = typeof obj === "undefined" ? "undefined" : _typeof(obj); + } + return type; + }, + + separator: function separator() { + if (this.multiline) { + return this.HTML ? "
" : "\n"; + } else { + return this.HTML ? " " : " "; + } + }, + + // Extra can be a number, shortcut for increasing-calling-decreasing + indent: function indent(extra) { + if (!this.multiline) { + return ""; + } + var chr = this.indentChar; + if (this.HTML) { + chr = chr.replace(/\t/g, " ").replace(/ /g, " "); + } + return new Array(this.depth + (extra || 0)).join(chr); + }, + up: function up(a) { + this.depth += a || 1; + }, + down: function down(a) { + this.depth -= a || 1; + }, + setParser: function setParser(name, parser) { + this.parsers[name] = parser; + }, + + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + depth: 1, + maxDepth: config.maxDepth, + + // This is the list of parsers, to modify them, use dump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function error(_error) { + return "Error(\"" + _error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function _function(fn) { + var ret = "function", + + + // Functions never have name in IE + name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1]; + + if (name) { + ret += " " + name; + } + ret += "("; + + ret = [ret, dump.parse(fn, "functionArgs"), "){"].join(""); + return join(ret, dump.parse(fn, "functionCode"), "}"); + }, + array: array, + nodelist: array, + "arguments": array, + object: function object(map, stack) { + var keys, + key, + val, + i, + nonEnumerableProperties, + ret = []; + + if (dump.maxDepth && dump.depth > dump.maxDepth) { + return "[object Object]"; + } + + dump.up(); + keys = []; + for (key in map) { + keys.push(key); + } + + // Some properties are not always enumerable on Error objects. + nonEnumerableProperties = ["message", "name"]; + for (i in nonEnumerableProperties) { + key = nonEnumerableProperties[i]; + if (key in map && !inArray(key, keys)) { + keys.push(key); + } + } + keys.sort(); + for (i = 0; i < keys.length; i++) { + key = keys[i]; + val = map[key]; + ret.push(dump.parse(key, "key") + ": " + dump.parse(val, undefined, stack)); + } + dump.down(); + return join("{", ret, "}"); + }, + node: function node(_node) { + var len, + i, + val, + open = dump.HTML ? "<" : "<", + close = dump.HTML ? ">" : ">", + tag = _node.nodeName.toLowerCase(), + ret = open + tag, + attrs = _node.attributes; + + if (attrs) { + for (i = 0, len = attrs.length; i < len; i++) { + val = attrs[i].nodeValue; + + // IE6 includes all attributes in .attributes, even ones not explicitly + // set. Those have values like undefined, null, 0, false, "" or + // "inherit". + if (val && val !== "inherit") { + ret += " " + attrs[i].nodeName + "=" + dump.parse(val, "attribute"); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if (_node.nodeType === 3 || _node.nodeType === 4) { + ret += _node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + + // Function calls it internally, it's the arguments part of the function + functionArgs: function functionArgs(fn) { + var args, + l = fn.length; + + if (!l) { + return ""; + } + + args = new Array(l); + while (l--) { + + // 97 is 'a' + args[l] = String.fromCharCode(97 + l); + } + return " " + args.join(", ") + " "; + }, + + // Object calls it internally, the key part of an item in a map + key: quote, + + // Function calls it internally, it's the content of the function + functionCode: "[code]", + + // Node calls it internally, it's a html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal, + symbol: function symbol(sym) { + return sym.toString(); + } + }, + + // If true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + + // Indentation unit + indentChar: " ", + + // If true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return dump; + })(); + + var LISTENERS = Object.create(null); + var SUPPORTED_EVENTS = ["runStart", "suiteStart", "testStart", "assertion", "testEnd", "suiteEnd", "runEnd"]; + + /** + * Emits an event with the specified data to all currently registered listeners. + * Callbacks will fire in the order in which they are registered (FIFO). This + * function is not exposed publicly; it is used by QUnit internals to emit + * logging events. + * + * @private + * @method emit + * @param {String} eventName + * @param {Object} data + * @return {Void} + */ + function emit(eventName, data) { + if (objectType(eventName) !== "string") { + throw new TypeError("eventName must be a string when emitting an event"); + } + + // Clone the callbacks in case one of them registers a new callback + var originalCallbacks = LISTENERS[eventName]; + var callbacks = originalCallbacks ? [].concat(toConsumableArray(originalCallbacks)) : []; + + for (var i = 0; i < callbacks.length; i++) { + callbacks[i](data); + } + } + + /** + * Registers a callback as a listener to the specified event. + * + * @public + * @method on + * @param {String} eventName + * @param {Function} callback + * @return {Void} + */ + function on(eventName, callback) { + if (objectType(eventName) !== "string") { + throw new TypeError("eventName must be a string when registering a listener"); + } else if (!inArray(eventName, SUPPORTED_EVENTS)) { + var events = SUPPORTED_EVENTS.join(", "); + throw new Error("\"" + eventName + "\" is not a valid event; must be one of: " + events + "."); + } else if (objectType(callback) !== "function") { + throw new TypeError("callback must be a function when registering a listener"); + } + + if (!LISTENERS[eventName]) { + LISTENERS[eventName] = []; + } + + // Don't register the same callback more than once + if (!inArray(callback, LISTENERS[eventName])) { + LISTENERS[eventName].push(callback); + } + } + + // Register logging callbacks + function registerLoggingCallbacks(obj) { + var i, + l, + key, + callbackNames = ["begin", "done", "log", "testStart", "testDone", "moduleStart", "moduleDone"]; + + function registerLoggingCallback(key) { + var loggingCallback = function loggingCallback(callback) { + if (objectType(callback) !== "function") { + throw new Error("QUnit logging methods require a callback function as their first parameters."); + } + + config.callbacks[key].push(callback); + }; + + return loggingCallback; + } + + for (i = 0, l = callbackNames.length; i < l; i++) { + key = callbackNames[i]; + + // Initialize key collection of logging callback + if (objectType(config.callbacks[key]) === "undefined") { + config.callbacks[key] = []; + } + + obj[key] = registerLoggingCallback(key); + } + } + + function runLoggingCallbacks(key, args) { + var i, l, callbacks; + + callbacks = config.callbacks[key]; + for (i = 0, l = callbacks.length; i < l; i++) { + callbacks[i](args); + } + } + + // Doesn't support IE9, it will return undefined on these browsers + // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack + var fileName = (sourceFromStacktrace(0) || "").replace(/(:\d+)+\)?/, "").replace(/.+\//, ""); + + function extractStacktrace(e, offset) { + offset = offset === undefined ? 4 : offset; + + var stack, include, i; + + if (e && e.stack) { + stack = e.stack.split("\n"); + if (/^error$/i.test(stack[0])) { + stack.shift(); + } + if (fileName) { + include = []; + for (i = offset; i < stack.length; i++) { + if (stack[i].indexOf(fileName) !== -1) { + break; + } + include.push(stack[i]); + } + if (include.length) { + return include.join("\n"); + } + } + return stack[offset]; + } + } + + function sourceFromStacktrace(offset) { + var error = new Error(); + + // Support: Safari <=7 only, IE <=10 - 11 only + // Not all browsers generate the `stack` property for `new Error()`, see also #636 + if (!error.stack) { + try { + throw error; + } catch (err) { + error = err; + } + } + + return extractStacktrace(error, offset); + } + + var TestReport = function () { + function TestReport(name, suite, options) { + classCallCheck(this, TestReport); + + this.name = name; + this.suiteName = suite.name; + this.fullName = suite.fullName.concat(name); + this.runtime = 0; + this.assertions = []; + + this.skipped = !!options.skip; + this.todo = !!options.todo; + + this._startTime = 0; + this._endTime = 0; + + suite.pushTest(this); + } + + createClass(TestReport, [{ + key: "start", + value: function start(recordTime) { + if (recordTime) { + this._startTime = Date.now(); + } + + return { + name: this.name, + suiteName: this.suiteName, + fullName: this.fullName.slice() + }; + } + }, { + key: "end", + value: function end(recordTime) { + if (recordTime) { + this._endTime = Date.now(); + } + + return extend(this.start(), { + runtime: this.getRuntime(), + status: this.getStatus(), + errors: this.getFailedAssertions(), + assertions: this.getAssertions() + }); + } + }, { + key: "pushAssertion", + value: function pushAssertion(assertion) { + this.assertions.push(assertion); + } + }, { + key: "getRuntime", + value: function getRuntime() { + return this._endTime - this._startTime; + } + }, { + key: "getStatus", + value: function getStatus() { + if (this.skipped) { + return "skipped"; + } + + var testPassed = this.getFailedAssertions().length > 0 ? this.todo : !this.todo; + + if (!testPassed) { + return "failed"; + } else if (this.todo) { + return "todo"; + } else { + return "passed"; + } + } + }, { + key: "getFailedAssertions", + value: function getFailedAssertions() { + return this.assertions.filter(function (assertion) { + return !assertion.passed; + }); + } + }, { + key: "getAssertions", + value: function getAssertions() { + return this.assertions.slice(); + } + }]); + return TestReport; + }(); + + var unitSampler; + var focused = false; + var priorityCount = 0; + + function Test(settings) { + var i, l; + + ++Test.count; + + this.expected = null; + extend(this, settings); + this.assertions = []; + this.semaphore = 0; + this.usedAsync = false; + this.module = config.currentModule; + this.stack = sourceFromStacktrace(3); + this.steps = []; + + this.testReport = new TestReport(settings.testName, this.module.suiteReport, { + todo: settings.todo, + skip: settings.skip + }); + + // Register unique strings + for (i = 0, l = this.module.tests; i < l.length; i++) { + if (this.module.tests[i].name === this.testName) { + this.testName += " "; + } + } + + this.testId = generateHash(this.module.name, this.testName); + + this.module.tests.push({ + name: this.testName, + testId: this.testId + }); + + if (settings.skip) { + + // Skipped tests will fully ignore any sent callback + this.callback = function () {}; + this.async = false; + this.expected = 0; + } else { + this.assert = new Assert(this); + } + } + + Test.count = 0; + + function getNotStartedModules(startModule) { + var module = startModule, + modules = []; + + while (module && module.testsRun === 0) { + modules.push(module); + module = module.parentModule; + } + + return modules; + } + + Test.prototype = { + before: function before() { + var i, + startModule, + module = this.module, + notStartedModules = getNotStartedModules(module); + + for (i = notStartedModules.length - 1; i >= 0; i--) { + startModule = notStartedModules[i]; + startModule.stats = { all: 0, bad: 0, started: now() }; + emit("suiteStart", startModule.suiteReport.start(true)); + runLoggingCallbacks("moduleStart", { + name: startModule.name, + tests: startModule.tests + }); + } + + config.current = this; + + if (module.testEnvironment) { + delete module.testEnvironment.before; + delete module.testEnvironment.beforeEach; + delete module.testEnvironment.afterEach; + delete module.testEnvironment.after; + } + this.testEnvironment = extend({}, module.testEnvironment); + + this.started = now(); + emit("testStart", this.testReport.start(true)); + runLoggingCallbacks("testStart", { + name: this.testName, + module: module.name, + testId: this.testId, + previousFailure: this.previousFailure + }); + + if (!config.pollution) { + saveGlobal(); + } + }, + + run: function run() { + var promise; + + config.current = this; + + this.callbackStarted = now(); + + if (config.notrycatch) { + runTest(this); + return; + } + + try { + runTest(this); + } catch (e) { + this.pushFailure("Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + (e.message || e), extractStacktrace(e, 0)); + + // Else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if (config.blocking) { + internalRecover(this); + } + } + + function runTest(test) { + promise = test.callback.call(test.testEnvironment, test.assert); + test.resolvePromise(promise); + } + }, + + after: function after() { + checkPollution(); + }, + + queueHook: function queueHook(hook, hookName, hookOwner) { + var promise, + test = this; + return function runHook() { + if (hookName === "before") { + if (hookOwner.testsRun !== 0) { + return; + } + + test.preserveEnvironment = true; + } + + if (hookName === "after" && hookOwner.testsRun !== numberOfTests(hookOwner) - 1) { + return; + } + + config.current = test; + if (config.notrycatch) { + callHook(); + return; + } + try { + callHook(); + } catch (error) { + test.pushFailure(hookName + " failed on " + test.testName + ": " + (error.message || error), extractStacktrace(error, 0)); + } + + function callHook() { + promise = hook.call(test.testEnvironment, test.assert); + test.resolvePromise(promise, hookName); + } + }; + }, + + // Currently only used for module level hooks, can be used to add global level ones + hooks: function hooks(handler) { + var hooks = []; + + function processHooks(test, module) { + if (module.parentModule) { + processHooks(test, module.parentModule); + } + if (module.testEnvironment && objectType(module.testEnvironment[handler]) === "function") { + hooks.push(test.queueHook(module.testEnvironment[handler], handler, module)); + } + } + + // Hooks are ignored on skipped tests + if (!this.skip) { + processHooks(this, this.module); + } + return hooks; + }, + + finish: function finish() { + config.current = this; + if (config.requireExpects && this.expected === null) { + this.pushFailure("Expected number of assertions to be defined, but expect() was " + "not called.", this.stack); + } else if (this.expected !== null && this.expected !== this.assertions.length) { + this.pushFailure("Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack); + } else if (this.expected === null && !this.assertions.length) { + this.pushFailure("Expected at least one assertion, but none were run - call " + "expect(0) to accept zero assertions.", this.stack); + } + + var i, + module = this.module, + moduleName = module.name, + testName = this.testName, + skipped = !!this.skip, + todo = !!this.todo, + bad = 0, + storage = config.storage; + + this.runtime = now() - this.started; + + config.stats.all += this.assertions.length; + module.stats.all += this.assertions.length; + + for (i = 0; i < this.assertions.length; i++) { + if (!this.assertions[i].result) { + bad++; + config.stats.bad++; + module.stats.bad++; + } + } + + notifyTestsRan(module); + + // Store result when possible + if (storage) { + if (bad) { + storage.setItem("qunit-test-" + moduleName + "-" + testName, bad); + } else { + storage.removeItem("qunit-test-" + moduleName + "-" + testName); + } + } + + emit("testEnd", this.testReport.end(true)); + runLoggingCallbacks("testDone", { + name: testName, + module: moduleName, + skipped: skipped, + todo: todo, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + runtime: skipped ? 0 : this.runtime, + + // HTML Reporter use + assertions: this.assertions, + testId: this.testId, + + // Source of Test + source: this.stack + }); + + if (module.testsRun === numberOfTests(module)) { + emit("suiteEnd", module.suiteReport.end(true)); + runLoggingCallbacks("moduleDone", { + name: module.name, + tests: module.tests, + failed: module.stats.bad, + passed: module.stats.all - module.stats.bad, + total: module.stats.all, + runtime: now() - module.stats.started + }); + } + + config.current = undefined; + }, + + preserveTestEnvironment: function preserveTestEnvironment() { + if (this.preserveEnvironment) { + this.module.testEnvironment = this.testEnvironment; + this.testEnvironment = extend({}, this.module.testEnvironment); + } + }, + + queue: function queue() { + var priority, + previousFailCount, + test = this; + + if (!this.valid()) { + return; + } + + function run() { + + // Each of these can by async + synchronize([function () { + test.before(); + }, test.hooks("before"), function () { + test.preserveTestEnvironment(); + }, test.hooks("beforeEach"), function () { + test.run(); + }, test.hooks("afterEach").reverse(), test.hooks("after").reverse(), function () { + test.after(); + }, function () { + test.finish(); + }]); + } + + previousFailCount = config.storage && +config.storage.getItem("qunit-test-" + this.module.name + "-" + this.testName); + + // Prioritize previously failed tests, detected from storage + priority = config.reorder && previousFailCount; + + this.previousFailure = !!previousFailCount; + + return synchronize(run, priority, config.seed); + }, + + pushResult: function pushResult(resultInfo) { + + // Destructure of resultInfo = { result, actual, expected, message, negative } + var source, + details = { + module: this.module.name, + name: this.testName, + result: resultInfo.result, + message: resultInfo.message, + actual: resultInfo.actual, + expected: resultInfo.expected, + testId: this.testId, + negative: resultInfo.negative || false, + runtime: now() - this.started, + todo: !!this.todo + }; + + if (!resultInfo.result) { + source = resultInfo.source || sourceFromStacktrace(); + + if (source) { + details.source = source; + } + } + + this.logAssertion(details); + + this.assertions.push({ + result: !!resultInfo.result, + message: resultInfo.message + }); + }, + + pushFailure: function pushFailure(message, source, actual) { + if (!(this instanceof Test)) { + throw new Error("pushFailure() assertion outside test context, was " + sourceFromStacktrace(2)); + } + + this.assert.pushResult({ + result: false, + message: message || "error", + actual: actual || null, + expected: null, + source: source + }); + }, + + /** + * Log assertion details using both the old QUnit.log interface and + * QUnit.on( "assertion" ) interface. + * + * @private + */ + logAssertion: function logAssertion(details) { + runLoggingCallbacks("log", details); + + var assertion = { + passed: details.result, + actual: details.actual, + expected: details.expected, + message: details.message, + stack: details.source, + todo: details.todo + }; + this.testReport.pushAssertion(assertion); + emit("assertion", assertion); + }, + + + resolvePromise: function resolvePromise(promise, phase) { + var then, + resume, + message, + test = this; + if (promise != null) { + then = promise.then; + if (objectType(then) === "function") { + resume = internalStop(test); + then.call(promise, function () { + resume(); + }, function (error) { + message = "Promise rejected " + (!phase ? "during" : phase.replace(/Each$/, "")) + " \"" + test.testName + "\": " + (error && error.message || error); + test.pushFailure(message, extractStacktrace(error, 0)); + + // Else next test will carry the responsibility + saveGlobal(); + + // Unblock + resume(); + }); + } + } + }, + + valid: function valid() { + var filter = config.filter, + regexFilter = /^(!?)\/([\w\W]*)\/(i?$)/.exec(filter), + module = config.module && config.module.toLowerCase(), + fullName = this.module.name + ": " + this.testName; + + function moduleChainNameMatch(testModule) { + var testModuleName = testModule.name ? testModule.name.toLowerCase() : null; + if (testModuleName === module) { + return true; + } else if (testModule.parentModule) { + return moduleChainNameMatch(testModule.parentModule); + } else { + return false; + } + } + + function moduleChainIdMatch(testModule) { + return inArray(testModule.moduleId, config.moduleId) || testModule.parentModule && moduleChainIdMatch(testModule.parentModule); + } + + // Internally-generated tests are always valid + if (this.callback && this.callback.validTest) { + return true; + } + + if (config.moduleId && config.moduleId.length > 0 && !moduleChainIdMatch(this.module)) { + + return false; + } + + if (config.testId && config.testId.length > 0 && !inArray(this.testId, config.testId)) { + + return false; + } + + if (module && !moduleChainNameMatch(this.module)) { + return false; + } + + if (!filter) { + return true; + } + + return regexFilter ? this.regexFilter(!!regexFilter[1], regexFilter[2], regexFilter[3], fullName) : this.stringFilter(filter, fullName); + }, + + regexFilter: function regexFilter(exclude, pattern, flags, fullName) { + var regex = new RegExp(pattern, flags); + var match = regex.test(fullName); + + return match !== exclude; + }, + + stringFilter: function stringFilter(filter, fullName) { + filter = filter.toLowerCase(); + fullName = fullName.toLowerCase(); + + var include = filter.charAt(0) !== "!"; + if (!include) { + filter = filter.slice(1); + } + + // If the filter matches, we need to honour include + if (fullName.indexOf(filter) !== -1) { + return include; + } + + // Otherwise, do the opposite + return !include; + } + }; + + function pushFailure() { + if (!config.current) { + throw new Error("pushFailure() assertion outside test context, in " + sourceFromStacktrace(2)); + } + + // Gets current test obj + var currentTest = config.current; + + return currentTest.pushFailure.apply(currentTest, arguments); + } + + // Based on Java's String.hashCode, a simple but not + // rigorously collision resistant hashing function + function generateHash(module, testName) { + var hex, + i = 0, + hash = 0, + str = module + "\x1C" + testName, + len = str.length; + + for (; i < len; i++) { + hash = (hash << 5) - hash + str.charCodeAt(i); + hash |= 0; + } + + // Convert the possibly negative integer hash code into an 8 character hex string, which isn't + // strictly necessary but increases user understanding that the id is a SHA-like hash + hex = (0x100000000 + hash).toString(16); + if (hex.length < 8) { + hex = "0000000" + hex; + } + + return hex.slice(-8); + } + + function synchronize(callback, priority, seed) { + var last = !priority, + index; + + if (objectType(callback) === "array") { + while (callback.length) { + synchronize(callback.shift()); + } + return; + } + + if (priority) { + config.queue.splice(priorityCount++, 0, callback); + } else if (seed) { + if (!unitSampler) { + unitSampler = unitSamplerGenerator(seed); + } + + // Insert into a random position after all priority items + index = Math.floor(unitSampler() * (config.queue.length - priorityCount + 1)); + config.queue.splice(priorityCount + index, 0, callback); + } else { + config.queue.push(callback); + } + + if (internalState.autorun && !config.blocking) { + process(last); + } + } + + function unitSamplerGenerator(seed) { + + // 32-bit xorshift, requires only a nonzero seed + // http://excamera.com/sphinx/article-xorshift.html + var sample = parseInt(generateHash(seed), 16) || -1; + return function () { + sample ^= sample << 13; + sample ^= sample >>> 17; + sample ^= sample << 5; + + // ECMAScript has no unsigned number type + if (sample < 0) { + sample += 0x100000000; + } + + return sample / 0x100000000; + }; + } + + function saveGlobal() { + config.pollution = []; + + if (config.noglobals) { + for (var key in global$1) { + if (hasOwn.call(global$1, key)) { + + // In Opera sometimes DOM element ids show up here, ignore them + if (/^qunit-test-output/.test(key)) { + continue; + } + config.pollution.push(key); + } + } + } + } + + function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff(config.pollution, old); + if (newGlobals.length > 0) { + pushFailure("Introduced global variable(s): " + newGlobals.join(", ")); + } + + deletedGlobals = diff(old, config.pollution); + if (deletedGlobals.length > 0) { + pushFailure("Deleted global variable(s): " + deletedGlobals.join(", ")); + } + } + + // Will be exposed as QUnit.test + function test(testName, callback) { + if (focused) { + return; + } + + var newTest = new Test({ + testName: testName, + callback: callback + }); + + newTest.queue(); + } + + function todo(testName, callback) { + if (focused) { + return; + } + + var newTest = new Test({ + testName: testName, + callback: callback, + todo: true + }); + + newTest.queue(); + } + + // Will be exposed as QUnit.skip + function skip(testName) { + if (focused) { + return; + } + + var test = new Test({ + testName: testName, + skip: true + }); + + test.queue(); + } + + // Will be exposed as QUnit.only + function only(testName, callback) { + if (focused) { + return; + } + + config.queue.length = 0; + focused = true; + + var newTest = new Test({ + testName: testName, + callback: callback + }); + + newTest.queue(); + } + + // Put a hold on processing and return a function that will release it. + function internalStop(test) { + var released = false; + + test.semaphore += 1; + config.blocking = true; + + // Set a recovery timeout, if so configured. + if (config.testTimeout && defined.setTimeout) { + clearTimeout(config.timeout); + config.timeout = setTimeout(function () { + pushFailure("Test timed out", sourceFromStacktrace(2)); + internalRecover(test); + }, config.testTimeout); + } + + return function resume() { + if (released) { + return; + } + + released = true; + test.semaphore -= 1; + internalStart(test); + }; + } + + // Forcefully release all processing holds. + function internalRecover(test) { + test.semaphore = 0; + internalStart(test); + } + + // Release a processing hold, scheduling a resumption attempt if no holds remain. + function internalStart(test) { + + // If semaphore is non-numeric, throw error + if (isNaN(test.semaphore)) { + test.semaphore = 0; + + pushFailure("Invalid value on test.semaphore", sourceFromStacktrace(2)); + return; + } + + // Don't start until equal number of stop-calls + if (test.semaphore > 0) { + return; + } + + // Throw an Error if start is called more often than stop + if (test.semaphore < 0) { + test.semaphore = 0; + + pushFailure("Tried to restart test while already started (test's semaphore was 0 already)", sourceFromStacktrace(2)); + return; + } + + // Add a slight delay to allow more assertions etc. + if (defined.setTimeout) { + if (config.timeout) { + clearTimeout(config.timeout); + } + config.timeout = setTimeout(function () { + if (test.semaphore > 0) { + return; + } + + if (config.timeout) { + clearTimeout(config.timeout); + } + + begin(); + }, 13); + } else { + begin(); + } + } + + function numberOfTests(module) { + var count = module.tests.length, + modules = [].concat(toConsumableArray(module.childModules)); + + // Do a breadth-first traversal of the child modules + while (modules.length) { + var nextModule = modules.shift(); + count += nextModule.tests.length; + modules.push.apply(modules, toConsumableArray(nextModule.childModules)); + } + + return count; + } + + function notifyTestsRan(module) { + module.testsRun++; + while (module = module.parentModule) { + module.testsRun++; + } + } + + /** + * Returns a function that proxies to the given method name on the globals + * console object. The proxy will also detect if the console doesn't exist and + * will appropriately no-op. This allows support for IE9, which doesn't have a + * console if the developer tools are not open. + */ + function consoleProxy(method) { + return function () { + if (console) { + console[method].apply(console, arguments); + } + }; + } + + var Logger = { + warn: consoleProxy("warn") + }; + + var Assert = function () { + function Assert(testContext) { + classCallCheck(this, Assert); + + this.test = testContext; + } + + // Assert helpers + + // Documents a "step", which is a string value, in a test as a passing assertion + + + createClass(Assert, [{ + key: "step", + value: function step(message) { + var result = !!message; + + this.test.steps.push(message); + + return this.pushResult({ + result: result, + message: message || "You must provide a message to assert.step" + }); + } + + // Verifies the steps in a test match a given array of string values + + }, { + key: "verifySteps", + value: function verifySteps(steps, message) { + this.deepEqual(this.test.steps, steps, message); + } + + // Specify the number of expected assertions to guarantee that failed test + // (no assertions are run at all) don't slip through. + + }, { + key: "expect", + value: function expect(asserts) { + if (arguments.length === 1) { + this.test.expected = asserts; + } else { + return this.test.expected; + } + } + + // Put a hold on processing and return a function that will release it a maximum of once. + + }, { + key: "async", + value: function async(count) { + var test$$1 = this.test, + popped = false, + acceptCallCount = count; + + if (typeof acceptCallCount === "undefined") { + acceptCallCount = 1; + } + + test$$1.usedAsync = true; + var resume = internalStop(test$$1); + + return function done() { + if (popped) { + test$$1.pushFailure("Too many calls to the `assert.async` callback", sourceFromStacktrace(2)); + return; + } + + acceptCallCount -= 1; + if (acceptCallCount > 0) { + return; + } + + popped = true; + resume(); + }; + } + + // Exports test.push() to the user API + // Alias of pushResult. + + }, { + key: "push", + value: function push(result, actual, expected, message, negative) { + Logger.warn("assert.push is deprecated and will be removed in QUnit 3.0." + " Please use assert.pushResult instead (http://api.qunitjs.com/pushResult/)."); + + var currentAssert = this instanceof Assert ? this : config.current.assert; + return currentAssert.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message, + negative: negative + }); + } + }, { + key: "pushResult", + value: function pushResult(resultInfo) { + + // Destructure of resultInfo = { result, actual, expected, message, negative } + var assert = this, + currentTest = assert instanceof Assert && assert.test || config.current; + + // Backwards compatibility fix. + // Allows the direct use of global exported assertions and QUnit.assert.* + // Although, it's use is not recommended as it can leak assertions + // to other tests from async tests, because we only get a reference to the current test, + // not exactly the test where assertion were intended to be called. + if (!currentTest) { + throw new Error("assertion outside test context, in " + sourceFromStacktrace(2)); + } + + if (currentTest.usedAsync === true && currentTest.semaphore === 0) { + currentTest.pushFailure("Assertion after the final `assert.async` was resolved", sourceFromStacktrace(2)); + + // Allow this assertion to continue running anyway... + } + + if (!(assert instanceof Assert)) { + assert = currentTest.assert; + } + + return assert.test.pushResult(resultInfo); + } + }, { + key: "ok", + value: function ok(result, message) { + if (!message) { + message = result ? "okay" : "failed, expected argument to be truthy, was: " + dump.parse(result); + } + + this.pushResult({ + result: !!result, + actual: result, + expected: true, + message: message + }); + } + }, { + key: "notOk", + value: function notOk(result, message) { + if (!message) { + message = !result ? "okay" : "failed, expected argument to be falsy, was: " + dump.parse(result); + } + + this.pushResult({ + result: !result, + actual: result, + expected: false, + message: message + }); + } + }, { + key: "equal", + value: function equal(actual, expected, message) { + + // eslint-disable-next-line eqeqeq + var result = expected == actual; + + this.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notEqual", + value: function notEqual(actual, expected, message) { + + // eslint-disable-next-line eqeqeq + var result = expected != actual; + + this.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "propEqual", + value: function propEqual(actual, expected, message) { + actual = objectValues(actual); + expected = objectValues(expected); + + this.pushResult({ + result: equiv(actual, expected), + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notPropEqual", + value: function notPropEqual(actual, expected, message) { + actual = objectValues(actual); + expected = objectValues(expected); + + this.pushResult({ + result: !equiv(actual, expected), + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "deepEqual", + value: function deepEqual(actual, expected, message) { + this.pushResult({ + result: equiv(actual, expected), + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notDeepEqual", + value: function notDeepEqual(actual, expected, message) { + this.pushResult({ + result: !equiv(actual, expected), + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "strictEqual", + value: function strictEqual(actual, expected, message) { + this.pushResult({ + result: expected === actual, + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notStrictEqual", + value: function notStrictEqual(actual, expected, message) { + this.pushResult({ + result: expected !== actual, + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "throws", + value: function throws(block, expected, message) { + var actual = void 0, + result = false, + currentTest = this instanceof Assert && this.test || config.current; + + // 'expected' is optional unless doing string comparison + if (objectType(expected) === "string") { + if (message == null) { + message = expected; + expected = null; + } else { + throw new Error("throws/raises does not accept a string value for the expected argument.\n" + "Use a non-string object value (e.g. regExp) instead if it's necessary."); + } + } + + currentTest.ignoreGlobalErrors = true; + try { + block.call(currentTest.testEnvironment); + } catch (e) { + actual = e; + } + currentTest.ignoreGlobalErrors = false; + + if (actual) { + var expectedType = objectType(expected); + + // We don't want to validate thrown error + if (!expected) { + result = true; + expected = null; + + // Expected is a regexp + } else if (expectedType === "regexp") { + result = expected.test(errorString(actual)); + + // Expected is a constructor, maybe an Error constructor + } else if (expectedType === "function" && actual instanceof expected) { + result = true; + + // Expected is an Error object + } else if (expectedType === "object") { + result = actual instanceof expected.constructor && actual.name === expected.name && actual.message === expected.message; + + // Expected is a validation function which returns true if validation passed + } else if (expectedType === "function" && expected.call({}, actual) === true) { + expected = null; + result = true; + } + } + + currentTest.assert.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message + }); + } + }]); + return Assert; + }(); + + // Provide an alternative to assert.throws(), for environments that consider throws a reserved word + // Known to us are: Closure Compiler, Narwhal + // eslint-disable-next-line dot-notation + + + Assert.prototype.raises = Assert.prototype["throws"]; + + /** + * Converts an error into a simple string for comparisons. + * + * @param {Error} error + * @return {String} + */ + function errorString(error) { + var resultErrorString = error.toString(); + + if (resultErrorString.substring(0, 7) === "[object") { + var name = error.name ? error.name.toString() : "Error"; + var message = error.message ? error.message.toString() : ""; + + if (name && message) { + return name + ": " + message; + } else if (name) { + return name; + } else if (message) { + return message; + } else { + return "Error"; + } + } else { + return resultErrorString; + } + } + + /* global module, exports, define */ + function exportQUnit(QUnit) { + + if (defined.document) { + + // QUnit may be defined when it is preconfigured but then only QUnit and QUnit.config may be defined. + if (window.QUnit && window.QUnit.version) { + throw new Error("QUnit has already been defined."); + } + + window.QUnit = QUnit; + } + + // For nodejs + if (typeof module !== "undefined" && module && module.exports) { + module.exports = QUnit; + + // For consistency with CommonJS environments' exports + module.exports.QUnit = QUnit; + } + + // For CommonJS with exports, but without module.exports, like Rhino + if (typeof exports !== "undefined" && exports) { + exports.QUnit = QUnit; + } + + if (typeof define === "function" && define.amd) { + define(function () { + return QUnit; + }); + QUnit.config.autostart = false; + } + } + + var SuiteReport = function () { + function SuiteReport(name, parentSuite) { + classCallCheck(this, SuiteReport); + + this.name = name; + this.fullName = parentSuite ? parentSuite.fullName.concat(name) : []; + + this.tests = []; + this.childSuites = []; + + if (parentSuite) { + parentSuite.pushChildSuite(this); + } + } + + createClass(SuiteReport, [{ + key: "start", + value: function start(recordTime) { + if (recordTime) { + this._startTime = Date.now(); + } + + return { + name: this.name, + fullName: this.fullName.slice(), + tests: this.tests.map(function (test) { + return test.start(); + }), + childSuites: this.childSuites.map(function (suite) { + return suite.start(); + }), + testCounts: { + total: this.getTestCounts().total + } + }; + } + }, { + key: "end", + value: function end(recordTime) { + if (recordTime) { + this._endTime = Date.now(); + } + + return { + name: this.name, + fullName: this.fullName.slice(), + tests: this.tests.map(function (test) { + return test.end(); + }), + childSuites: this.childSuites.map(function (suite) { + return suite.end(); + }), + testCounts: this.getTestCounts(), + runtime: this.getRuntime(), + status: this.getStatus() + }; + } + }, { + key: "pushChildSuite", + value: function pushChildSuite(suite) { + this.childSuites.push(suite); + } + }, { + key: "pushTest", + value: function pushTest(test) { + this.tests.push(test); + } + }, { + key: "getRuntime", + value: function getRuntime() { + return this._endTime - this._startTime; + } + }, { + key: "getTestCounts", + value: function getTestCounts() { + var counts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { passed: 0, failed: 0, skipped: 0, todo: 0, total: 0 }; + + counts = this.tests.reduce(function (counts, test) { + counts[test.getStatus()]++; + counts.total++; + return counts; + }, counts); + + return this.childSuites.reduce(function (counts, suite) { + return suite.getTestCounts(counts); + }, counts); + } + }, { + key: "getStatus", + value: function getStatus() { + var _getTestCounts = this.getTestCounts(), + total = _getTestCounts.total, + failed = _getTestCounts.failed, + skipped = _getTestCounts.skipped, + todo = _getTestCounts.todo; + + if (failed) { + return "failed"; + } else { + if (skipped === total) { + return "skipped"; + } else if (todo === total) { + return "todo"; + } else { + return "passed"; + } + } + } + }]); + return SuiteReport; + }(); + + // Handle an unhandled exception. By convention, returns true if further + // error handling should be suppressed and false otherwise. + // In this case, we will only suppress further error handling if the + // "ignoreGlobalErrors" configuration option is enabled. + function onError(error) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (config.current) { + if (config.current.ignoreGlobalErrors) { + return true; + } + pushFailure.apply(undefined, [error.message, error.fileName + ":" + error.lineNumber].concat(args)); + } else { + test("global failure", extend(function () { + pushFailure.apply(undefined, [error.message, error.fileName + ":" + error.lineNumber].concat(args)); + }, { validTest: true })); + } + + return false; + } + + var QUnit = {}; + var globalSuite = new SuiteReport(); + + // The initial "currentModule" represents the global (or top-level) module that + // is not explicitly defined by the user, therefore we add the "globalSuite" to + // it since each module has a suiteReport associated with it. + config.currentModule.suiteReport = globalSuite; + + var globalStartCalled = false; + var runStarted = false; + + var internalState = { + autorun: false + }; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = !(defined.document && window.location.protocol !== "file:"); + + // Expose the current QUnit version + QUnit.version = "2.2.0"; + + extend(QUnit, { + on: on, + + // Call on start of module test to prepend name to all tests + module: function module(name, testEnvironment, executeNow) { + var module, moduleFns; + var currentModule = config.currentModule; + + if (arguments.length === 2) { + if (objectType(testEnvironment) === "function") { + executeNow = testEnvironment; + testEnvironment = undefined; + } + } + + module = createModule(); + + moduleFns = { + before: setHook(module, "before"), + beforeEach: setHook(module, "beforeEach"), + afterEach: setHook(module, "afterEach"), + after: setHook(module, "after") + }; + + if (objectType(executeNow) === "function") { + config.moduleStack.push(module); + setCurrentModule(module); + executeNow.call(module.testEnvironment, moduleFns); + config.moduleStack.pop(); + module = module.parentModule || currentModule; + } + + setCurrentModule(module); + + function createModule() { + var parentModule = config.moduleStack.length ? config.moduleStack.slice(-1)[0] : null; + var moduleName = parentModule !== null ? [parentModule.name, name].join(" > ") : name; + var parentSuite = parentModule ? parentModule.suiteReport : globalSuite; + + var module = { + name: moduleName, + parentModule: parentModule, + tests: [], + moduleId: generateHash(moduleName), + testsRun: 0, + childModules: [], + suiteReport: new SuiteReport(name, parentSuite) + }; + + var env = {}; + if (parentModule) { + parentModule.childModules.push(module); + extend(env, parentModule.testEnvironment); + delete env.beforeEach; + delete env.afterEach; + } + extend(env, testEnvironment); + module.testEnvironment = env; + + config.modules.push(module); + return module; + } + + function setCurrentModule(module) { + config.currentModule = module; + } + }, + + test: test, + + todo: todo, + + skip: skip, + + only: only, + + start: function start(count) { + var globalStartAlreadyCalled = globalStartCalled; + + if (!config.current) { + globalStartCalled = true; + + if (runStarted) { + throw new Error("Called start() while test already started running"); + } else if (globalStartAlreadyCalled || count > 1) { + throw new Error("Called start() outside of a test context too many times"); + } else if (config.autostart) { + throw new Error("Called start() outside of a test context when " + "QUnit.config.autostart was true"); + } else if (!config.pageLoaded) { + + // The page isn't completely loaded yet, so we set autostart and then + // load if we're in Node or wait for the browser's load event. + config.autostart = true; + + // Starts from Node even if .load was not previously called. We still return + // early otherwise we'll wind up "beginning" twice. + if (!defined.document) { + QUnit.load(); + } + + return; + } + } else { + throw new Error("QUnit.start cannot be called inside a test context."); + } + + scheduleBegin(); + }, + + config: config, + + is: is, + + objectType: objectType, + + extend: extend, + + load: function load() { + config.pageLoaded = true; + + // Initialize the configuration options + extend(config, { + stats: { all: 0, bad: 0 }, + started: 0, + updateRate: 1000, + autostart: true, + filter: "" + }, true); + + if (!runStarted) { + config.blocking = false; + + if (config.autostart) { + scheduleBegin(); + } + } + }, + + stack: function stack(offset) { + offset = (offset || 0) + 2; + return sourceFromStacktrace(offset); + }, + + onError: onError + }); + + QUnit.pushFailure = pushFailure; + QUnit.assert = Assert.prototype; + QUnit.equiv = equiv; + QUnit.dump = dump; + + registerLoggingCallbacks(QUnit); + + function scheduleBegin() { + + runStarted = true; + + // Add a slight delay to allow definition of more modules and tests. + if (defined.setTimeout) { + setTimeout(function () { + begin(); + }, 13); + } else { + begin(); + } + } + + function begin() { + var i, + l, + modulesLog = []; + + // If the test run hasn't officially begun yet + if (!config.started) { + + // Record the time of the test run's beginning + config.started = now(); + + // Delete the loose unnamed module if unused. + if (config.modules[0].name === "" && config.modules[0].tests.length === 0) { + config.modules.shift(); + } + + // Avoid unnecessary information by not logging modules' test environments + for (i = 0, l = config.modules.length; i < l; i++) { + modulesLog.push({ + name: config.modules[i].name, + tests: config.modules[i].tests + }); + } + + // The test run is officially beginning now + emit("runStart", globalSuite.start(true)); + runLoggingCallbacks("begin", { + totalTests: Test.count, + modules: modulesLog + }); + } + + config.blocking = false; + process(true); + } + + function process(last) { + function next() { + process(last); + } + var start = now(); + config.depth = (config.depth || 0) + 1; + + while (config.queue.length && !config.blocking) { + if (!defined.setTimeout || config.updateRate <= 0 || now() - start < config.updateRate) { + if (config.current) { + + // Reset async tracking for each phase of the Test lifecycle + config.current.usedAsync = false; + } + config.queue.shift()(); + } else { + setTimeout(next, 13); + break; + } + } + config.depth--; + if (last && !config.blocking && !config.queue.length && config.depth === 0) { + done(); + } + } + + function done() { + var runtime, + passed, + i, + key, + storage = config.storage; + + internalState.autorun = true; + + runtime = now() - config.started; + passed = config.stats.all - config.stats.bad; + + emit("runEnd", globalSuite.end(true)); + runLoggingCallbacks("done", { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + }); + + // Clear own storage items if all tests passed + if (storage && config.stats.bad === 0) { + for (i = storage.length - 1; i >= 0; i--) { + key = storage.key(i); + if (key.indexOf("qunit-test-") === 0) { + storage.removeItem(key); + } + } + } + } + + function setHook(module, hookName) { + if (module.testEnvironment === undefined) { + module.testEnvironment = {}; + } + + return function (callback) { + module.testEnvironment[hookName] = callback; + }; + } + + exportQUnit(QUnit); + + (function () { + + if (typeof window === "undefined" || typeof document === "undefined") { + return; + } + + var config = QUnit.config, + hasOwn = Object.prototype.hasOwnProperty; + + // Stores fixture HTML for resetting later + function storeFixture() { + + // Avoid overwriting user-defined values + if (hasOwn.call(config, "fixture")) { + return; + } + + var fixture = document.getElementById("qunit-fixture"); + if (fixture) { + config.fixture = fixture.innerHTML; + } + } + + QUnit.begin(storeFixture); + + // Resets the fixture DOM element if available. + function resetFixture() { + if (config.fixture == null) { + return; + } + + var fixture = document.getElementById("qunit-fixture"); + if (fixture) { + fixture.innerHTML = config.fixture; + } + } + + QUnit.testStart(resetFixture); + })(); + + (function () { + + // Only interact with URLs via window.location + var location = typeof window !== "undefined" && window.location; + if (!location) { + return; + } + + var urlParams = getUrlParams(); + + QUnit.urlParams = urlParams; + + // Match module/test by inclusion in an array + QUnit.config.moduleId = [].concat(urlParams.moduleId || []); + QUnit.config.testId = [].concat(urlParams.testId || []); + + // Exact case-insensitive match of the module name + QUnit.config.module = urlParams.module; + + // Regular expression or case-insenstive substring match against "moduleName: testName" + QUnit.config.filter = urlParams.filter; + + // Test order randomization + if (urlParams.seed === true) { + + // Generate a random seed if the option is specified without a value + QUnit.config.seed = Math.random().toString(36).slice(2); + } else if (urlParams.seed) { + QUnit.config.seed = urlParams.seed; + } + + // Add URL-parameter-mapped config values with UI form rendering data + QUnit.config.urlConfig.push({ + id: "hidepassed", + label: "Hide passed tests", + tooltip: "Only show tests and assertions that fail. Stored as query-strings." + }, { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the " + "global object (`window` in Browsers). Stored as query-strings." + }, { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " + "exceptions in IE reasonable. Stored as query-strings." + }); + + QUnit.begin(function () { + var i, + option, + urlConfig = QUnit.config.urlConfig; + + for (i = 0; i < urlConfig.length; i++) { + + // Options can be either strings or objects with nonempty "id" properties + option = QUnit.config.urlConfig[i]; + if (typeof option !== "string") { + option = option.id; + } + + if (QUnit.config[option] === undefined) { + QUnit.config[option] = urlParams[option]; + } + } + }); + + function getUrlParams() { + var i, param, name, value; + var urlParams = Object.create(null); + var params = location.search.slice(1).split("&"); + var length = params.length; + + for (i = 0; i < length; i++) { + if (params[i]) { + param = params[i].split("="); + name = decodeQueryParam(param[0]); + + // Allow just a key to turn on a flag, e.g., test.html?noglobals + value = param.length === 1 || decodeQueryParam(param.slice(1).join("=")); + if (name in urlParams) { + urlParams[name] = [].concat(urlParams[name], value); + } else { + urlParams[name] = value; + } + } + } + + return urlParams; + } + + function decodeQueryParam(param) { + return decodeURIComponent(param.replace(/\+/g, "%20")); + } + })(); + + var stats = { + passedTests: 0, + failedTests: 0, + skippedTests: 0, + todoTests: 0 + }; + + // Escape text for attribute or text content. + function escapeText(s) { + if (!s) { + return ""; + } + s = s + ""; + + // Both single quotes and double quotes (for attributes) + return s.replace(/['"<>&]/g, function (s) { + switch (s) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); + } + + (function () { + + // Don't load the HTML Reporter on non-browser environments + if (typeof window === "undefined" || !window.document) { + return; + } + + var config = QUnit.config, + document$$1 = window.document, + collapseNext = false, + hasOwn = Object.prototype.hasOwnProperty, + unfilteredUrl = setUrl({ filter: undefined, module: undefined, + moduleId: undefined, testId: undefined }), + modulesList = []; + + function addEvent(elem, type, fn) { + elem.addEventListener(type, fn, false); + } + + function removeEvent(elem, type, fn) { + elem.removeEventListener(type, fn, false); + } + + function addEvents(elems, type, fn) { + var i = elems.length; + while (i--) { + addEvent(elems[i], type, fn); + } + } + + function hasClass(elem, name) { + return (" " + elem.className + " ").indexOf(" " + name + " ") >= 0; + } + + function addClass(elem, name) { + if (!hasClass(elem, name)) { + elem.className += (elem.className ? " " : "") + name; + } + } + + function toggleClass(elem, name, force) { + if (force || typeof force === "undefined" && !hasClass(elem, name)) { + addClass(elem, name); + } else { + removeClass(elem, name); + } + } + + function removeClass(elem, name) { + var set = " " + elem.className + " "; + + // Class name may appear multiple times + while (set.indexOf(" " + name + " ") >= 0) { + set = set.replace(" " + name + " ", " "); + } + + // Trim for prettiness + elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, ""); + } + + function id(name) { + return document$$1.getElementById && document$$1.getElementById(name); + } + + function abortTests() { + var abortButton = id("qunit-abort-tests-button"); + if (abortButton) { + abortButton.disabled = true; + abortButton.innerHTML = "Aborting..."; + } + QUnit.config.queue.length = 0; + return false; + } + + function interceptNavigation(ev) { + applyUrlParams(); + + if (ev && ev.preventDefault) { + ev.preventDefault(); + } + + return false; + } + + function getUrlConfigHtml() { + var i, + j, + val, + escaped, + escapedTooltip, + selection = false, + urlConfig = config.urlConfig, + urlConfigHtml = ""; + + for (i = 0; i < urlConfig.length; i++) { + + // Options can be either strings or objects with nonempty "id" properties + val = config.urlConfig[i]; + if (typeof val === "string") { + val = { + id: val, + label: val + }; + } + + escaped = escapeText(val.id); + escapedTooltip = escapeText(val.tooltip); + + if (!val.value || typeof val.value === "string") { + urlConfigHtml += ""; + } else { + urlConfigHtml += ""; + } + } + + return urlConfigHtml; + } + + // Handle "click" events on toolbar checkboxes and "change" for select menus. + // Updates the URL with the new state of `config.urlConfig` values. + function toolbarChanged() { + var updatedUrl, + value, + tests, + field = this, + params = {}; + + // Detect if field is a select menu or a checkbox + if ("selectedIndex" in field) { + value = field.options[field.selectedIndex].value || undefined; + } else { + value = field.checked ? field.defaultValue || true : undefined; + } + + params[field.name] = value; + updatedUrl = setUrl(params); + + // Check if we can apply the change without a page refresh + if ("hidepassed" === field.name && "replaceState" in window.history) { + QUnit.urlParams[field.name] = value; + config[field.name] = value || false; + tests = id("qunit-tests"); + if (tests) { + toggleClass(tests, "hidepass", value || false); + } + window.history.replaceState(null, "", updatedUrl); + } else { + window.location = updatedUrl; + } + } + + function setUrl(params) { + var key, + arrValue, + i, + querystring = "?", + location = window.location; + + params = QUnit.extend(QUnit.extend({}, QUnit.urlParams), params); + + for (key in params) { + + // Skip inherited or undefined properties + if (hasOwn.call(params, key) && params[key] !== undefined) { + + // Output a parameter for each value of this key (but usually just one) + arrValue = [].concat(params[key]); + for (i = 0; i < arrValue.length; i++) { + querystring += encodeURIComponent(key); + if (arrValue[i] !== true) { + querystring += "=" + encodeURIComponent(arrValue[i]); + } + querystring += "&"; + } + } + } + return location.protocol + "//" + location.host + location.pathname + querystring.slice(0, -1); + } + + function applyUrlParams() { + var i, + selectedModules = [], + modulesList = id("qunit-modulefilter-dropdown-list").getElementsByTagName("input"), + filter = id("qunit-filter-input").value; + + for (i = 0; i < modulesList.length; i++) { + if (modulesList[i].checked) { + selectedModules.push(modulesList[i].value); + } + } + + window.location = setUrl({ + filter: filter === "" ? undefined : filter, + moduleId: selectedModules.length === 0 ? undefined : selectedModules, + + // Remove module and testId filter + module: undefined, + testId: undefined + }); + } + + function toolbarUrlConfigContainer() { + var urlConfigContainer = document$$1.createElement("span"); + + urlConfigContainer.innerHTML = getUrlConfigHtml(); + addClass(urlConfigContainer, "qunit-url-config"); + + addEvents(urlConfigContainer.getElementsByTagName("input"), "change", toolbarChanged); + addEvents(urlConfigContainer.getElementsByTagName("select"), "change", toolbarChanged); + + return urlConfigContainer; + } + + function abortTestsButton() { + var button = document$$1.createElement("button"); + button.id = "qunit-abort-tests-button"; + button.innerHTML = "Abort"; + addEvent(button, "click", abortTests); + return button; + } + + function toolbarLooseFilter() { + var filter = document$$1.createElement("form"), + label = document$$1.createElement("label"), + input = document$$1.createElement("input"), + button = document$$1.createElement("button"); + + addClass(filter, "qunit-filter"); + + label.innerHTML = "Filter: "; + + input.type = "text"; + input.value = config.filter || ""; + input.name = "filter"; + input.id = "qunit-filter-input"; + + button.innerHTML = "Go"; + + label.appendChild(input); + + filter.appendChild(label); + filter.appendChild(document$$1.createTextNode(" ")); + filter.appendChild(button); + addEvent(filter, "submit", interceptNavigation); + + return filter; + } + + function moduleListHtml() { + var i, + checked, + html = ""; + + for (i = 0; i < config.modules.length; i++) { + if (config.modules[i].name !== "") { + checked = config.moduleId.indexOf(config.modules[i].moduleId) > -1; + html += "
  • "; + } + } + + return html; + } + + function toolbarModuleFilter() { + var allCheckbox, + commit, + reset, + moduleFilter = document$$1.createElement("form"), + label = document$$1.createElement("label"), + moduleSearch = document$$1.createElement("input"), + dropDown = document$$1.createElement("div"), + actions = document$$1.createElement("span"), + dropDownList = document$$1.createElement("ul"), + dirty = false; + + moduleSearch.id = "qunit-modulefilter-search"; + addEvent(moduleSearch, "input", searchInput); + addEvent(moduleSearch, "input", searchFocus); + addEvent(moduleSearch, "focus", searchFocus); + addEvent(moduleSearch, "click", searchFocus); + + label.id = "qunit-modulefilter-search-container"; + label.innerHTML = "Module: "; + label.appendChild(moduleSearch); + + actions.id = "qunit-modulefilter-actions"; + actions.innerHTML = "" + "" + ""; + allCheckbox = actions.lastChild.firstChild; + commit = actions.firstChild; + reset = commit.nextSibling; + addEvent(commit, "click", applyUrlParams); + + dropDownList.id = "qunit-modulefilter-dropdown-list"; + dropDownList.innerHTML = moduleListHtml(); + + dropDown.id = "qunit-modulefilter-dropdown"; + dropDown.style.display = "none"; + dropDown.appendChild(actions); + dropDown.appendChild(dropDownList); + addEvent(dropDown, "change", selectionChange); + selectionChange(); + + moduleFilter.id = "qunit-modulefilter"; + moduleFilter.appendChild(label); + moduleFilter.appendChild(dropDown); + addEvent(moduleFilter, "submit", interceptNavigation); + addEvent(moduleFilter, "reset", function () { + + // Let the reset happen, then update styles + window.setTimeout(selectionChange); + }); + + // Enables show/hide for the dropdown + function searchFocus() { + if (dropDown.style.display !== "none") { + return; + } + + dropDown.style.display = "block"; + addEvent(document$$1, "click", hideHandler); + addEvent(document$$1, "keydown", hideHandler); + + // Hide on Escape keydown or outside-container click + function hideHandler(e) { + var inContainer = moduleFilter.contains(e.target); + + if (e.keyCode === 27 || !inContainer) { + if (e.keyCode === 27 && inContainer) { + moduleSearch.focus(); + } + dropDown.style.display = "none"; + removeEvent(document$$1, "click", hideHandler); + removeEvent(document$$1, "keydown", hideHandler); + moduleSearch.value = ""; + searchInput(); + } + } + } + + // Processes module search box input + function searchInput() { + var i, + item, + searchText = moduleSearch.value.toLowerCase(), + listItems = dropDownList.children; + + for (i = 0; i < listItems.length; i++) { + item = listItems[i]; + if (!searchText || item.textContent.toLowerCase().indexOf(searchText) > -1) { + item.style.display = ""; + } else { + item.style.display = "none"; + } + } + } + + // Processes selection changes + function selectionChange(evt) { + var i, + item, + checkbox = evt && evt.target || allCheckbox, + modulesList = dropDownList.getElementsByTagName("input"), + selectedNames = []; + + toggleClass(checkbox.parentNode, "checked", checkbox.checked); + + dirty = false; + if (checkbox.checked && checkbox !== allCheckbox) { + allCheckbox.checked = false; + removeClass(allCheckbox.parentNode, "checked"); + } + for (i = 0; i < modulesList.length; i++) { + item = modulesList[i]; + if (!evt) { + toggleClass(item.parentNode, "checked", item.checked); + } else if (checkbox === allCheckbox && checkbox.checked) { + item.checked = false; + removeClass(item.parentNode, "checked"); + } + dirty = dirty || item.checked !== item.defaultChecked; + if (item.checked) { + selectedNames.push(item.parentNode.textContent); + } + } + + commit.style.display = reset.style.display = dirty ? "" : "none"; + moduleSearch.placeholder = selectedNames.join(", ") || allCheckbox.parentNode.textContent; + moduleSearch.title = "Type to filter list. Current selection:\n" + (selectedNames.join("\n") || allCheckbox.parentNode.textContent); + } + + return moduleFilter; + } + + function appendToolbar() { + var toolbar = id("qunit-testrunner-toolbar"); + + if (toolbar) { + toolbar.appendChild(toolbarUrlConfigContainer()); + toolbar.appendChild(toolbarModuleFilter()); + toolbar.appendChild(toolbarLooseFilter()); + toolbar.appendChild(document$$1.createElement("div")).className = "clearfix"; + } + } + + function appendHeader() { + var header = id("qunit-header"); + + if (header) { + header.innerHTML = "" + header.innerHTML + " "; + } + } + + function appendBanner() { + var banner = id("qunit-banner"); + + if (banner) { + banner.className = ""; + } + } + + function appendTestResults() { + var tests = id("qunit-tests"), + result = id("qunit-testresult"), + controls; + + if (result) { + result.parentNode.removeChild(result); + } + + if (tests) { + tests.innerHTML = ""; + result = document$$1.createElement("p"); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore(result, tests); + result.innerHTML = "
    Running...
     
    " + "
    " + "
    "; + controls = id("qunit-testresult-controls"); + } + + if (controls) { + controls.appendChild(abortTestsButton()); + } + } + + function appendFilteredTest() { + var testId = QUnit.config.testId; + if (!testId || testId.length <= 0) { + return ""; + } + return "
    Rerunning selected tests: " + escapeText(testId.join(", ")) + " Run all tests
    "; + } + + function appendUserAgent() { + var userAgent = id("qunit-userAgent"); + + if (userAgent) { + userAgent.innerHTML = ""; + userAgent.appendChild(document$$1.createTextNode("QUnit " + QUnit.version + "; " + navigator.userAgent)); + } + } + + function appendInterface() { + var qunit = id("qunit"); + + if (qunit) { + qunit.innerHTML = "

    " + escapeText(document$$1.title) + "

    " + "

    " + "
    " + appendFilteredTest() + "

    " + "
      "; + } + + appendHeader(); + appendBanner(); + appendTestResults(); + appendUserAgent(); + appendToolbar(); + } + + function appendTestsList(modules) { + var i, l, x, z, test, moduleObj; + + for (i = 0, l = modules.length; i < l; i++) { + moduleObj = modules[i]; + + for (x = 0, z = moduleObj.tests.length; x < z; x++) { + test = moduleObj.tests[x]; + + appendTest(test.name, test.testId, moduleObj.name); + } + } + } + + function appendTest(name, testId, moduleName) { + var title, + rerunTrigger, + testBlock, + assertList, + tests = id("qunit-tests"); + + if (!tests) { + return; + } + + title = document$$1.createElement("strong"); + title.innerHTML = getNameHtml(name, moduleName); + + rerunTrigger = document$$1.createElement("a"); + rerunTrigger.innerHTML = "Rerun"; + rerunTrigger.href = setUrl({ testId: testId }); + + testBlock = document$$1.createElement("li"); + testBlock.appendChild(title); + testBlock.appendChild(rerunTrigger); + testBlock.id = "qunit-test-output-" + testId; + + assertList = document$$1.createElement("ol"); + assertList.className = "qunit-assert-list"; + + testBlock.appendChild(assertList); + + tests.appendChild(testBlock); + } + + // HTML Reporter initialization and load + QUnit.begin(function (details) { + var i, moduleObj, tests; + + // Sort modules by name for the picker + for (i = 0; i < details.modules.length; i++) { + moduleObj = details.modules[i]; + if (moduleObj.name) { + modulesList.push(moduleObj.name); + } + } + modulesList.sort(function (a, b) { + return a.localeCompare(b); + }); + + // Initialize QUnit elements + appendInterface(); + appendTestsList(details.modules); + tests = id("qunit-tests"); + if (tests && config.hidepassed) { + addClass(tests, "hidepass"); + } + }); + + QUnit.done(function (details) { + var banner = id("qunit-banner"), + tests = id("qunit-tests"), + abortButton = id("qunit-abort-tests-button"), + totalTests = stats.passedTests + stats.skippedTests + stats.todoTests + stats.failedTests, + html = [totalTests, " tests completed in ", details.runtime, " milliseconds, with ", stats.failedTests, " failed, ", stats.skippedTests, " skipped, and ", stats.todoTests, " todo.
      ", "", details.passed, " assertions of ", details.total, " passed, ", details.failed, " failed."].join(""), + test, + assertLi, + assertList; + + // Update remaing tests to aborted + if (abortButton && abortButton.disabled) { + html = "Tests aborted after " + details.runtime + " milliseconds."; + + for (var i = 0; i < tests.children.length; i++) { + test = tests.children[i]; + if (test.className === "" || test.className === "running") { + test.className = "aborted"; + assertList = test.getElementsByTagName("ol")[0]; + assertLi = document$$1.createElement("li"); + assertLi.className = "fail"; + assertLi.innerHTML = "Test aborted."; + assertList.appendChild(assertLi); + } + } + } + + if (banner && (!abortButton || abortButton.disabled === false)) { + banner.className = stats.failedTests ? "qunit-fail" : "qunit-pass"; + } + + if (abortButton) { + abortButton.parentNode.removeChild(abortButton); + } + + if (tests) { + id("qunit-testresult-display").innerHTML = html; + } + + if (config.altertitle && document$$1.title) { + + // Show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document$$1.title = [stats.failedTests ? "\u2716" : "\u2714", document$$1.title.replace(/^[\u2714\u2716] /i, "")].join(" "); + } + + // Scroll back to top to show results + if (config.scrolltop && window.scrollTo) { + window.scrollTo(0, 0); + } + }); + + function getNameHtml(name, module) { + var nameHtml = ""; + + if (module) { + nameHtml = "" + escapeText(module) + ": "; + } + + nameHtml += "" + escapeText(name) + ""; + + return nameHtml; + } + + QUnit.testStart(function (details) { + var running, testBlock, bad; + + testBlock = id("qunit-test-output-" + details.testId); + if (testBlock) { + testBlock.className = "running"; + } else { + + // Report later registered tests + appendTest(details.name, details.testId, details.module); + } + + running = id("qunit-testresult-display"); + if (running) { + bad = QUnit.config.reorder && details.previousFailure; + + running.innerHTML = (bad ? "Rerunning previously failed test:
      " : "Running:
      ") + getNameHtml(details.name, details.module); + } + }); + + function stripHtml(string) { + + // Strip tags, html entity and whitespaces + return string.replace(/<\/?[^>]+(>|$)/g, "").replace(/\"/g, "").replace(/\s+/g, ""); + } + + QUnit.log(function (details) { + var assertList, + assertLi, + message, + expected, + actual, + diff, + showDiff = false, + testItem = id("qunit-test-output-" + details.testId); + + if (!testItem) { + return; + } + + message = escapeText(details.message) || (details.result ? "okay" : "failed"); + message = "" + message + ""; + message += "@ " + details.runtime + " ms"; + + // The pushFailure doesn't provide details.expected + // when it calls, it's implicit to also not show expected and diff stuff + // Also, we need to check details.expected existence, as it can exist and be undefined + if (!details.result && hasOwn.call(details, "expected")) { + if (details.negative) { + expected = "NOT " + QUnit.dump.parse(details.expected); + } else { + expected = QUnit.dump.parse(details.expected); + } + + actual = QUnit.dump.parse(details.actual); + message += ""; + + if (actual !== expected) { + + message += ""; + + // Don't show diff if actual or expected are booleans + if (!/^(true|false)$/.test(actual) && !/^(true|false)$/.test(expected)) { + diff = QUnit.diff(expected, actual); + showDiff = stripHtml(diff).length !== stripHtml(expected).length + stripHtml(actual).length; + } + + // Don't show diff if expected and actual are totally different + if (showDiff) { + message += ""; + } + } else if (expected.indexOf("[object Array]") !== -1 || expected.indexOf("[object Object]") !== -1) { + message += ""; + } else { + message += ""; + } + + if (details.source) { + message += ""; + } + + message += "
      Expected:
      " + escapeText(expected) + "
      Result:
      " + escapeText(actual) + "
      Diff:
      " + diff + "
      Message: " + "Diff suppressed as the depth of object is more than current max depth (" + QUnit.config.maxDepth + ").

      Hint: Use QUnit.dump.maxDepth to " + " run with a higher max depth or " + "Rerun without max depth.

      Message: " + "Diff suppressed as the expected and actual results have an equivalent" + " serialization
      Source:
      " + escapeText(details.source) + "
      "; + + // This occurs when pushFailure is set and we have an extracted stack trace + } else if (!details.result && details.source) { + message += "" + "" + "
      Source:
      " + escapeText(details.source) + "
      "; + } + + assertList = testItem.getElementsByTagName("ol")[0]; + + assertLi = document$$1.createElement("li"); + assertLi.className = details.result ? "pass" : "fail"; + assertLi.innerHTML = message; + assertList.appendChild(assertLi); + }); + + QUnit.testDone(function (details) { + var testTitle, + time, + testItem, + assertList, + good, + bad, + testCounts, + skipped, + sourceName, + tests = id("qunit-tests"); + + if (!tests) { + return; + } + + testItem = id("qunit-test-output-" + details.testId); + + assertList = testItem.getElementsByTagName("ol")[0]; + + good = details.passed; + bad = details.failed; + + // This test passed if it has no unexpected failed assertions + var testPassed = details.failed > 0 ? details.todo : !details.todo; + + if (testPassed) { + + // Collapse the passing tests + addClass(assertList, "qunit-collapsed"); + } else if (config.collapse) { + if (!collapseNext) { + + // Skip collapsing the first failing test + collapseNext = true; + } else { + + // Collapse remaining tests + addClass(assertList, "qunit-collapsed"); + } + } + + // The testItem.firstChild is the test name + testTitle = testItem.firstChild; + + testCounts = bad ? "" + bad + ", " + "" + good + ", " : ""; + + testTitle.innerHTML += " (" + testCounts + details.assertions.length + ")"; + + if (details.skipped) { + stats.skippedTests++; + + testItem.className = "skipped"; + skipped = document$$1.createElement("em"); + skipped.className = "qunit-skipped-label"; + skipped.innerHTML = "skipped"; + testItem.insertBefore(skipped, testTitle); + } else { + addEvent(testTitle, "click", function () { + toggleClass(assertList, "qunit-collapsed"); + }); + + testItem.className = testPassed ? "pass" : "fail"; + + if (details.todo) { + var todoLabel = document$$1.createElement("em"); + todoLabel.className = "qunit-todo-label"; + todoLabel.innerHTML = "todo"; + testItem.insertBefore(todoLabel, testTitle); + } + + time = document$$1.createElement("span"); + time.className = "runtime"; + time.innerHTML = details.runtime + " ms"; + testItem.insertBefore(time, assertList); + + if (!testPassed) { + stats.failedTests++; + } else if (details.todo) { + stats.todoTests++; + } else { + stats.passedTests++; + } + } + + // Show the source of the test when showing assertions + if (details.source) { + sourceName = document$$1.createElement("p"); + sourceName.innerHTML = "Source: " + details.source; + addClass(sourceName, "qunit-source"); + if (testPassed) { + addClass(sourceName, "qunit-collapsed"); + } + addEvent(testTitle, "click", function () { + toggleClass(sourceName, "qunit-collapsed"); + }); + testItem.appendChild(sourceName); + } + }); + + // Avoid readyState issue with phantomjs + // Ref: #818 + var notPhantom = function (p) { + return !(p && p.version && p.version.major > 0); + }(window.phantom); + + if (notPhantom && document$$1.readyState === "complete") { + QUnit.load(); + } else { + addEvent(window, "load", QUnit.load); + } + + // Wrap window.onerror. We will call the original window.onerror to see if + // the existing handler fully handles the error; if not, we will call the + // QUnit.onError function. + var originalWindowOnError = window.onerror; + + // Cover uncaught exceptions + // Returning true will suppress the default browser handler, + // returning false will let it run. + window.onerror = function (message, fileName, lineNumber) { + var ret = false; + if (originalWindowOnError) { + for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; + } + + ret = originalWindowOnError.call.apply(originalWindowOnError, [this, message, fileName, lineNumber].concat(args)); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if (ret !== true) { + var error = { + message: message, + fileName: fileName, + lineNumber: lineNumber + }; + + ret = QUnit.onError(error); + } + + return ret; + }; + })(); + + /* + * This file is a modified version of google-diff-match-patch's JavaScript implementation + * (https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js), + * modifications are licensed as more fully set forth in LICENSE.txt. + * + * The original source of google-diff-match-patch is attributable and licensed as follows: + * + * Copyright 2006 Google Inc. + * https://code.google.com/p/google-diff-match-patch/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * More Info: + * https://code.google.com/p/google-diff-match-patch/ + * + * Usage: QUnit.diff(expected, actual) + * + */ + QUnit.diff = function () { + function DiffMatchPatch() {} + + // DIFF FUNCTIONS + + /** + * The data structure representing a diff is an array of tuples: + * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] + * which means: delete 'Hello', add 'Goodbye' and keep ' world.' + */ + var DIFF_DELETE = -1, + DIFF_INSERT = 1, + DIFF_EQUAL = 0; + + /** + * Find the differences between two texts. Simplifies the problem by stripping + * any common prefix or suffix off the texts before diffing. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean=} optChecklines Optional speedup flag. If present and false, + * then don't run a line-level diff first to identify the changed areas. + * Defaults to true, which does a faster, slightly less optimal diff. + * @return {!Array.} Array of diff tuples. + */ + DiffMatchPatch.prototype.DiffMain = function (text1, text2, optChecklines) { + var deadline, checklines, commonlength, commonprefix, commonsuffix, diffs; + + // The diff must be complete in up to 1 second. + deadline = new Date().getTime() + 1000; + + // Check for null inputs. + if (text1 === null || text2 === null) { + throw new Error("Null input. (DiffMain)"); + } + + // Check for equality (speedup). + if (text1 === text2) { + if (text1) { + return [[DIFF_EQUAL, text1]]; + } + return []; + } + + if (typeof optChecklines === "undefined") { + optChecklines = true; + } + + checklines = optChecklines; + + // Trim off common prefix (speedup). + commonlength = this.diffCommonPrefix(text1, text2); + commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + + // Trim off common suffix (speedup). + commonlength = this.diffCommonSuffix(text1, text2); + commonsuffix = text1.substring(text1.length - commonlength); + text1 = text1.substring(0, text1.length - commonlength); + text2 = text2.substring(0, text2.length - commonlength); + + // Compute the diff on the middle block. + diffs = this.diffCompute(text1, text2, checklines, deadline); + + // Restore the prefix and suffix. + if (commonprefix) { + diffs.unshift([DIFF_EQUAL, commonprefix]); + } + if (commonsuffix) { + diffs.push([DIFF_EQUAL, commonsuffix]); + } + this.diffCleanupMerge(diffs); + return diffs; + }; + + /** + * Reduce the number of edits by eliminating operationally trivial equalities. + * @param {!Array.} diffs Array of diff tuples. + */ + DiffMatchPatch.prototype.diffCleanupEfficiency = function (diffs) { + var changes, equalities, equalitiesLength, lastequality, pointer, preIns, preDel, postIns, postDel; + changes = false; + equalities = []; // Stack of indices where equalities are found. + equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + lastequality = null; + + // Always equal to diffs[equalities[equalitiesLength - 1]][1] + pointer = 0; // Index of current position. + + // Is there an insertion operation before the last equality. + preIns = false; + + // Is there a deletion operation before the last equality. + preDel = false; + + // Is there an insertion operation after the last equality. + postIns = false; + + // Is there a deletion operation after the last equality. + postDel = false; + while (pointer < diffs.length) { + + // Equality found. + if (diffs[pointer][0] === DIFF_EQUAL) { + if (diffs[pointer][1].length < 4 && (postIns || postDel)) { + + // Candidate found. + equalities[equalitiesLength++] = pointer; + preIns = postIns; + preDel = postDel; + lastequality = diffs[pointer][1]; + } else { + + // Not a candidate, and can never become one. + equalitiesLength = 0; + lastequality = null; + } + postIns = postDel = false; + + // An insertion or deletion. + } else { + + if (diffs[pointer][0] === DIFF_DELETE) { + postDel = true; + } else { + postIns = true; + } + + /* + * Five types to be split: + * ABXYCD + * AXCD + * ABXC + * AXCD + * ABXC + */ + if (lastequality && (preIns && preDel && postIns && postDel || lastequality.length < 2 && preIns + preDel + postIns + postDel === 3)) { + + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastequality]); + + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + equalitiesLength--; // Throw away the equality we just deleted; + lastequality = null; + if (preIns && preDel) { + + // No changes made which could affect previous entry, keep going. + postIns = postDel = true; + equalitiesLength = 0; + } else { + equalitiesLength--; // Throw away the previous equality. + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + postIns = postDel = false; + } + changes = true; + } + } + pointer++; + } + + if (changes) { + this.diffCleanupMerge(diffs); + } + }; + + /** + * Convert a diff array into a pretty HTML report. + * @param {!Array.} diffs Array of diff tuples. + * @param {integer} string to be beautified. + * @return {string} HTML representation. + */ + DiffMatchPatch.prototype.diffPrettyHtml = function (diffs) { + var op, + data, + x, + html = []; + for (x = 0; x < diffs.length; x++) { + op = diffs[x][0]; // Operation (insert, delete, equal) + data = diffs[x][1]; // Text of change. + switch (op) { + case DIFF_INSERT: + html[x] = "" + escapeText(data) + ""; + break; + case DIFF_DELETE: + html[x] = "" + escapeText(data) + ""; + break; + case DIFF_EQUAL: + html[x] = "" + escapeText(data) + ""; + break; + } + } + return html.join(""); + }; + + /** + * Determine the common prefix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the start of each + * string. + */ + DiffMatchPatch.prototype.diffCommonPrefix = function (text1, text2) { + var pointermid, pointermax, pointermin, pointerstart; + + // Quick check for common null cases. + if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) { + return 0; + } + + // Binary search. + // Performance analysis: https://neil.fraser.name/news/2007/10/09/ + pointermin = 0; + pointermax = Math.min(text1.length, text2.length); + pointermid = pointermax; + pointerstart = 0; + while (pointermin < pointermid) { + if (text1.substring(pointerstart, pointermid) === text2.substring(pointerstart, pointermid)) { + pointermin = pointermid; + pointerstart = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; + }; + + /** + * Determine the common suffix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of each string. + */ + DiffMatchPatch.prototype.diffCommonSuffix = function (text1, text2) { + var pointermid, pointermax, pointermin, pointerend; + + // Quick check for common null cases. + if (!text1 || !text2 || text1.charAt(text1.length - 1) !== text2.charAt(text2.length - 1)) { + return 0; + } + + // Binary search. + // Performance analysis: https://neil.fraser.name/news/2007/10/09/ + pointermin = 0; + pointermax = Math.min(text1.length, text2.length); + pointermid = pointermax; + pointerend = 0; + while (pointermin < pointermid) { + if (text1.substring(text1.length - pointermid, text1.length - pointerend) === text2.substring(text2.length - pointermid, text2.length - pointerend)) { + pointermin = pointermid; + pointerend = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; + }; + + /** + * Find the differences between two texts. Assumes that the texts do not + * have any common prefix or suffix. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean} checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster, slightly less optimal diff. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffCompute = function (text1, text2, checklines, deadline) { + var diffs, longtext, shorttext, i, hm, text1A, text2A, text1B, text2B, midCommon, diffsA, diffsB; + + if (!text1) { + + // Just add some text (speedup). + return [[DIFF_INSERT, text2]]; + } + + if (!text2) { + + // Just delete some text (speedup). + return [[DIFF_DELETE, text1]]; + } + + longtext = text1.length > text2.length ? text1 : text2; + shorttext = text1.length > text2.length ? text2 : text1; + i = longtext.indexOf(shorttext); + if (i !== -1) { + + // Shorter text is inside the longer text (speedup). + diffs = [[DIFF_INSERT, longtext.substring(0, i)], [DIFF_EQUAL, shorttext], [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; + + // Swap insertions for deletions if diff is reversed. + if (text1.length > text2.length) { + diffs[0][0] = diffs[2][0] = DIFF_DELETE; + } + return diffs; + } + + if (shorttext.length === 1) { + + // Single character string. + // After the previous speedup, the character can't be an equality. + return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; + } + + // Check to see if the problem can be split in two. + hm = this.diffHalfMatch(text1, text2); + if (hm) { + + // A half-match was found, sort out the return data. + text1A = hm[0]; + text1B = hm[1]; + text2A = hm[2]; + text2B = hm[3]; + midCommon = hm[4]; + + // Send both pairs off for separate processing. + diffsA = this.DiffMain(text1A, text2A, checklines, deadline); + diffsB = this.DiffMain(text1B, text2B, checklines, deadline); + + // Merge the results. + return diffsA.concat([[DIFF_EQUAL, midCommon]], diffsB); + } + + if (checklines && text1.length > 100 && text2.length > 100) { + return this.diffLineMode(text1, text2, deadline); + } + + return this.diffBisect(text1, text2, deadline); + }; + + /** + * Do the two texts share a substring which is at least half the length of the + * longer text? + * This speedup can produce non-minimal diffs. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {Array.} Five element Array, containing the prefix of + * text1, the suffix of text1, the prefix of text2, the suffix of + * text2 and the common middle. Or null if there was no match. + * @private + */ + DiffMatchPatch.prototype.diffHalfMatch = function (text1, text2) { + var longtext, shorttext, dmp, text1A, text2B, text2A, text1B, midCommon, hm1, hm2, hm; + + longtext = text1.length > text2.length ? text1 : text2; + shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { + return null; // Pointless. + } + dmp = this; // 'this' becomes 'window' in a closure. + + /** + * Does a substring of shorttext exist within longtext such that the substring + * is at least half the length of longtext? + * Closure, but does not reference any external variables. + * @param {string} longtext Longer string. + * @param {string} shorttext Shorter string. + * @param {number} i Start index of quarter length substring within longtext. + * @return {Array.} Five element Array, containing the prefix of + * longtext, the suffix of longtext, the prefix of shorttext, the suffix + * of shorttext and the common middle. Or null if there was no match. + * @private + */ + function diffHalfMatchI(longtext, shorttext, i) { + var seed, j, bestCommon, prefixLength, suffixLength, bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB; + + // Start with a 1/4 length substring at position i as a seed. + seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); + j = -1; + bestCommon = ""; + while ((j = shorttext.indexOf(seed, j + 1)) !== -1) { + prefixLength = dmp.diffCommonPrefix(longtext.substring(i), shorttext.substring(j)); + suffixLength = dmp.diffCommonSuffix(longtext.substring(0, i), shorttext.substring(0, j)); + if (bestCommon.length < suffixLength + prefixLength) { + bestCommon = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength); + bestLongtextA = longtext.substring(0, i - suffixLength); + bestLongtextB = longtext.substring(i + prefixLength); + bestShorttextA = shorttext.substring(0, j - suffixLength); + bestShorttextB = shorttext.substring(j + prefixLength); + } + } + if (bestCommon.length * 2 >= longtext.length) { + return [bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB, bestCommon]; + } else { + return null; + } + } + + // First check if the second quarter is the seed for a half-match. + hm1 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 4)); + + // Check again based on the third quarter. + hm2 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 2)); + if (!hm1 && !hm2) { + return null; + } else if (!hm2) { + hm = hm1; + } else if (!hm1) { + hm = hm2; + } else { + + // Both matched. Select the longest. + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + } + + // A half-match was found, sort out the return data. + if (text1.length > text2.length) { + text1A = hm[0]; + text1B = hm[1]; + text2A = hm[2]; + text2B = hm[3]; + } else { + text2A = hm[0]; + text2B = hm[1]; + text1A = hm[2]; + text1B = hm[3]; + } + midCommon = hm[4]; + return [text1A, text1B, text2A, text2B, midCommon]; + }; + + /** + * Do a quick line-level diff on both strings, then rediff the parts for + * greater accuracy. + * This speedup can produce non-minimal diffs. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffLineMode = function (text1, text2, deadline) { + var a, diffs, linearray, pointer, countInsert, countDelete, textInsert, textDelete, j; + + // Scan the text on a line-by-line basis first. + a = this.diffLinesToChars(text1, text2); + text1 = a.chars1; + text2 = a.chars2; + linearray = a.lineArray; + + diffs = this.DiffMain(text1, text2, false, deadline); + + // Convert the diff back to original text. + this.diffCharsToLines(diffs, linearray); + + // Eliminate freak matches (e.g. blank lines) + this.diffCleanupSemantic(diffs); + + // Rediff any replacement blocks, this time character-by-character. + // Add a dummy entry at the end. + diffs.push([DIFF_EQUAL, ""]); + pointer = 0; + countDelete = 0; + countInsert = 0; + textDelete = ""; + textInsert = ""; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + countInsert++; + textInsert += diffs[pointer][1]; + break; + case DIFF_DELETE: + countDelete++; + textDelete += diffs[pointer][1]; + break; + case DIFF_EQUAL: + + // Upon reaching an equality, check for prior redundancies. + if (countDelete >= 1 && countInsert >= 1) { + + // Delete the offending records and add the merged ones. + diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert); + pointer = pointer - countDelete - countInsert; + a = this.DiffMain(textDelete, textInsert, false, deadline); + for (j = a.length - 1; j >= 0; j--) { + diffs.splice(pointer, 0, a[j]); + } + pointer = pointer + a.length; + } + countInsert = 0; + countDelete = 0; + textDelete = ""; + textInsert = ""; + break; + } + pointer++; + } + diffs.pop(); // Remove the dummy entry at the end. + + return diffs; + }; + + /** + * Find the 'middle snake' of a diff, split the problem in two + * and return the recursively constructed diff. + * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffBisect = function (text1, text2, deadline) { + var text1Length, text2Length, maxD, vOffset, vLength, v1, v2, x, delta, front, k1start, k1end, k2start, k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2; + + // Cache the text lengths to prevent multiple calls. + text1Length = text1.length; + text2Length = text2.length; + maxD = Math.ceil((text1Length + text2Length) / 2); + vOffset = maxD; + vLength = 2 * maxD; + v1 = new Array(vLength); + v2 = new Array(vLength); + + // Setting all elements to -1 is faster in Chrome & Firefox than mixing + // integers and undefined. + for (x = 0; x < vLength; x++) { + v1[x] = -1; + v2[x] = -1; + } + v1[vOffset + 1] = 0; + v2[vOffset + 1] = 0; + delta = text1Length - text2Length; + + // If the total number of characters is odd, then the front path will collide + // with the reverse path. + front = delta % 2 !== 0; + + // Offsets for start and end of k loop. + // Prevents mapping of space beyond the grid. + k1start = 0; + k1end = 0; + k2start = 0; + k2end = 0; + for (d = 0; d < maxD; d++) { + + // Bail out if deadline is reached. + if (new Date().getTime() > deadline) { + break; + } + + // Walk the front path one step. + for (k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { + k1Offset = vOffset + k1; + if (k1 === -d || k1 !== d && v1[k1Offset - 1] < v1[k1Offset + 1]) { + x1 = v1[k1Offset + 1]; + } else { + x1 = v1[k1Offset - 1] + 1; + } + y1 = x1 - k1; + while (x1 < text1Length && y1 < text2Length && text1.charAt(x1) === text2.charAt(y1)) { + x1++; + y1++; + } + v1[k1Offset] = x1; + if (x1 > text1Length) { + + // Ran off the right of the graph. + k1end += 2; + } else if (y1 > text2Length) { + + // Ran off the bottom of the graph. + k1start += 2; + } else if (front) { + k2Offset = vOffset + delta - k1; + if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) { + + // Mirror x2 onto top-left coordinate system. + x2 = text1Length - v2[k2Offset]; + if (x1 >= x2) { + + // Overlap detected. + return this.diffBisectSplit(text1, text2, x1, y1, deadline); + } + } + } + } + + // Walk the reverse path one step. + for (k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { + k2Offset = vOffset + k2; + if (k2 === -d || k2 !== d && v2[k2Offset - 1] < v2[k2Offset + 1]) { + x2 = v2[k2Offset + 1]; + } else { + x2 = v2[k2Offset - 1] + 1; + } + y2 = x2 - k2; + while (x2 < text1Length && y2 < text2Length && text1.charAt(text1Length - x2 - 1) === text2.charAt(text2Length - y2 - 1)) { + x2++; + y2++; + } + v2[k2Offset] = x2; + if (x2 > text1Length) { + + // Ran off the left of the graph. + k2end += 2; + } else if (y2 > text2Length) { + + // Ran off the top of the graph. + k2start += 2; + } else if (!front) { + k1Offset = vOffset + delta - k2; + if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) { + x1 = v1[k1Offset]; + y1 = vOffset + x1 - k1Offset; + + // Mirror x2 onto top-left coordinate system. + x2 = text1Length - x2; + if (x1 >= x2) { + + // Overlap detected. + return this.diffBisectSplit(text1, text2, x1, y1, deadline); + } + } + } + } + } + + // Diff took too long and hit the deadline or + // number of diffs equals number of characters, no commonality at all. + return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; + }; + + /** + * Given the location of the 'middle snake', split the diff in two parts + * and recurse. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} x Index of split point in text1. + * @param {number} y Index of split point in text2. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffBisectSplit = function (text1, text2, x, y, deadline) { + var text1a, text1b, text2a, text2b, diffs, diffsb; + text1a = text1.substring(0, x); + text2a = text2.substring(0, y); + text1b = text1.substring(x); + text2b = text2.substring(y); + + // Compute both diffs serially. + diffs = this.DiffMain(text1a, text2a, false, deadline); + diffsb = this.DiffMain(text1b, text2b, false, deadline); + + return diffs.concat(diffsb); + }; + + /** + * Reduce the number of edits by eliminating semantically trivial equalities. + * @param {!Array.} diffs Array of diff tuples. + */ + DiffMatchPatch.prototype.diffCleanupSemantic = function (diffs) { + var changes, equalities, equalitiesLength, lastequality, pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1, lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2; + changes = false; + equalities = []; // Stack of indices where equalities are found. + equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + lastequality = null; + + // Always equal to diffs[equalities[equalitiesLength - 1]][1] + pointer = 0; // Index of current position. + + // Number of characters that changed prior to the equality. + lengthInsertions1 = 0; + lengthDeletions1 = 0; + + // Number of characters that changed after the equality. + lengthInsertions2 = 0; + lengthDeletions2 = 0; + while (pointer < diffs.length) { + if (diffs[pointer][0] === DIFF_EQUAL) { + // Equality found. + equalities[equalitiesLength++] = pointer; + lengthInsertions1 = lengthInsertions2; + lengthDeletions1 = lengthDeletions2; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + lastequality = diffs[pointer][1]; + } else { + // An insertion or deletion. + if (diffs[pointer][0] === DIFF_INSERT) { + lengthInsertions2 += diffs[pointer][1].length; + } else { + lengthDeletions2 += diffs[pointer][1].length; + } + + // Eliminate an equality that is smaller or equal to the edits on both + // sides of it. + if (lastequality && lastequality.length <= Math.max(lengthInsertions1, lengthDeletions1) && lastequality.length <= Math.max(lengthInsertions2, lengthDeletions2)) { + + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastequality]); + + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + + // Throw away the equality we just deleted. + equalitiesLength--; + + // Throw away the previous equality (it needs to be reevaluated). + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + + // Reset the counters. + lengthInsertions1 = 0; + lengthDeletions1 = 0; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + + // Normalize the diff. + if (changes) { + this.diffCleanupMerge(diffs); + } + + // Find any overlaps between deletions and insertions. + // e.g: abcxxxxxxdef + // -> abcxxxdef + // e.g: xxxabcdefxxx + // -> defxxxabc + // Only extract an overlap if it is as big as the edit ahead or behind it. + pointer = 1; + while (pointer < diffs.length) { + if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) { + deletion = diffs[pointer - 1][1]; + insertion = diffs[pointer][1]; + overlapLength1 = this.diffCommonOverlap(deletion, insertion); + overlapLength2 = this.diffCommonOverlap(insertion, deletion); + if (overlapLength1 >= overlapLength2) { + if (overlapLength1 >= deletion.length / 2 || overlapLength1 >= insertion.length / 2) { + + // Overlap found. Insert an equality and trim the surrounding edits. + diffs.splice(pointer, 0, [DIFF_EQUAL, insertion.substring(0, overlapLength1)]); + diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlapLength1); + diffs[pointer + 1][1] = insertion.substring(overlapLength1); + pointer++; + } + } else { + if (overlapLength2 >= deletion.length / 2 || overlapLength2 >= insertion.length / 2) { + + // Reverse overlap found. + // Insert an equality and swap and trim the surrounding edits. + diffs.splice(pointer, 0, [DIFF_EQUAL, deletion.substring(0, overlapLength2)]); + + diffs[pointer - 1][0] = DIFF_INSERT; + diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlapLength2); + diffs[pointer + 1][0] = DIFF_DELETE; + diffs[pointer + 1][1] = deletion.substring(overlapLength2); + pointer++; + } + } + pointer++; + } + pointer++; + } + }; + + /** + * Determine if the suffix of one string is the prefix of another. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of the first + * string and the start of the second string. + * @private + */ + DiffMatchPatch.prototype.diffCommonOverlap = function (text1, text2) { + var text1Length, text2Length, textLength, best, length, pattern, found; + + // Cache the text lengths to prevent multiple calls. + text1Length = text1.length; + text2Length = text2.length; + + // Eliminate the null case. + if (text1Length === 0 || text2Length === 0) { + return 0; + } + + // Truncate the longer string. + if (text1Length > text2Length) { + text1 = text1.substring(text1Length - text2Length); + } else if (text1Length < text2Length) { + text2 = text2.substring(0, text1Length); + } + textLength = Math.min(text1Length, text2Length); + + // Quick check for the worst case. + if (text1 === text2) { + return textLength; + } + + // Start by looking for a single character match + // and increase length until no match is found. + // Performance analysis: https://neil.fraser.name/news/2010/11/04/ + best = 0; + length = 1; + while (true) { + pattern = text1.substring(textLength - length); + found = text2.indexOf(pattern); + if (found === -1) { + return best; + } + length += found; + if (found === 0 || text1.substring(textLength - length) === text2.substring(0, length)) { + best = length; + length++; + } + } + }; + + /** + * Split two texts into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {{chars1: string, chars2: string, lineArray: !Array.}} + * An object containing the encoded text1, the encoded text2 and + * the array of unique strings. + * The zeroth element of the array of unique strings is intentionally blank. + * @private + */ + DiffMatchPatch.prototype.diffLinesToChars = function (text1, text2) { + var lineArray, lineHash, chars1, chars2; + lineArray = []; // E.g. lineArray[4] === 'Hello\n' + lineHash = {}; // E.g. lineHash['Hello\n'] === 4 + + // '\x00' is a valid character, but various debuggers don't like it. + // So we'll insert a junk entry to avoid generating a null character. + lineArray[0] = ""; + + /** + * Split a text into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * Modifies linearray and linehash through being a closure. + * @param {string} text String to encode. + * @return {string} Encoded string. + * @private + */ + function diffLinesToCharsMunge(text) { + var chars, lineStart, lineEnd, lineArrayLength, line; + chars = ""; + + // Walk the text, pulling out a substring for each line. + // text.split('\n') would would temporarily double our memory footprint. + // Modifying text would create many large strings to garbage collect. + lineStart = 0; + lineEnd = -1; + + // Keeping our own length variable is faster than looking it up. + lineArrayLength = lineArray.length; + while (lineEnd < text.length - 1) { + lineEnd = text.indexOf("\n", lineStart); + if (lineEnd === -1) { + lineEnd = text.length - 1; + } + line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + + if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) { + chars += String.fromCharCode(lineHash[line]); + } else { + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + } + return chars; + } + + chars1 = diffLinesToCharsMunge(text1); + chars2 = diffLinesToCharsMunge(text2); + return { + chars1: chars1, + chars2: chars2, + lineArray: lineArray + }; + }; + + /** + * Rehydrate the text in a diff from a string of line hashes to real lines of + * text. + * @param {!Array.} diffs Array of diff tuples. + * @param {!Array.} lineArray Array of unique strings. + * @private + */ + DiffMatchPatch.prototype.diffCharsToLines = function (diffs, lineArray) { + var x, chars, text, y; + for (x = 0; x < diffs.length; x++) { + chars = diffs[x][1]; + text = []; + for (y = 0; y < chars.length; y++) { + text[y] = lineArray[chars.charCodeAt(y)]; + } + diffs[x][1] = text.join(""); + } + }; + + /** + * Reorder and merge like edit sections. Merge equalities. + * Any edit section can move as long as it doesn't cross an equality. + * @param {!Array.} diffs Array of diff tuples. + */ + DiffMatchPatch.prototype.diffCleanupMerge = function (diffs) { + var pointer, countDelete, countInsert, textInsert, textDelete, commonlength, changes, diffPointer, position; + diffs.push([DIFF_EQUAL, ""]); // Add a dummy entry at the end. + pointer = 0; + countDelete = 0; + countInsert = 0; + textDelete = ""; + textInsert = ""; + + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + countInsert++; + textInsert += diffs[pointer][1]; + pointer++; + break; + case DIFF_DELETE: + countDelete++; + textDelete += diffs[pointer][1]; + pointer++; + break; + case DIFF_EQUAL: + + // Upon reaching an equality, check for prior redundancies. + if (countDelete + countInsert > 1) { + if (countDelete !== 0 && countInsert !== 0) { + + // Factor out any common prefixes. + commonlength = this.diffCommonPrefix(textInsert, textDelete); + if (commonlength !== 0) { + if (pointer - countDelete - countInsert > 0 && diffs[pointer - countDelete - countInsert - 1][0] === DIFF_EQUAL) { + diffs[pointer - countDelete - countInsert - 1][1] += textInsert.substring(0, commonlength); + } else { + diffs.splice(0, 0, [DIFF_EQUAL, textInsert.substring(0, commonlength)]); + pointer++; + } + textInsert = textInsert.substring(commonlength); + textDelete = textDelete.substring(commonlength); + } + + // Factor out any common suffixies. + commonlength = this.diffCommonSuffix(textInsert, textDelete); + if (commonlength !== 0) { + diffs[pointer][1] = textInsert.substring(textInsert.length - commonlength) + diffs[pointer][1]; + textInsert = textInsert.substring(0, textInsert.length - commonlength); + textDelete = textDelete.substring(0, textDelete.length - commonlength); + } + } + + // Delete the offending records and add the merged ones. + if (countDelete === 0) { + diffs.splice(pointer - countInsert, countDelete + countInsert, [DIFF_INSERT, textInsert]); + } else if (countInsert === 0) { + diffs.splice(pointer - countDelete, countDelete + countInsert, [DIFF_DELETE, textDelete]); + } else { + diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert, [DIFF_DELETE, textDelete], [DIFF_INSERT, textInsert]); + } + pointer = pointer - countDelete - countInsert + (countDelete ? 1 : 0) + (countInsert ? 1 : 0) + 1; + } else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) { + + // Merge this equality with the previous one. + diffs[pointer - 1][1] += diffs[pointer][1]; + diffs.splice(pointer, 1); + } else { + pointer++; + } + countInsert = 0; + countDelete = 0; + textDelete = ""; + textInsert = ""; + break; + } + } + if (diffs[diffs.length - 1][1] === "") { + diffs.pop(); // Remove the dummy entry at the end. + } + + // Second pass: look for single edits surrounded on both sides by equalities + // which can be shifted sideways to eliminate an equality. + // e.g: ABAC -> ABAC + changes = false; + pointer = 1; + + // Intentionally ignore the first and last element (don't need checking). + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) { + + diffPointer = diffs[pointer][1]; + position = diffPointer.substring(diffPointer.length - diffs[pointer - 1][1].length); + + // This is a single edit surrounded by equalities. + if (position === diffs[pointer - 1][1]) { + + // Shift the edit over the previous equality. + diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length); + diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; + diffs.splice(pointer - 1, 1); + changes = true; + } else if (diffPointer.substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1]) { + + // Shift the edit over the next equality. + diffs[pointer - 1][1] += diffs[pointer + 1][1]; + diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1]; + diffs.splice(pointer + 1, 1); + changes = true; + } + } + pointer++; + } + + // If shifts were made, the diff needs reordering and another shift sweep. + if (changes) { + this.diffCleanupMerge(diffs); + } + }; + + return function (o, n) { + var diff, output, text; + diff = new DiffMatchPatch(); + output = diff.DiffMain(o, n); + diff.diffCleanupEfficiency(output); + text = diff.diffPrettyHtml(output); + + return text; + }; + }(); + +}((function() { return this; }()))); diff --git a/app/Resources/public/assets/keyboard/testing/test.html b/app/Resources/public/assets/keyboard/testing/test.html new file mode 100644 index 0000000000..1f3c0b528b --- /dev/null +++ b/app/Resources/public/assets/keyboard/testing/test.html @@ -0,0 +1,35 @@ + + + + + Virtual Keyboard Testing (WIP) + + + + + + + + + + + + + +
      +
      + +
      + + +
      + +
      + + + diff --git a/app/Resources/public/assets/keyboard/testing/testing.js b/app/Resources/public/assets/keyboard/testing/testing.js new file mode 100644 index 0000000000..862904b9c9 --- /dev/null +++ b/app/Resources/public/assets/keyboard/testing/testing.js @@ -0,0 +1,248 @@ +/*! +* TableSorter QUnit Testing +*/ +/*jshint unused: true */ +/*global QUnit: false, jQuery: false */ + +jQuery(function($){ + + var $keyboard = $.keyboard, + + compare = function( $key, data ) { + var valid = true; + $.each( data, function(k, v){ + if ( valid ) { + switch( k ) { + case 'hasClass': + valid = $key.hasClass( v ); + break; + case 'text': + valid = $key.find('span').html() === v; + break; + default: + valid = $key.attr(k) === v; + } + } + }); + return valid; + }, + + runTests = function( kb ) { + QUnit.module('core'); + + /************************************************ + processName + ************************************************/ + QUnit.test( 'processName', function(assert) { + var p = kb.processName; + assert.expect(17); + assert.equal( p('a'), 'a', 'Single letter "a"'); + assert.equal( p('z'), 'z', 'Single letter "z"'); + assert.equal( p('-'), '-', 'Dash "-"'); // previously returned empty string + assert.equal( p('_'), '_', 'Underscore "_"'); + assert.equal( p('te'), 'te', 'Two letters "te"'); + assert.equal( p('tes'), 'tes', 'Three letters "test"'); + assert.equal( p('test'), 'test', 'Four letters "test"'); + assert.equal( p('TeSt'), 'TeSt', 'Preserve character case "TeSt"'); + assert.equal( p('test_button'), 'test_button', 'Two words, leave underscore "test_button"'); + assert.equal( p('\u03b1'), '945', 'Replace non-alphanumeric with character code "\u03b1" -> "945"'); + assert.equal( p('\u03b1\u03b2'), '945-946', '"\u03b1\u03b2" -> "945-946"'); + assert.equal( p('xy\u03b1\u03b2\u03bez'), 'xy-945-946-958z', '"xy\u03b1\u03b2\u03bez" -> "xy-945-946-958z"'); + assert.equal( p('test_x'), 'test_x', '"test_x" -> "test_x"'); + assert.equal( p('test-xx'), 'test-xx', '"test-xx" -> "test-xx"'); + assert.equal( p('test-\u03b1'), 'test-945', '"test-\u03b1" -> "test-945"'); + assert.equal( p('test-\u03b1\u03b2'), 'test-945-946', '"test-\u03b1\u03b2" -> "test-945-946"'); + assert.equal( p('test_\u03b1\u03b2'), 'test-945-946', '"test_\u03b1\u03b2" -> "test_-945-946"'); + }); + + /************************************************ + processKey + ************************************************/ + QUnit.test( 'processKeys', function(assert) { + var k = kb.processKeys; + assert.expect(16); + assert.deepEqual( k(''), { name: '', map: '', title: ''}, 'Empty name'); + assert.deepEqual( k('test'), { name: 'test', map: '', title: '' }, 'test'); + assert.deepEqual( k('@:this_is_an_at_symbol'), { name: '@', map: '', title: 'this is an at symbol' }, '@:this_is_an_at_symbol'); + assert.deepEqual( k(';(q)'), { name: ';', map: 'q', title: '' }, ';(q)'); + assert.deepEqual( k('\u03b1(a):lower_case_alpha_(type_a)'), { name: '\u03b1', map: 'a', title: 'lower case alpha (type a)' }, '\u03b1(a):lower_case_alpha_(type_a)'); + assert.deepEqual( k('((*)'), { name: '(', map: '*', title: '' }, '((*)'); + assert.deepEqual( k(')(()'), { name: ')', map: '(', title: '' }, ')(()'); + assert.deepEqual( k(')(():test_(ok)'), { name: ')', map: '(', title: 'test (ok)' }, ')(():test_(ok)'); + assert.deepEqual( k('=())'), { name: '=', map: ')', title: '' }, '=())'); + assert.deepEqual( k('=()):foo_(bar)'), { name: '=', map: ')', title: 'foo (bar)' }, '=()):foo_(bar)'); + assert.deepEqual( k('::bar_(foo)'), { name: ':', map: '', title: 'bar (foo)' }, '::bar_(foo)'); + assert.deepEqual( k('x(:)'), { name: 'x', map: ':', title: '' }, 'x(:)'); + assert.deepEqual( k(':(:)'), { name: ':', map: ':', title: '' }, ':(:)'); + assert.deepEqual( k('x(:):;'), { name: 'x', map: ':', title: ';' }, 'x(:):;'); + assert.deepEqual( k(':(:):;'), { name: ':', map: ':', title: ';' }, ':(:):;'); + assert.deepEqual( k(':(:):test2_(status:ok)'), { name: ':', map: ':', title: 'test2 (status:ok)' }, ':(:):test2_(status:ok)'); + }); + + /************************************************ + customHash + ************************************************/ + QUnit.test( 'customHash', function( assert ) { + var layouts = $keyboard.layouts; + assert.expect(3); + // custom hash should not vary over time; so if a default layout changes, + // it will show up here as an error + assert.equal( kb.customHash( layouts.alpha ), '-744693299', 'Hash consistent on alpha layout'); + assert.equal( kb.customHash( layouts.qwerty ), '608635341', 'Hash consistent on qwerty layout'); + assert.equal( kb.customHash( layouts.num ), '1954922603', 'Hash consistent on num layout'); + }); + + /************************************************ + makePreview + ************************************************/ + QUnit.test( 'make preview', function( assert ) { + var done = assert.async(); + assert.expect(3); + + $('#test') + .html('') + .find('input') + .keyboard({ + layout : 'qwerty', + alwaysOpen: true, + // visible callback *should* work here without a setTimeout, but it isn't for some unknown reason... + initialized: function( e, keyboard ) { + setTimeout(function(){ + var el = keyboard.preview, + dataRemoved = typeof el['data-test'] === 'undefined' && typeof el['data-this-is-a-fake'] === 'undefined'; + assert.equal( el.type, 'text', 'Preview type changed from number to text' ); + assert.equal( typeof el['aria-haspopup'], 'undefined', 'Preview aria-haspopup removed' ); + assert.equal( dataRemoved, true, 'Preview data-attributes removed' ); + keyboard.destroy(); + done(); + }, 10); + } + }); + + }); + + /************************************************ + addKey + ************************************************/ + QUnit.test( 'addKey', function(assert) { + var tmp, + k = kb.addKey; + assert.expect(7); + assert.equal( true, compare( k('accept', 'accept'), { + 'data-name': 'accept', + 'data-value': 'accept', + 'title': 'Accept (Shift+Enter)', + 'hasClass': 'ui-keyboard-accept', + 'text': 'Accept' + }), + 'accept key' + ); + assert.equal( true, compare( k('accept', 'a'), { + 'data-name': 'accept', + 'data-value': 'accept', + 'title': 'Accept (Shift+Enter)', + 'hasClass': 'ui-keyboard-accept', + 'text': '\u2714' + }), + '(a)ccept key; symbol from display option' + ); + tmp = 'meta99'; + kb.options.display.meta99 = '\u2660:numbers'; + assert.equal( true, compare( k(tmp, tmp), { + 'data-name': 'meta99', + 'data-value': 'meta99', + 'title': 'numbers', + 'hasClass': 'ui-keyboard-meta99', + 'text': '\u2660' + }), + 'meta key testing' + ); + tmp = 'meta99:test'; + kb.options.display.meta99 = '\u2660:numbers'; + assert.equal( true, compare( k(tmp, tmp), { + 'data-name': 'meta99', + 'data-value': 'meta99', + 'title': 'test', + 'hasClass': 'ui-keyboard-meta99', + 'text': '\u2660' + }), + 'in key title overrides display title' + ); + tmp = 'meta_testing'; + kb.options.display[tmp] = '\u2660:testing_keyboard'; + assert.equal( true, compare( k(tmp, tmp), { + 'data-name': tmp, + 'data-value': tmp, + 'title': 'testing keyboard', + 'hasClass': 'ui-keyboard-' + tmp, + 'text': '\u2660' + }), + 'meta key extended name (underscore) testing' + ); + tmp = 'meta-testing:testing!'; + kb.options.display['meta-testing'] = '\u2660'; + assert.equal( true, compare( k(tmp, tmp), { + 'data-name': 'meta-testing', + 'data-value': 'meta-testing', + 'title': 'testing!', + 'hasClass': 'ui-keyboard-meta-testing', + 'text': '\u2660' + }), + 'meta key extended name (dash) testing' + ); + tmp = 'xy\u03b1\u03b2\u03bez:test'; + assert.equal( true, compare( k(tmp, tmp, true), { + 'data-name': 'xyαβξz', + 'data-value': 'xyαβξz', + 'title': 'test', + 'hasClass': 'ui-keyboard-xy-945-946-958z', + 'text': 'xyαβξz' + }), + 'unicode testing' + ); + + }); + + /************************************************ + destroy + ************************************************/ + QUnit.test( 'destroy method', function( assert ) { + var done = assert.async(); + assert.expect(3); + + $('#test') + .html('') + .find('input') + .keyboard({ + layout : 'qwerty', + alwaysOpen: true, + lockInput: true, + // visible callback *should* work here without a setTimeout, but it isn't for some unknown reason... + initialized: function( e, keyboard, el ) { + setTimeout(function(){ + keyboard.destroy(function(){ + assert.equal( el.className, 'testing-abc', 'Destory removed all added class names' ); + assert.equal( $.isEmptyObject( $._data( el ) ), true, 'Destory removed all data & bindings' ); + assert.equal( typeof $('#test input').getkeyboard(), 'undefined', 'Cleared up data' ); + done(); + }); + }, 10); + } + }); + + }); + + }; + + $('#input').keyboard({ + layout : 'qwerty', + alwaysOpen: true, + initialized: function(e, keyboard) { + runTests( keyboard ); + }, + visible: function(e, keyboard) { + keyboard.$keyboard.hide(); + } + }); + +}); diff --git a/app/Resources/public/assets/keyboard/tools/authors.sh b/app/Resources/public/assets/keyboard/tools/authors.sh new file mode 100644 index 0000000000..6c9f16e818 --- /dev/null +++ b/app/Resources/public/assets/keyboard/tools/authors.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# generate AUTHORS, modify .mailmap in case of duplicates +git log --reverse --format='%aN <%aE>' | perl -we ' +BEGIN { + %seen = (), @authors = (); +} +while (<>) { + next if $seen{$_}; + $seen{$_} = push @authors, $_; +} +END { + print "# Authors ordered by first contribution.\n"; + print "\n", @authors, "\n"; + print "# Generated by tools/authors.sh\n"; +} +' > "${BASH_SOURCE%/*}/../AUTHORS" diff --git a/bower.json b/bower.json index 74552ec423..74b7953fcd 100644 --- a/bower.json +++ b/bower.json @@ -38,8 +38,8 @@ "multiselect-two-sides": "2.5.*", "bootstrap-year-calendar": "1.1.*", "datepair": "*", - "jt.timepicker": "*" - + "jt.timepicker": "*", + "keyboard": "^1.28.7" }, "resolutions": { "jquery": "2.1.4" From f4653e53d57b5fe34b060d83eeecf8a43e441e6c Mon Sep 17 00:00:00 2001 From: Yannick Warnier Date: Sat, 26 Jan 2019 00:33:52 -0500 Subject: [PATCH 2/3] Admin: Add configuration setting quiz_prevent_copy_paste to prevent copying questions/answers text with the keyboard or the right-click menu - refs BT#15208 --- main/exercise/exercise_result.php | 3 +++ main/exercise/exercise_submit.php | 3 +++ main/inc/lib/javascript/jquery.nocopypaste.js | 25 +++++++++++++++++++ main/install/configuration.dist.php | 3 +++ 4 files changed, 34 insertions(+) create mode 100644 main/inc/lib/javascript/jquery.nocopypaste.js diff --git a/main/exercise/exercise_result.php b/main/exercise/exercise_result.php index 66305be1c2..dbfedb7ea2 100755 --- a/main/exercise/exercise_result.php +++ b/main/exercise/exercise_result.php @@ -71,6 +71,9 @@ $interbreadcrumb[] = [ $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; +if (api_get_configuration_value('quiz_prevent_copy_paste')) { + $htmlHeadXtra[] = ''; +} if ($origin != 'learnpath') { // So we are not in learnpath tool diff --git a/main/exercise/exercise_submit.php b/main/exercise/exercise_submit.php index e93db8597e..fc4210cf0b 100755 --- a/main/exercise/exercise_submit.php +++ b/main/exercise/exercise_submit.php @@ -63,6 +63,9 @@ $htmlHeadXtra[] = api_get_js('epiclock/renderers/minute/epiclock.minute.js'); $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; +if (api_get_configuration_value('quiz_prevent_copy_paste')) { + $htmlHeadXtra[] = ''; +} if (api_get_setting('enable_record_audio') === 'true') { $htmlHeadXtra[] = ''; diff --git a/main/inc/lib/javascript/jquery.nocopypaste.js b/main/inc/lib/javascript/jquery.nocopypaste.js new file mode 100644 index 0000000000..ea2da2464d --- /dev/null +++ b/main/inc/lib/javascript/jquery.nocopypaste.js @@ -0,0 +1,25 @@ +/** + * When included, this snippet prevents contextual menus and keystrokes that + * make it possible to cut/paste/copy text from the page. + * This is useful for very secure exams. + * @author Alberto Torreblanca + */ +$(document).ready(function(){ + $(document).on("cut copy paste contextmenu",function(e) { + e.preventDefault(); + }); + $(document).keydown(function(e) { + var forbiddenKeys = new Array('c', 'x', 'v', 'p', 's'); + var keyCode = (e.keyCode) ? e.keyCode : e.which; + var isCtrl; + isCtrl = e.ctrlKey + if (isCtrl) { + for (i = 0; i < forbiddenKeys.length; i++) { + if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) { + return false; + } + } + } + return true; + }); +}); diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index 8ed65f9124..414eae065d 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -557,6 +557,9 @@ $_configuration['send_all_emails_to'] = [ //$_configuration['allow_quiz_show_previous_button_setting'] = false; // Allow to teachers review exercises question with audio notes //$_configuration["allow_teacher_comment_audio"] = false; +// Block copy/paste/save/print keys and right-clicks in exercises +//$_configuration['quiz_prevent_copy_paste'] = false; + // Hide search form in session list //$_configuration['hide_search_form_in_session_list'] = false; // Allow exchange of messages from teachers/bosses about a user. From a7fbce409028e60845a608d1d9d89e403591a4a7 Mon Sep 17 00:00:00 2001 From: Yannick Warnier Date: Sat, 26 Jan 2019 20:10:24 -0500 Subject: [PATCH 3/3] Admin: Add configuration setting quiz_show_description_on_results_page to control whether the test description is shown on the results page or not - refs BT#11784 --- main/inc/lib/exercise.lib.php | 4 +++- main/install/configuration.dist.php | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/main/inc/lib/exercise.lib.php b/main/inc/lib/exercise.lib.php index ee5a47afb7..370b23a75b 100644 --- a/main/inc/lib/exercise.lib.php +++ b/main/inc/lib/exercise.lib.php @@ -4785,7 +4785,9 @@ EOT; echo $totalScoreText; // Ofaj change BT#11784 - if (!empty($objExercise->description)) { + if (api_get_configuration_value('quiz_show_description_on_results_page') + && (!empty($objExercise->description))) + { echo Display::div($objExercise->description, ['class' => 'exercise_description']); } diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index 414eae065d..419fdb4d15 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -559,6 +559,8 @@ $_configuration['send_all_emails_to'] = [ //$_configuration["allow_teacher_comment_audio"] = false; // Block copy/paste/save/print keys and right-clicks in exercises //$_configuration['quiz_prevent_copy_paste'] = false; +// Always show the test description on the results page of the test +//$_configuration['quiz_show_description_on_results_page'] = false; // Hide search form in session list //$_configuration['hide_search_form_in_session_list'] = false;