diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/HISTORY.md b/common/test/keyboards/text_selection_tests_keyboard_9073/HISTORY.md
new file mode 100644
index 0000000000..e7e7675aa4
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/HISTORY.md
@@ -0,0 +1,6 @@
+Text Selection Tests Keyboard Change History
+====================
+
+1.0 (2023-11-14)
+----------------
+* Created by Keyman Team
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/LICENSE.md b/common/test/keyboards/text_selection_tests_keyboard_9073/LICENSE.md
new file mode 100644
index 0000000000..f199066a02
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+© 2023 Keyman Team
+
+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.
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/README.md b/common/test/keyboards/text_selection_tests_keyboard_9073/README.md
new file mode 100644
index 0000000000..1ab216d60f
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/README.md
@@ -0,0 +1,31 @@
+Text Selection Tests Keyboard keyboard
+==============
+
+Version 1.0
+
+Description
+-----------
+Text Selection Tests Keyboard generated from template
+
+Links
+-----
+https://github.com/keymanapp/keyman/issues/9073
+
+Copyright
+---------
+See [LICENSE.md](LICENSE.md)
+
+Supported Platforms
+-------------------
+ * Windows
+ * macOS
+ * Linux
+ * Web
+ * iPhone
+ * iPad
+ * Android phone
+ * Android tablet
+ * Mobile devices
+ * Desktop devices
+ * Tablet devices
+
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/readme.htm b/common/test/keyboards/text_selection_tests_keyboard_9073/source/readme.htm
new file mode 100644
index 0000000000..1d87395da8
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/source/readme.htm
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Text Selection Tests Keyboard
+
+
+
+
+Text Selection Tests Keyboard
+
+
+ Text Selection Tests Keyboard 1.0 generated from template.
+
+
+© Keyman Team
+
+
+
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.ico b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.ico
new file mode 100644
index 0000000000..6a5271df0c
Binary files /dev/null and b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.ico differ
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.keyman-touch-layout b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.keyman-touch-layout
new file mode 100644
index 0000000000..d6506b8fb2
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.keyman-touch-layout
@@ -0,0 +1,527 @@
+{
+ "tablet": {
+ "displayUnderlying": false,
+ "layer": [
+ {
+ "id": "default",
+ "row": [
+ {
+ "id": 1,
+ "key": [
+ {
+ "id": "K_1",
+ "text": "1"
+ },
+ {
+ "id": "K_2",
+ "text": "2"
+ },
+ {
+ "id": "K_3",
+ "text": "3"
+ },
+ {
+ "id": "K_4",
+ "text": "4"
+ },
+ {
+ "id": "K_5",
+ "text": "5"
+ },
+ {
+ "id": "K_6",
+ "text": "6"
+ },
+ {
+ "id": "K_7",
+ "text": "7"
+ },
+ {
+ "id": "K_8",
+ "text": "8"
+ },
+ {
+ "id": "K_9",
+ "text": "9"
+ },
+ {
+ "id": "K_0",
+ "text": "0"
+ },
+ {
+ "id": "K_HYPHEN",
+ "text": "-"
+ },
+ {
+ "id": "K_EQUAL",
+ "text": "="
+ },
+ {
+ "id": "K_BKSP",
+ "text": "*BkSp*",
+ "width": 100,
+ "sp": 1
+ }
+ ]
+ },
+ {
+ "id": 2,
+ "key": [
+ {
+ "id": "K_Q",
+ "text": "q",
+ "pad": 75
+ },
+ {
+ "id": "K_W",
+ "text": "w"
+ },
+ {
+ "id": "K_E",
+ "text": "e"
+ },
+ {
+ "id": "K_R",
+ "text": "r"
+ },
+ {
+ "id": "K_T",
+ "text": "t"
+ },
+ {
+ "id": "K_Y",
+ "text": "y"
+ },
+ {
+ "id": "K_U",
+ "text": "u"
+ },
+ {
+ "id": "K_I",
+ "text": "i"
+ },
+ {
+ "id": "K_O",
+ "text": "o"
+ },
+ {
+ "id": "K_P",
+ "text": "p"
+ },
+ {
+ "id": "K_LBRKT",
+ "text": "["
+ },
+ {
+ "id": "K_RBRKT",
+ "text": "]"
+ },
+ {
+ "id": "T_new_136",
+ "width": 10,
+ "sp": 10
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "key": [
+ {
+ "id": "K_BKQUOTE",
+ "text": "dk(1)"
+ },
+ {
+ "id": "K_A",
+ "text": "a"
+ },
+ {
+ "id": "K_S",
+ "text": "s"
+ },
+ {
+ "id": "K_D",
+ "text": "d"
+ },
+ {
+ "id": "K_F",
+ "text": "f"
+ },
+ {
+ "id": "K_G",
+ "text": "g"
+ },
+ {
+ "id": "K_H",
+ "text": "h"
+ },
+ {
+ "id": "K_J",
+ "text": "j"
+ },
+ {
+ "id": "K_K",
+ "text": "k"
+ },
+ {
+ "id": "K_L",
+ "text": "l"
+ },
+ {
+ "id": "K_COLON",
+ "text": ";"
+ },
+ {
+ "id": "K_QUOTE",
+ "text": "'"
+ },
+ {
+ "id": "K_BKSLASH",
+ "text": "\\"
+ }
+ ]
+ },
+ {
+ "id": 4,
+ "key": [
+ {
+ "id": "K_SHIFT",
+ "text": "*Shift*",
+ "width": 160,
+ "sp": 1
+ },
+ {
+ "id": "K_oE2",
+ "text": "\\"
+ },
+ {
+ "id": "K_Z",
+ "text": "z"
+ },
+ {
+ "id": "K_X",
+ "text": "x"
+ },
+ {
+ "id": "K_C",
+ "text": "c"
+ },
+ {
+ "id": "K_V",
+ "text": "v"
+ },
+ {
+ "id": "K_B",
+ "text": "b"
+ },
+ {
+ "id": "K_N",
+ "text": "n"
+ },
+ {
+ "id": "K_M",
+ "text": "m"
+ },
+ {
+ "id": "K_COMMA",
+ "text": ","
+ },
+ {
+ "id": "K_PERIOD",
+ "text": "."
+ },
+ {
+ "id": "K_SLASH",
+ "text": "/"
+ },
+ {
+ "id": "T_new_162",
+ "width": 10,
+ "sp": 10
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "key": [
+ {
+ "id": "K_LOPT",
+ "text": "*Menu*",
+ "width": 140,
+ "sp": 1
+ },
+ {
+ "id": "K_SPACE",
+ "width": 930
+ },
+ {
+ "id": "K_ENTER",
+ "text": "*Enter*",
+ "width": 145,
+ "sp": 1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "shift",
+ "row": [
+ {
+ "id": 1,
+ "key": [
+ {
+ "id": "K_1",
+ "text": "!"
+ },
+ {
+ "id": "K_2",
+ "text": "@"
+ },
+ {
+ "id": "K_3",
+ "text": "#"
+ },
+ {
+ "id": "K_4",
+ "text": "$"
+ },
+ {
+ "id": "K_5",
+ "text": "%"
+ },
+ {
+ "id": "K_6",
+ "text": "^"
+ },
+ {
+ "id": "K_7",
+ "text": "&"
+ },
+ {
+ "id": "K_8",
+ "text": "*"
+ },
+ {
+ "id": "K_9",
+ "text": "("
+ },
+ {
+ "id": "K_0",
+ "text": ")"
+ },
+ {
+ "id": "K_HYPHEN",
+ "text": "_"
+ },
+ {
+ "id": "K_EQUAL",
+ "text": "+"
+ },
+ {
+ "width": 100,
+ "id": "K_BKSP",
+ "sp": 1,
+ "text": "*BkSp*"
+ }
+ ]
+ },
+ {
+ "id": 2,
+ "key": [
+ {
+ "id": "K_Q",
+ "pad": 75,
+ "text": "Q"
+ },
+ {
+ "id": "K_W",
+ "text": "W"
+ },
+ {
+ "id": "K_E",
+ "text": "E"
+ },
+ {
+ "id": "K_R",
+ "text": "R"
+ },
+ {
+ "id": "K_T",
+ "text": "T"
+ },
+ {
+ "id": "K_Y",
+ "text": "Y"
+ },
+ {
+ "id": "K_U",
+ "text": "U"
+ },
+ {
+ "id": "K_I",
+ "text": "I"
+ },
+ {
+ "id": "K_O",
+ "text": "O"
+ },
+ {
+ "id": "K_P",
+ "text": "P"
+ },
+ {
+ "id": "K_LBRKT",
+ "text": "{"
+ },
+ {
+ "id": "K_RBRKT",
+ "text": "}"
+ },
+ {
+ "width": 10,
+ "sp": 10
+ }
+ ]
+ },
+ {
+ "id": 3,
+ "key": [
+ {
+ "id": "K_BKQUOTE",
+ "text": "~"
+ },
+ {
+ "id": "K_A",
+ "text": "A"
+ },
+ {
+ "id": "K_S",
+ "text": "S"
+ },
+ {
+ "id": "K_D",
+ "text": "D"
+ },
+ {
+ "id": "K_F",
+ "text": "F"
+ },
+ {
+ "id": "K_G",
+ "text": "G"
+ },
+ {
+ "id": "K_H",
+ "text": "H"
+ },
+ {
+ "id": "K_J",
+ "text": "J"
+ },
+ {
+ "id": "K_K",
+ "text": "K"
+ },
+ {
+ "id": "K_L",
+ "text": "L"
+ },
+ {
+ "id": "K_COLON",
+ "text": ":"
+ },
+ {
+ "id": "K_QUOTE",
+ "text": "\""
+ },
+ {
+ "id": "K_BKSLASH",
+ "text": "|"
+ }
+ ]
+ },
+ {
+ "id": 4,
+ "key": [
+ {
+ "width": 160,
+ "id": "K_SHIFT",
+ "sp": 1,
+ "text": "*Shift*"
+ },
+ {
+ "id": "K_oE2",
+ "text": "|"
+ },
+ {
+ "id": "K_Z",
+ "text": "Z"
+ },
+ {
+ "id": "K_X",
+ "text": "X"
+ },
+ {
+ "id": "K_C",
+ "text": "C"
+ },
+ {
+ "id": "K_V",
+ "text": "V"
+ },
+ {
+ "id": "K_B",
+ "text": "B"
+ },
+ {
+ "id": "K_N",
+ "text": "N"
+ },
+ {
+ "id": "K_M",
+ "text": "M"
+ },
+ {
+ "id": "K_COMMA",
+ "text": "<"
+ },
+ {
+ "id": "K_PERIOD",
+ "text": ">"
+ },
+ {
+ "id": "K_SLASH",
+ "text": "?"
+ },
+ {
+ "width": 10,
+ "sp": 10
+ }
+ ]
+ },
+ {
+ "id": 5,
+ "key": [
+ {
+ "width": 140,
+ "id": "K_LOPT",
+ "sp": 1,
+ "text": "*Menu*"
+ },
+ {
+ "width": 930,
+ "id": "K_SPACE"
+ },
+ {
+ "width": 145,
+ "id": "K_ENTER",
+ "sp": 1,
+ "text": "*Enter*"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kmn b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kmn
new file mode 100644
index 0000000000..4d72f81ded
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kmn
@@ -0,0 +1,24 @@
+c text_selection_tests_keyboard_9073 generated from template at 2023-11-14 15:23:49
+c with name "Text Selection Tests Keyboard"
+store(&VERSION) '10.0'
+store(&NAME) 'Text Selection Tests Keyboard'
+store(©RIGHT) '© Keyman Team'
+store(&KEYBOARDVERSION) '1.0'
+store(&TARGETS) 'any'
+store(&BITMAP) 'text_selection_tests_keyboard_9073.ico'
+store(&VISUALKEYBOARD) 'text_selection_tests_keyboard_9073.kvks'
+store(&LAYOUTFILE) 'text_selection_tests_keyboard_9073.keyman-touch-layout'
+
+begin Unicode > use(main)
+
+group(main) using keys
+'^' + [K_A] > 'â'
+'^' + [SHIFT K_A] > 'Â'
+'^' + [K_BKSP] > 'foo'
+
++ '`' > dk(1)
+
+'a' dk(1) 'b' + [K_BKSP] > 'ok1'
+'a' 'b' + [K_BKSP] > 'fail1'
+'a' dk(1) + [K_BKSP] > 'fail2'
+dk(1) + 'o' > 'ok3'
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kps b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kps
new file mode 100644
index 0000000000..999160d84d
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kps
@@ -0,0 +1,67 @@
+
+
+
+ 16.0.142.0
+ 7.0
+
+
+
+ readme.htm
+
+
+
+
+
+
+
+
+
+ Text Selection Tests Keyboard
+ © Keyman Team
+ Keyman Team
+
+
+
+
+ ..\build\text_selection_tests_keyboard_9073.kmx
+
+ 0
+ .kmx
+
+
+ ..\build\text_selection_tests_keyboard_9073.js
+
+ 0
+ .js
+
+
+ ..\build\text_selection_tests_keyboard_9073.kvk
+
+ 0
+ .kvk
+
+
+ welcome.htm
+
+ 0
+ .htm
+
+
+ readme.htm
+
+ 0
+ .htm
+
+
+
+
+ Text Selection Tests Keyboard
+ text_selection_tests_keyboard_9073
+ 1.0
+
+ English
+
+
+
+
+
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kvks b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kvks
new file mode 100644
index 0000000000..9b69397b35
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/source/text_selection_tests_keyboard_9073.kvks
@@ -0,0 +1,110 @@
+
+
+
+ 10.0
+ text_selection_tests_keyboard_9073
+
+
+
+
+ dk(1)
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 0
+ -
+ =
+ q
+ w
+ e
+ r
+ t
+ y
+ u
+ i
+ o
+ p
+ [
+ ]
+ \
+ a
+ s
+ d
+ f
+ g
+ h
+ j
+ k
+ l
+ ;
+ '
+ \
+ z
+ x
+ c
+ v
+ b
+ n
+ m
+ ,
+ .
+ /
+
+
+ ~
+ !
+ @
+ #
+ $
+ %
+ ^
+ &
+ *
+ (
+ )
+ _
+ +
+ Q
+ W
+ E
+ R
+ T
+ Y
+ U
+ I
+ O
+ P
+ {
+ }
+ |
+ A
+ S
+ D
+ F
+ G
+ H
+ J
+ K
+ L
+ :
+ "
+ |
+ Z
+ X
+ C
+ V
+ B
+ N
+ M
+ <
+ >
+ ?
+
+
+
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/source/welcome.htm b/common/test/keyboards/text_selection_tests_keyboard_9073/source/welcome.htm
new file mode 100644
index 0000000000..18b821f8c9
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/source/welcome.htm
@@ -0,0 +1,26 @@
+
+
+
+
+
+ Start Using Text Selection Tests Keyboard
+
+
+
+
+Start Using Text Selection Tests Keyboard
+
+
+ Text Selection Tests Keyboard 1.0 generated from template.
+
+
+Keyboard Layout
+
+
+
+
+
\ No newline at end of file
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/text_selection_tests_keyboard_9073.keyboard_info b/common/test/keyboards/text_selection_tests_keyboard_9073/text_selection_tests_keyboard_9073.keyboard_info
new file mode 100644
index 0000000000..db0a8bf7bd
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/text_selection_tests_keyboard_9073.keyboard_info
@@ -0,0 +1,7 @@
+{
+ "license": "mit",
+ "languages": [
+ "en"
+ ],
+ "description": "Text Selection Tests Keyboard generated from template"
+}
diff --git a/common/test/keyboards/text_selection_tests_keyboard_9073/text_selection_tests_keyboard_9073.kpj b/common/test/keyboards/text_selection_tests_keyboard_9073/text_selection_tests_keyboard_9073.kpj
new file mode 100644
index 0000000000..3a80bf4be5
--- /dev/null
+++ b/common/test/keyboards/text_selection_tests_keyboard_9073/text_selection_tests_keyboard_9073.kpj
@@ -0,0 +1,110 @@
+
+
+
+ $PROJECTPATH\build
+ True
+ True
+ True
+ keyboard
+
+
+
+ id_af1590e09d357f1c16c9a1fe9991a9d4
+ text_selection_tests_keyboard_9073.kmn
+ source\text_selection_tests_keyboard_9073.kmn
+ 1.0
+ .kmn
+
+ Text Selection Tests Keyboard
+ © Keyman Team
+
+
+
+ id_ba932837e6a67a86abc409a393242255
+ text_selection_tests_keyboard_9073.kps
+ source\text_selection_tests_keyboard_9073.kps
+
+ .kps
+
+ Text Selection Tests Keyboard
+ © Keyman Team
+
+
+
+ id_ede98e4633e239f933cbfd1f4e1b766c
+ HISTORY.md
+ HISTORY.md
+
+ .md
+
+
+ id_53e892b8b41cc4caece1cfd5ef21d6e7
+ LICENSE.md
+ LICENSE.md
+
+ .md
+
+
+ id_0730bb7c2e8f9ea2438b52e419dd86c9
+ README.md
+ README.md
+
+ .md
+
+
+ id_4b87bd35cc2e16f1ff8680a6f2caed52
+ text_selection_tests_keyboard_9073.keyboard_info
+ text_selection_tests_keyboard_9073.keyboard_info
+
+ .keyboard_info
+
+
+ id_0993fe0cb7835cdfb2a101ceccc03e85
+ text_selection_tests_keyboard_9073.ico
+ source\text_selection_tests_keyboard_9073.ico
+
+ .ico
+ id_af1590e09d357f1c16c9a1fe9991a9d4
+
+
+ id_aff9466042ad8bb0edf57fea7134c373
+ text_selection_tests_keyboard_9073.kmx
+ source\..\build\text_selection_tests_keyboard_9073.kmx
+
+ .kmx
+ id_ba932837e6a67a86abc409a393242255
+
+
+ id_c463c12f68ab14a1f91927146a1942b8
+ text_selection_tests_keyboard_9073.js
+ source\..\build\text_selection_tests_keyboard_9073.js
+
+ .js
+ id_ba932837e6a67a86abc409a393242255
+
+
+ id_4a6d9dbdd46a11790e170f92ffe90a6b
+ text_selection_tests_keyboard_9073.kvk
+ source\..\build\text_selection_tests_keyboard_9073.kvk
+
+ .kvk
+ id_ba932837e6a67a86abc409a393242255
+
+
+ id_356e5d149c1e539356d72698c1e401a6
+ welcome.htm
+ source\welcome.htm
+
+ .htm
+ id_ba932837e6a67a86abc409a393242255
+
+
+ id_8da344c4cea6f467013357fe099006f5
+ readme.htm
+ source\readme.htm
+
+ .htm
+ id_ba932837e6a67a86abc409a393242255
+
+
+
diff --git a/web/src/test/manual/web/index.html b/web/src/test/manual/web/index.html
index 61ee99d2de..e98979f094 100644
--- a/web/src/test/manual/web/index.html
+++ b/web/src/test/manual/web/index.html
@@ -66,6 +66,7 @@
+
Other
diff --git a/web/src/test/manual/web/text_selection_tests_9073/index.html b/web/src/test/manual/web/text_selection_tests_9073/index.html
new file mode 100644
index 0000000000..20bd3cda68
--- /dev/null
+++ b/web/src/test/manual/web/text_selection_tests_9073/index.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+ KeymanWeb #9073
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Text Selection Test Cases (#9073)
+
+
+
+
+
+
+
+
+
diff --git a/web/src/test/manual/web/text_selection_tests_9073/text_selection_tests_keyboard_9073.js b/web/src/test/manual/web/text_selection_tests_9073/text_selection_tests_keyboard_9073.js
new file mode 100644
index 0000000000..7235b9c022
--- /dev/null
+++ b/web/src/test/manual/web/text_selection_tests_9073/text_selection_tests_keyboard_9073.js
@@ -0,0 +1 @@
+if(typeof keyman === 'undefined') {console.log('Keyboard requires KeymanWeb 10.0 or later');if(typeof tavultesoft !== 'undefined') tavultesoft.keymanweb.util.alert("This keyboard requires KeymanWeb 10.0 or later");} else {KeymanWeb.KR(new Keyboard_text_selection_tests_keyboard_9073());}function Keyboard_text_selection_tests_keyboard_9073(){this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;this.KI="Keyboard_text_selection_tests_keyboard_9073";this.KN="Text Selection Tests Keyboard";this.KMINVER="10.0";this.KV={F:' 1em "Arial"',K102:0};this.KV.KLS={"default": ["dk(1)","1","2","3","4","5","6","7","8","9","0","-","=","","","","q","w","e","r","t","y","u","i","o","p","[","]","\\","","","","a","s","d","f","g","h","j","k","l",";","'","","","","","","\\","z","x","c","v","b","n","m",",",".","/","","","","","",""],"shift": ["~","!","@","#","$","%","^","&","*","(",")","_","+","","","","Q","W","E","R","T","Y","U","I","O","P","{","}","|","","","","A","S","D","F","G","H","J","K","L",":","\"","","","","","","|","Z","X","C","V","B","N","M","<",">","?","","","","","",""]};this.KV.BK=(function(x){var e=Array.apply(null,Array(65)).map(String.prototype.valueOf,""),r=[],v,i,m=['default','shift','ctrl','shift-ctrl','alt','shift-alt','ctrl-alt','shift-ctrl-alt'];for(i=m.length-1;i>=0;i--)if((v=x[m[i]])||r.length)r=(v?v:e).slice().concat(r);return r})(this.KV.KLS);this.KDU=0;this.KH='';this.KM=0;this.KBVER="1.0";this.KMBM=0x10;this.KVKL={"tablet":{"displayUnderlying":false,"layer":[{"id":"default","row":[{"id":"1","key":[{"id":"K_1","text":"1"},{"id":"K_2","text":"2"},{"id":"K_3","text":"3"},{"id":"K_4","text":"4"},{"id":"K_5","text":"5"},{"id":"K_6","text":"6"},{"id":"K_7","text":"7"},{"id":"K_8","text":"8"},{"id":"K_9","text":"9"},{"id":"K_0","text":"0"},{"id":"K_HYPHEN","text":"-"},{"id":"K_EQUAL","text":"="},{"id":"K_BKSP","text":"*BkSp*","width":"100","sp":"1"}]},{"id":"2","key":[{"id":"K_Q","text":"q","pad":"75"},{"id":"K_W","text":"w"},{"id":"K_E","text":"e"},{"id":"K_R","text":"r"},{"id":"K_T","text":"t"},{"id":"K_Y","text":"y"},{"id":"K_U","text":"u"},{"id":"K_I","text":"i"},{"id":"K_O","text":"o"},{"id":"K_P","text":"p"},{"id":"K_LBRKT","text":"["},{"id":"K_RBRKT","text":"]"},{"id":"T_new_136","width":"10","sp":"10"}]},{"id":"3","key":[{"id":"K_BKQUOTE","text":"dk(1)"},{"id":"K_A","text":"a"},{"id":"K_S","text":"s"},{"id":"K_D","text":"d"},{"id":"K_F","text":"f"},{"id":"K_G","text":"g"},{"id":"K_H","text":"h"},{"id":"K_J","text":"j"},{"id":"K_K","text":"k"},{"id":"K_L","text":"l"},{"id":"K_COLON","text":";"},{"id":"K_QUOTE","text":"'"},{"id":"K_BKSLASH","text":"\\"}]},{"id":"4","key":[{"id":"K_SHIFT","text":"*Shift*","width":"160","sp":"1"},{"id":"K_oE2","text":"\\"},{"id":"K_Z","text":"z"},{"id":"K_X","text":"x"},{"id":"K_C","text":"c"},{"id":"K_V","text":"v"},{"id":"K_B","text":"b"},{"id":"K_N","text":"n"},{"id":"K_M","text":"m"},{"id":"K_COMMA","text":","},{"id":"K_PERIOD","text":"."},{"id":"K_SLASH","text":"/"},{"id":"T_new_162","width":"10","sp":"10"}]},{"id":"5","key":[{"id":"K_LOPT","text":"*Menu*","width":"140","sp":"1"},{"id":"K_SPACE","width":"930"},{"id":"K_ENTER","text":"*Enter*","width":"145","sp":"1"}]}]},{"id":"shift","row":[{"id":"1","key":[{"id":"K_1","text":"!"},{"id":"K_2","text":"@"},{"id":"K_3","text":"#"},{"id":"K_4","text":"$"},{"id":"K_5","text":"%"},{"id":"K_6","text":"^"},{"id":"K_7","text":"&"},{"id":"K_8","text":"*"},{"id":"K_9","text":"("},{"id":"K_0","text":")"},{"id":"K_HYPHEN","text":"_"},{"id":"K_EQUAL","text":"+"},{"width":"100","id":"K_BKSP","sp":"1","text":"*BkSp*"}]},{"id":"2","key":[{"id":"K_Q","pad":"75","text":"Q"},{"id":"K_W","text":"W"},{"id":"K_E","text":"E"},{"id":"K_R","text":"R"},{"id":"K_T","text":"T"},{"id":"K_Y","text":"Y"},{"id":"K_U","text":"U"},{"id":"K_I","text":"I"},{"id":"K_O","text":"O"},{"id":"K_P","text":"P"},{"id":"K_LBRKT","text":"{"},{"id":"K_RBRKT","text":"}"},{"width":"10","sp":"10"}]},{"id":"3","key":[{"id":"K_BKQUOTE","text":"~"},{"id":"K_A","text":"A"},{"id":"K_S","text":"S"},{"id":"K_D","text":"D"},{"id":"K_F","text":"F"},{"id":"K_G","text":"G"},{"id":"K_H","text":"H"},{"id":"K_J","text":"J"},{"id":"K_K","text":"K"},{"id":"K_L","text":"L"},{"id":"K_COLON","text":":"},{"id":"K_QUOTE","text":"\""},{"id":"K_BKSLASH","text":"|"}]},{"id":"4","key":[{"width":"160","id":"K_SHIFT","sp":"1","text":"*Shift*"},{"id":"K_oE2","text":"|"},{"id":"K_Z","text":"Z"},{"id":"K_X","text":"X"},{"id":"K_C","text":"C"},{"id":"K_V","text":"V"},{"id":"K_B","text":"B"},{"id":"K_N","text":"N"},{"id":"K_M","text":"M"},{"id":"K_COMMA","text":"<"},{"id":"K_PERIOD","text":">"},{"id":"K_SLASH","text":"?"},{"width":"10","sp":"10"}]},{"id":"5","key":[{"width":"140","id":"K_LOPT","sp":"1","text":"*Menu*"},{"width":"930","id":"K_SPACE"},{"width":"145","id":"K_ENTER","sp":"1","text":"*Enter*"}]}]}]}};this.KVER="17.0.211.0";this.KVS=[];this.gs=function(t,e) {return this.g0(t,e);};this.gs=function(t,e) {return this.g0(t,e);};this.g0=function(t,e) {var k=KeymanWeb,r=0,m=0;if(k.KKM(e,16384,8)) {if(k.KFCM(3,t,['a',{t:'d',d:0},'b'])){r=m=1;k.KDC(3,t);k.KO(-1,t,"ok1");}else if(k.KFCM(2,t,['a','b'])){r=m=1;k.KDC(2,t);k.KO(-1,t,"fail1");}else if(k.KFCM(2,t,['a',{t:'d',d:0}])){r=m=1;k.KDC(2,t);k.KO(-1,t,"fail2");}else if(k.KFCM(1,t,['^'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"foo");}}else if(k.KKM(e,16400,65)) {if(k.KFCM(1,t,['^'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"Â");}}else if(k.KKM(e,16384,192)) {if(1){r=m=1;k.KDC(0,t);k.KDO(-1,t,0);}}else if(k.KKM(e,16384,65)) {if(k.KFCM(1,t,['^'])){r=m=1;k.KDC(1,t);k.KO(-1,t,"â");}}else if(k.KKM(e,16384,79)) {if(k.KFCM(1,t,[{t:'d',d:0}])){r=m=1;k.KDC(1,t);k.KO(-1,t,"ok3");}}return r;};}
\ No newline at end of file