Commit 3fd30cf94fc4bf972cff719b565f75730488cade
- Diff rendering mode:
- inline
- side by side
frameworks/add-onscreen-keyboard.patch
(0 / 1762)
|   | |||
| 1 | diff --git a/usr/palm/frameworks/mojo/builtins/palmInitFramework191_15.js b/usr/palm/frameworks/mojo/builtins/palmInitFramework191_15.js | ||
| 2 | index 4307893..ff5ea6f 100644 | ||
| 3 | --- a/usr/palm/frameworks/mojo/builtins/palmInitFramework191_15.js | ||
| 4 | +++ b/usr/palm/frameworks/mojo/builtins/palmInitFramework191_15.js | ||
| 5 | @@ -674,6 +674,7 @@ _Dialog:'widget_dialog', | ||
| 6 | Pager:null, | ||
| 7 | Drawer:null, | ||
| 8 | CharSelector:null, | ||
| 9 | +VirtualKeyboard:null, | ||
| 10 | FilterList:null, | ||
| 11 | _Submenu:'widget_submenu', | ||
| 12 | ExperimentalGridList:'widget_grid', | ||
| 13 | @@ -3717,6 +3718,11 @@ if(this.charSelector&&this.charSelector.element&&this.charSelector.element.mojo& | ||
| 14 | return; | ||
| 15 | } | ||
| 16 | this.charSelector=this.createDynamicWidget('CharSelector',{selectionTarget:event.selectionTarget}); | ||
| 17 | +}else if(event.type===Mojo.Event.renderVirtualKeyboard){ | ||
| 18 | +if(this.virtualKeyboard&&this.virtualKeyboard.element&&this.virtualKeyboard.element.mojo&&this.virtualKeyboard.element.mojo.isOpen()){ | ||
| 19 | +return; | ||
| 20 | +} | ||
| 21 | +this.virtualKeyboard=this.createDynamicWidget('VirtualKeyboard',{selectionTarget:event.selectionTarget}); | ||
| 22 | } | ||
| 23 | }, | ||
| 24 | |||
| 25 | @@ -3996,6 +4002,7 @@ kDefaultSceneName:'main', | ||
| 26 | kSceneClassName:'palm-scene', | ||
| 27 | kBrowserObject:'application/x-palm-browser', | ||
| 28 | enableAltCharPicker:true, | ||
| 29 | +enableVirtualKeyboard:true, | ||
| 30 | |||
| 31 | |||
| 32 | |||
| 33 | @@ -4008,6 +4015,7 @@ this.document=this.window.document; | ||
| 34 | this.paramsFromURI=this.document.baseURI.toQueryParams(); | ||
| 35 | this.stageType=this.paramsFromURI.window||"card"; | ||
| 36 | this._stageProxy=stageProxy; | ||
| 37 | +this.metaCount=0; | ||
| 38 | |||
| 39 | this._stagePreparing=true; | ||
| 40 | |||
| 41 | @@ -4871,6 +4879,13 @@ var scene=this.topScene(); | ||
| 42 | var tempTextArea,msg,scriptNode; | ||
| 43 | var webView; | ||
| 44 | |||
| 45 | +/* Use pageup (179) for emulator */ | ||
| 46 | +if (event.keyCode === Mojo.Char.metaKey || event.keyCode === 179) { | ||
| 47 | + if (this.metaCount === 2) { | ||
| 48 | + this.metaDoubleTap=true; | ||
| 49 | + } | ||
| 50 | +} | ||
| 51 | + | ||
| 52 | if(Mojo.Controller.isGoBackKey(event)){ | ||
| 53 | var newEv=Mojo.Event.make(Mojo.Event.back,{originalEvent:event}); | ||
| 54 | this.sendEventToCommanders(newEv); | ||
| 55 | @@ -4891,6 +4906,16 @@ if(webView){ | ||
| 56 | webView.mojo.isEditing(this._sendCharpickerEventCallback.bind(this,Mojo.Event.renderAltCharacters,webView,null)); | ||
| 57 | } | ||
| 58 | } | ||
| 59 | +}else if(this.enableVirtualKeyboard&&this.metaDoubleTap){ | ||
| 60 | +this.metaDoubleTap=false; | ||
| 61 | +if(this.doesTargetAcceptKeys(event.target)){ | ||
| 62 | +this._sendCharpickerEvent(Mojo.Event.renderVirtualKeyboard,event.target,null); | ||
| 63 | +}else{ | ||
| 64 | +webView=this._getWebview(event.target); | ||
| 65 | +if(webView){ | ||
| 66 | +webView.mojo.isEditing(this._sendCharpickerEventCallback.bind(this,Mojo.Event.renderVirtualKeyboard,webView,null)); | ||
| 67 | +} | ||
| 68 | +} | ||
| 69 | }else if(event.keyCode===Mojo.Char.o&&event.ctrlKey&&event.shiftKey&&Mojo.Config.debuggingEnabled){ | ||
| 70 | |||
| 71 | |||
| 72 | @@ -4933,8 +4958,6 @@ tempTextArea.remove(); | ||
| 73 | }else{ | ||
| 74 | |||
| 75 | |||
| 76 | - | ||
| 77 | - | ||
| 78 | scene=this.activeScene(); | ||
| 79 | if(event.metaKey&&scene&&scene.handleShortcut(String.fromCharCode(event.which),event)){ | ||
| 80 | Event.stop(event); | ||
| 81 | @@ -4949,6 +4972,13 @@ this._forwardEventToTopContainer(Mojo.Event.keyup,event); | ||
| 82 | _keyDownHandler:function(event){ | ||
| 83 | var webView; | ||
| 84 | |||
| 85 | +if (event.keyCode === Mojo.Char.metaKey || event.keyCode === 179) { | ||
| 86 | + this.metaCount++; | ||
| 87 | + if (this.metaCount === 1) { | ||
| 88 | + this.metaTimer=this.window.setTimeout(function(){this.metaCount=0;}.bind(this), 600); | ||
| 89 | + } | ||
| 90 | +} | ||
| 91 | + | ||
| 92 | if(this.enableAltCharPicker&&event.keyCode!==Mojo.Char.opt&&event.ctrlKey){ | ||
| 93 | if(this.doesTargetAcceptKeys(event.target)){ | ||
| 94 | this._sendCharpickerEvent(Mojo.Event.renderChordedAltCharacters,event.target,event.keyCode); | ||
| 95 | @@ -9431,6 +9461,9 @@ Mojo.Event.renderAltCharacters='mojo-altchars'; | ||
| 96 | Mojo.Event.renderChordedAltCharacters='mojo-altchars-chorded'; | ||
| 97 | |||
| 98 | |||
| 99 | +Mojo.Event.renderVirtualKeyboard='webos-internals-onscreen-keyboard'; | ||
| 100 | + | ||
| 101 | + | ||
| 102 | Mojo.Event.orientationChange='mojo-orientation'; | ||
| 103 | |||
| 104 | |||
| 105 | @@ -10619,7 +10652,7 @@ return stringTable; | ||
| 106 | |||
| 107 | Mojo.Locale.set=function(currentLocale,formatRegion){ | ||
| 108 | var deviceInfo=Mojo.Environment.DeviceInfo; | ||
| 109 | -var altCharFullTable,altCharTable; | ||
| 110 | +var altCharFullTable,altCharTable,kbCharTable,kbCharFullTable; | ||
| 111 | |||
| 112 | if(Mojo.Locale.current!=currentLocale){ | ||
| 113 | Mojo.Locale.current=currentLocale; | ||
| 114 | @@ -10660,13 +10693,21 @@ Mojo.Locale.frameworkStrings=Mojo.Locale.readStringTable("strings.json",Mojo.Loc | ||
| 115 | if(deviceInfo.keyboardType===Mojo.Environment.AZERTY){ | ||
| 116 | altCharTable="alternatechars_table_azerty.json"; | ||
| 117 | altCharFullTable="alternatechars_fulltable_azerty.json"; | ||
| 118 | +kbCharTable="kbchars_table_azerty.json"; | ||
| 119 | +kbCharFullTable="kbchars_fulltable_azerty.json"; | ||
| 120 | }else if(deviceInfo.keyboardType===Mojo.Environment.QWERTZ){ | ||
| 121 | altCharTable="alternatechars_table_qwertz.json"; | ||
| 122 | altCharFullTable="alternatechars_fulltable_qwertz.json"; | ||
| 123 | +kbCharTable="kbchars_table_qwertz.json"; | ||
| 124 | +kbCharFullTable="kbchars_fulltable_qwertz.json"; | ||
| 125 | }else{ | ||
| 126 | altCharTable="alternatechars_table.json"; | ||
| 127 | altCharFullTable="alternatechars_fulltable.json"; | ||
| 128 | +kbCharTable="kbchars_table.json"; | ||
| 129 | +kbCharFullTable="kbchars_fulltable.json"; | ||
| 130 | } | ||
| 131 | +Mojo.Locale.kbCharacters=Mojo.Locale.readStringTable(kbCharTable,Mojo.Locale.current,Mojo.Locale.frameworkResourcePath,altCharArrayMerge); | ||
| 132 | +Mojo.Locale.kbCharactersFull=Mojo.Locale.readStringTable(kbCharFullTable,Mojo.Locale.current,Mojo.Locale.frameworkResourcePath,altCharArrayMerge); | ||
| 133 | Mojo.Locale.alternateCharacters=Mojo.Locale.readStringTable(altCharTable,Mojo.Locale.current,Mojo.Locale.frameworkResourcePath,altCharArrayMerge); | ||
| 134 | Mojo.Locale.alternateCharactersFull=Mojo.Locale.readStringTable(altCharFullTable,Mojo.Locale.current,Mojo.Locale.frameworkResourcePath,altCharArrayMerge); | ||
| 135 | Mojo.Locale.DateTimeStrings=Mojo.Locale.readStringTable("datetime_table.json",Mojo.Locale.current,Mojo.Locale.frameworkResourcePath); | ||
| 136 | @@ -19131,6 +19172,9 @@ handleMouseEvent:function(event){ | ||
| 137 | if(event.target&&Mojo.View.getParentWithAttribute(event.target,"x-mojo-element","CharSelector")){ | ||
| 138 | return; | ||
| 139 | } | ||
| 140 | +if(event.target&&Mojo.View.getParentWithAttribute(event.target,"x-mojo-element","VirtualKeyboard")){ | ||
| 141 | +return; | ||
| 142 | +} | ||
| 143 | |||
| 144 | switch(this.STATE){ | ||
| 145 | case this.ADDRESSING_WIDGET_UNFOCUSED: | ||
| 146 | @@ -28599,7 +28643,8 @@ return false; | ||
| 147 | |||
| 148 | sendChanges:function(triggeringEvent){ | ||
| 149 | |||
| 150 | -if(!Mojo.View.getParentWithAttribute(triggeringEvent.target,'x-mojo-element','CharSelector')){ | ||
| 151 | +if(!Mojo.View.getParentWithAttribute(triggeringEvent.target,'x-mojo-element','CharSelector') && | ||
| 152 | + !Mojo.View.getParentWithAttribute(triggeringEvent.target,'x-mojo-element','VirtualKeyboard')){ | ||
| 153 | this.maybeSendPropertyChangeEvent(triggeringEvent); | ||
| 154 | } | ||
| 155 | }, | ||
| 156 | @@ -34320,6 +34365,1068 @@ return true; | ||
| 157 | } | ||
| 158 | return false; | ||
| 159 | }; | ||
| 160 | + | ||
| 161 | +/* oskb */ | ||
| 162 | +Mojo.Widget.VirtualKeyboard=Class.create({ | ||
| 163 | + | ||
| 164 | +HI_PADDING_TOP:40, | ||
| 165 | + | ||
| 166 | +HI_PADDING_BOTTOM:20, | ||
| 167 | + | ||
| 168 | +HI_PADDING_LEFT:20, | ||
| 169 | + | ||
| 170 | +HI_PADDING_RIGHT:20, | ||
| 171 | + | ||
| 172 | +HI_COLUMNS:10, | ||
| 173 | + | ||
| 174 | +HI_MINIMUM_TOP:10, | ||
| 175 | + | ||
| 176 | +HI_MAX_BOTTOM:5, | ||
| 177 | + | ||
| 178 | +/* oskb */ | ||
| 179 | +initialize:function(){ | ||
| 180 | +this.VIRT_KB_MEDIA_PATH='/media/internal/virtual-keyboard/'; | ||
| 181 | +this.VIRT_KB_THEMES_PATH=this.VIRT_KB_MEDIA_PATH + 'themes/'; | ||
| 182 | +this.VIRT_KB_SOUNDS_PATH=this.VIRT_KB_MEDIA_PATH + 'sounds/'; | ||
| 183 | +this.VIRT_KB_OPEN=0; | ||
| 184 | +this.VIRT_KB_FILTERING_STATE=1; | ||
| 185 | +this.VIRT_KB_CLOSED=2; | ||
| 186 | +this.VIRT_KB_EMPTY=3; | ||
| 187 | + | ||
| 188 | +this.SHIFT_OFF=0; | ||
| 189 | +this.SHIFT_ONCE=1; | ||
| 190 | +this.SHIFT_LOCK=2; | ||
| 191 | + | ||
| 192 | +this.FUNC_OFF=0; | ||
| 193 | +this.FUNC_ONCE=1; | ||
| 194 | +this.FUNC_LOCK=2; | ||
| 195 | + | ||
| 196 | +this.state=this.VIRT_KB_OPEN; | ||
| 197 | +this.shiftState=this.SHIFT_OFF; | ||
| 198 | +this.funcState=this.FUNC_OFF; | ||
| 199 | + | ||
| 200 | +this.dragEnabled=false; | ||
| 201 | +this.scrollEnabled=false; | ||
| 202 | +this.customStyle=undefined; | ||
| 203 | +this.templateSuffix=""; | ||
| 204 | +this.layout="portrait"; | ||
| 205 | +this.textCase="lowercase"; | ||
| 206 | +this.charList=[]; | ||
| 207 | +this.localizedTable=Mojo.Locale.kbCharacters; | ||
| 208 | +this.localizedTableFull=Mojo.Locale.kbCharactersFull; | ||
| 209 | +}, | ||
| 210 | + | ||
| 211 | + | ||
| 212 | +/* oskb */ | ||
| 213 | +setup:function(){ | ||
| 214 | +var model=this.controller.model; | ||
| 215 | + | ||
| 216 | +var options = Mojo.parseJSON(palmGetResource(this.VIRT_KB_MEDIA_PATH + '/kb_config.json')); | ||
| 217 | + | ||
| 218 | +if (options) { | ||
| 219 | + this.theme=options.theme; | ||
| 220 | + this.haptic=options.haptic; | ||
| 221 | + this.clickFile=options.clickFile; | ||
| 222 | +} | ||
| 223 | + | ||
| 224 | +this.controller.exposeMethods(['close','isOpen']); | ||
| 225 | +if(this.controller.attributes.target){ | ||
| 226 | +this.target=this.controller.get(this.controller.attributes.target); | ||
| 227 | +}else if(model.selectionTarget){ | ||
| 228 | +this.target=this.controller.get(model.selectionTarget); | ||
| 229 | +} | ||
| 230 | +this.divPrefix=Mojo.View.makeUniqueId(); | ||
| 231 | +this.currCode=this.controller.model.character; | ||
| 232 | +if(this.currCode!==undefined){ | ||
| 233 | +this.chorded=true; | ||
| 234 | +} | ||
| 235 | + | ||
| 236 | +if(this.renderWidget(this.controller.model.character)){ | ||
| 237 | +this.handleMouseOver=this.handleMouseOver.bindAsEventListener(this); | ||
| 238 | +this.handleMouseUp=this.handleMouseUp.bindAsEventListener(this); | ||
| 239 | +this.handleMouseDown=this.handleMouseDown.bindAsEventListener(this); | ||
| 240 | +this.handleDragStart=this.handleDragStart.bindAsEventListener(this); | ||
| 241 | +this.handleDragEnd=this.handleDragEnd.bindAsEventListener(this); | ||
| 242 | +this.handleDragging=this.handleDragging.bindAsEventListener(this); | ||
| 243 | +this.handleKeyEvent=this.handleKeyEvent.bind(this); | ||
| 244 | +this.handleKeyUpEvent=this.handleKeyUpEvent.bind(this); | ||
| 245 | +this.handleTapEvent=this.handleTapEvent.bind(this); | ||
| 246 | +this.handleOrientation=this.handleOrientation.bindAsEventListener(this); | ||
| 247 | +this.controller.listen(this.target,"keydown",this.handleKeyEvent,true); | ||
| 248 | +this.controller.listen(this.target,"keyup",this.handleKeyUpEvent,true); | ||
| 249 | +this.controller.listen(this.controller.document,Mojo.Event.orientationChange,this.handleOrientation,true); | ||
| 250 | +this.controller.listen(this.controller.document,Mojo.Event.dragStart,this.handleDragStart,true); | ||
| 251 | +this.controller.listen(this.controller.document,Mojo.Event.dragEnd,this.handleDragEnd,true); | ||
| 252 | +this.controller.listen(this.controller.document,Mojo.Event.dragging,this.handleDragging,true); | ||
| 253 | +this.controller.listen(this.controller.document,'mouseover',this.handleMouseOver,true); | ||
| 254 | +this.controller.listen(this.controller.document,'mouseup',this.handleMouseUp,true); | ||
| 255 | +this.controller.listen(this.controller.document,'mousedown',this.handleMouseDown,true); | ||
| 256 | +this.controller.listen(this.controller.document,Mojo.Event.tap,this.handleTapEvent,true); | ||
| 257 | + | ||
| 258 | +if(this.chorded){ | ||
| 259 | + | ||
| 260 | +this.state=this.VIRT_KB_FILTERING_STATE; | ||
| 261 | +}else{ | ||
| 262 | +this.enterOpenState(); | ||
| 263 | +} | ||
| 264 | +this.controller.scene.pushContainer(this.controller.element,this.controller.scene.submenuContainerLayer, | ||
| 265 | +{cancelFunc:this._emptyAndClose.bind(this)}); | ||
| 266 | +this.controller.scene.pushCommander(this); | ||
| 267 | +} | ||
| 268 | +}, | ||
| 269 | + | ||
| 270 | + | ||
| 271 | +/* oskb */ | ||
| 272 | +cleanup:function(){ | ||
| 273 | + | ||
| 274 | + | ||
| 275 | +this.charPicker=undefined; | ||
| 276 | +this.selectedIndex=undefined; | ||
| 277 | +this.state=this.VIRT_KB_CLOSED; | ||
| 278 | +this.cleanupEventListeners(); | ||
| 279 | +}, | ||
| 280 | + | ||
| 281 | + | ||
| 282 | + | ||
| 283 | + | ||
| 284 | + | ||
| 285 | +/* oskb */ | ||
| 286 | +cleanupEventListeners:function(){ | ||
| 287 | +this.controller.stopListening(this.target,"keydown",this.handleKeyEvent,true); | ||
| 288 | +this.controller.stopListening(this.target,"keyup",this.handleKeyUpEvent,true); | ||
| 289 | +this.controller.stopListening(this.controller.document,Mojo.Event.orientationChange,this.handleOrientation,true); | ||
| 290 | +this.controller.stopListening(this.controller.document,Mojo.Event.dragStart,this.handleDragStart,true); | ||
| 291 | +this.controller.stopListening(this.controller.document,Mojo.Event.dragEnd,this.handleDragEnd,true); | ||
| 292 | +this.controller.stopListening(this.controller.document,Mojo.Event.dragging,this.handleDragging,true); | ||
| 293 | +this.controller.stopListening(this.controller.document,'mouseover',this.handleMouseOver,true); | ||
| 294 | +this.controller.stopListening(this.controller.document,'mouseup',this.handleMouseUp,true); | ||
| 295 | +this.controller.stopListening(this.controller.document,'mousedown',this.handleMouseDown,true); | ||
| 296 | +this.controller.stopListening(this.controller.document,Mojo.Event.tap,this.handleTapEvent,true); | ||
| 297 | +}, | ||
| 298 | + | ||
| 299 | + | ||
| 300 | +/* oskb */ | ||
| 301 | +loadTable:function(chr){ | ||
| 302 | +var data,list; | ||
| 303 | +var i=0; | ||
| 304 | +var that=this; | ||
| 305 | +var table; | ||
| 306 | +var letter; | ||
| 307 | +var alt; | ||
| 308 | +var span; | ||
| 309 | + | ||
| 310 | +this.charList=[]; | ||
| 311 | +table=this.localizedTableFull; | ||
| 312 | + | ||
| 313 | +table.each(function(c){ | ||
| 314 | +/* TODO: get rid of list idea that doesn't need to exist for kb */ | ||
| 315 | + list = c.list; | ||
| 316 | + letter = c.letter; | ||
| 317 | + alt = c.alt; | ||
| 318 | + span = c.span; | ||
| 319 | + if(list){ | ||
| 320 | + list.each(function(item){ | ||
| 321 | + data={ | ||
| 322 | + index:i, | ||
| 323 | + character:item, | ||
| 324 | + letter:letter, | ||
| 325 | + alt:alt, | ||
| 326 | + span:span, | ||
| 327 | + keyCode:c.keyCode | ||
| 328 | + }; | ||
| 329 | + | ||
| 330 | + that.charList.push(data); | ||
| 331 | + i++; | ||
| 332 | + }); | ||
| 333 | + } | ||
| 334 | + list=undefined; | ||
| 335 | +}); | ||
| 336 | + | ||
| 337 | +if (this.theme !== "default") { | ||
| 338 | + var themeTable = palmGetResource(this.VIRT_KB_THEMES_PATH + this.theme + '/theme_config.json'); | ||
| 339 | + if (themeTable) { | ||
| 340 | + var themeObject = Mojo.parseJSON(themeTable); | ||
| 341 | + var idx; | ||
| 342 | + var img; | ||
| 343 | + var c; | ||
| 344 | + var span; | ||
| 345 | + var bg; | ||
| 346 | + var class; | ||
| 347 | + themeObject.each(function(t){ | ||
| 348 | + idx=t.index; | ||
| 349 | + img=t.image; | ||
| 350 | + c=t.character; | ||
| 351 | + span=t.span; | ||
| 352 | + class=t.class; | ||
| 353 | + if ((idx>=0) && (idx<that.charList.length)) { | ||
| 354 | + if (c) { | ||
| 355 | + that.charList[idx].character=c; | ||
| 356 | + if (img) { | ||
| 357 | + that.charList[idx].character="<img name='" + idx + "' class='kb-img' src='"+that.VIRT_KB_THEMES_PATH + that.theme + "/" + img + "' alt='" + c + "'>"; | ||
| 358 | + } | ||
| 359 | + if (span) { | ||
| 360 | + that.charList[idx].span = span; | ||
| 361 | + } | ||
| 362 | + } | ||
| 363 | + } | ||
| 364 | + if (!this.customStyle&&class) { | ||
| 365 | + that.customStyle = t; | ||
| 366 | + } | ||
| 367 | + }); | ||
| 368 | + } | ||
| 369 | +} | ||
| 370 | +}, | ||
| 371 | + | ||
| 372 | +/* oskb */ | ||
| 373 | +_setPopupPositions:function(picker){ | ||
| 374 | +var top=''; | ||
| 375 | +var cursorPos=Mojo.View.getCursorPosition(this.controller.window); | ||
| 376 | +var viewDims=Mojo.View.getViewportDimensions(this.controller.document); | ||
| 377 | +var pickerDims=Mojo.View.getDimensions(picker); | ||
| 378 | +var targetOffset=Mojo.View.viewportOffset(this.target); | ||
| 379 | + | ||
| 380 | +/* | ||
| 381 | +console.log("char picker dims = " + Object.toJSON(Mojo.View.getDimensions(this.charPicker))); | ||
| 382 | +console.log("target dims = " + Object.toJSON(Mojo.View.getDimensions(this.target))); | ||
| 383 | +console.log("target style " + this.target.style); | ||
| 384 | +console.log("target top " + this.target.style.top); | ||
| 385 | +console.log("target offsettop " + this.target.offsetTop); | ||
| 386 | +console.log("viewport offset " + Object.toJSON(Mojo.View.viewportOffset(this.target))); | ||
| 387 | + | ||
| 388 | +console.log("cursor pos = " + cursorPos.x + ", " + cursorPos.y); | ||
| 389 | +console.log("viewDims = " + viewDims.width + " X " + viewDims.height); | ||
| 390 | +console.log("pickerDimes = " + pickerDims.width + " X " + pickerDims.height); | ||
| 391 | +console.log("pickerDims = " + Object.toJSON(pickerDims)); | ||
| 392 | +*/ | ||
| 393 | + | ||
| 394 | +this.maxVert = top = viewDims.height - pickerDims.height; | ||
| 395 | +if (targetOffset && (targetOffset.top >= top) && (targetOffset.top >= pickerDims.height)) { | ||
| 396 | + top=targetOffset.top - pickerDims.height; | ||
| 397 | +} | ||
| 398 | +else if (cursorPos && (cursorPos.y >= top) && (cursorPos.y >= pickerDims.height)) { | ||
| 399 | + top=cursorPos.y - pickerDims.height; | ||
| 400 | +} | ||
| 401 | +top+='px'; | ||
| 402 | + | ||
| 403 | +console.log("EG: set top " + top); | ||
| 404 | +picker.setStyle({'top':top,'left':'0px'}); | ||
| 405 | +}, | ||
| 406 | + | ||
| 407 | + | ||
| 408 | +/* oskb */ | ||
| 409 | +translateToRow:function(results){ | ||
| 410 | + | ||
| 411 | +var finished=false; | ||
| 412 | +var result; | ||
| 413 | +var newOffset=0; | ||
| 414 | +var transformedResults=[]; | ||
| 415 | + | ||
| 416 | +while(!finished){ | ||
| 417 | +result={}; | ||
| 418 | + | ||
| 419 | + | ||
| 420 | +result.characters=Mojo.View.render({collection:results.slice(newOffset,newOffset+this.HI_COLUMNS),attributes:{divPrefix:this.divPrefix},template:this.itemTemplate}); | ||
| 421 | +newOffset+=this.HI_COLUMNS; | ||
| 422 | +transformedResults.push(result); | ||
| 423 | +if(newOffset>=results.length){ | ||
| 424 | +finished=true; | ||
| 425 | +} | ||
| 426 | +} | ||
| 427 | +return transformedResults; | ||
| 428 | +}, | ||
| 429 | + | ||
| 430 | + | ||
| 431 | + /* oskb */ | ||
| 432 | +renderWidget:function(chr){ | ||
| 433 | +var data; | ||
| 434 | +var charContent; | ||
| 435 | +var charContentModel; | ||
| 436 | +var pickerContent; | ||
| 437 | +var parent; | ||
| 438 | + | ||
| 439 | +this.loadTable(chr); | ||
| 440 | +if(this.charList&&this.charList.length>0){ | ||
| 441 | + | ||
| 442 | +charContentModel={ | ||
| 443 | +divPrefix:this.divPrefix | ||
| 444 | +}; | ||
| 445 | + | ||
| 446 | +this.templateSuffix = ""; | ||
| 447 | +this.layout="portrait"; | ||
| 448 | + | ||
| 449 | +if (this.controller.stageController) { | ||
| 450 | + var orientation = this.controller.stageController.getWindowOrientation(); | ||
| 451 | + if (orientation === "left" || orientation === "right") { | ||
| 452 | + this.templateSuffix = '-ls'; | ||
| 453 | + this.layout="landscape"; | ||
| 454 | + } | ||
| 455 | +} | ||
| 456 | + | ||
| 457 | +this.itemTemplate=Mojo.Widget.getSystemTemplatePath('/kbselector/char'+this.templateSuffix), | ||
| 458 | +this.itemsModel={items:this.translateToRow(this.charList)}; | ||
| 459 | +this.charPicker=undefined; | ||
| 460 | +pickerContent=Mojo.View.render({object:charContentModel,template:Mojo.Widget.getSystemTemplatePath('/kbselector/charselector'+this.templateSuffix)}); | ||
| 461 | + | ||
| 462 | +/* NOTE: Our parent must be the scene element in order to use the | ||
| 463 | + * Dragger class, with our own drop container so as to not | ||
| 464 | + * disrupt the scene's other drop containers. | ||
| 465 | +parent=Mojo.View.getScrollerForElement(this.target); | ||
| 466 | +if(!parent){ | ||
| 467 | +parent=this.controller.scene.sceneElement; | ||
| 468 | +} | ||
| 469 | +*/ | ||
| 470 | +parent=this.controller.scene.sceneElement; | ||
| 471 | +if(this.controller.element.parentNode!==parent){ | ||
| 472 | +this.controller.reparent(parent); | ||
| 473 | +} | ||
| 474 | +this.controller.element.innerHTML=pickerContent; | ||
| 475 | +/* If we are not set to scroll (i.e. symbol button not pressed), remove | ||
| 476 | + * the scroller widget before instantiating */ | ||
| 477 | +if (!this.scrollEnabled) { | ||
| 478 | + this.controller.get(this.divPrefix+"-char-selector").removeAttribute("x-mojo-element"); | ||
| 479 | +} | ||
| 480 | + | ||
| 481 | +this.charPicker=this.controller.get(this.divPrefix+'-kb-char-selector-div'); | ||
| 482 | +this.keyboard=this.controller.get(this.divPrefix+'-char-selector'); | ||
| 483 | + | ||
| 484 | +if (this.customStyle) { | ||
| 485 | + this.charPicker.setStyle(this.customStyle); | ||
| 486 | +} | ||
| 487 | + | ||
| 488 | +this.controller.scene.setupWidget('char-list', | ||
| 489 | +{itemTemplate:Mojo.Widget.getSystemTemplatePath('kbselector/char-selector-row'+this.templateSuffix),renderLimit:30},this.itemsModel); | ||
| 490 | +this.controller.instantiateChildWidgets(this.charPicker); | ||
| 491 | +/* Adjust the width based on the span number */ | ||
| 492 | +for (var i=0; i<40; i++) { | ||
| 493 | + if (this.charList[i].span) { | ||
| 494 | + var newWidth = this.charList[i].span * 10 + "%"; | ||
| 495 | + this._getMatching(this.charPicker,i).setStyle({"width":newWidth}); | ||
| 496 | + } | ||
| 497 | +} | ||
| 498 | +this.controller.scene.showWidgetContainer(this.charPicker); | ||
| 499 | +this._setPopupPositions(this.charPicker); | ||
| 500 | + | ||
| 501 | +this.funcDiv=this.controller.get(this.divPrefix+"-20"); | ||
| 502 | +this.shiftDiv=this.controller.get(this.divPrefix+"-31"); | ||
| 503 | +this.symDiv=this.controller.get(this.divPrefix+"-35"); | ||
| 504 | +this.blankDivLeft=this.controller.get(this.divPrefix+"-30"); | ||
| 505 | +this.blankDivRight=this.controller.get(this.divPrefix+"-36"); | ||
| 506 | +this.selectedIndex=0; | ||
| 507 | +/* | ||
| 508 | +this._updateSelected(null,this._selectedIdxElem()); | ||
| 509 | +*/ | ||
| 510 | +if(this._selectedIdxElem()){ | ||
| 511 | +this.perLine=Math.floor(Element.getWidth(this.charPicker)/Element.getWidth(this._selectedIdxElem())); | ||
| 512 | +}else{ | ||
| 513 | +this.perLine=0; | ||
| 514 | +} | ||
| 515 | +return true; | ||
| 516 | +}else{ | ||
| 517 | +if(!this.chorded){ | ||
| 518 | +this.exitSelector(); | ||
| 519 | +return false; | ||
| 520 | +}else{ | ||
| 521 | +return true; | ||
| 522 | +} | ||
| 523 | +} | ||
| 524 | +}, | ||
| 525 | + | ||
| 526 | + | ||
| 527 | +/* oskb */ | ||
| 528 | +enterOpenState:function(){ | ||
| 529 | + | ||
| 530 | +this.state=this.VIRT_KB_OPEN; | ||
| 531 | +}, | ||
| 532 | + | ||
| 533 | + | ||
| 534 | +/* oskb */ | ||
| 535 | +_maybeRemoveCharpicker:function(){ | ||
| 536 | +if(this.charPicker){ | ||
| 537 | +if(this.charPicker.parentNode){ | ||
| 538 | +Element.remove(this.charPicker); | ||
| 539 | +} | ||
| 540 | +this.charPicker=undefined; | ||
| 541 | +} | ||
| 542 | +}, | ||
| 543 | + | ||
| 544 | + | ||
| 545 | +/* oskb */ | ||
| 546 | +enterFilteringState:function(keyCode){ | ||
| 547 | + | ||
| 548 | +this.state=this.VIRT_KB_FILTERING_STATE; | ||
| 549 | + | ||
| 550 | +if(this.currCode!==keyCode){ | ||
| 551 | +this.currCode=keyCode; | ||
| 552 | + | ||
| 553 | +this._maybeRemoveCharpicker(); | ||
| 554 | +this.renderWidget(this.currCode); | ||
| 555 | +}else{ | ||
| 556 | + | ||
| 557 | +this.advance(); | ||
| 558 | +} | ||
| 559 | +}, | ||
| 560 | + | ||
| 561 | + | ||
| 562 | +/* oskb */ | ||
| 563 | +handleModelChanged:function(model,what){ | ||
| 564 | +Element.show(this.charPicker); | ||
| 565 | +if(Mojo.Char.isValid(this.controller.model.character)){ | ||
| 566 | +this.enterFilteringState(this.controller.model.character); | ||
| 567 | +} | ||
| 568 | +}, | ||
| 569 | + | ||
| 570 | + | ||
| 571 | +/* oskb */ | ||
| 572 | +_emptyAndClose:function(){ | ||
| 573 | +this.state=this.VIRT_KB_EMPTY; | ||
| 574 | +this.close(); | ||
| 575 | +}, | ||
| 576 | + | ||
| 577 | + | ||
| 578 | +/* oskb */ | ||
| 579 | +close:function(){ | ||
| 580 | + | ||
| 581 | +if(this.state===this.VIRT_KB_FILTERING_STATE||this.state===this.VIRT_KB_OPEN){ | ||
| 582 | +this.exitSelector(this.getEntered()); | ||
| 583 | +return; | ||
| 584 | +} | ||
| 585 | + | ||
| 586 | +this._safeRemove(); | ||
| 587 | +}, | ||
| 588 | + | ||
| 589 | + | ||
| 590 | +/* oskb */ | ||
| 591 | +isOpen:function(){ | ||
| 592 | +return this.state!==this.VIRT_KB_CLOSED; | ||
| 593 | +}, | ||
| 594 | + | ||
| 595 | +/* oskb */ | ||
| 596 | +isSpecialChar:function(keyCode){ | ||
| 597 | + return(Mojo.Char.isEnterKey(keyCode)); | ||
| 598 | +}, | ||
| 599 | + | ||
| 600 | +/* oskb */ | ||
| 601 | +isSupported:function(keyCode){ | ||
| 602 | + return(keyCode); | ||
| 603 | +}, | ||
| 604 | + | ||
| 605 | +/* oskb */ | ||
| 606 | +updateText:function(){ | ||
| 607 | + for (var i=0; i<28; i++) { | ||
| 608 | + this.controller.get(this.divPrefix+"-"+i).setStyle({"text-transform":this.textCase}); | ||
| 609 | + switch(this.textCase) { | ||
| 610 | + case 'uppercase': | ||
| 611 | + this.charList[i].letter = this.charList[i].letter.toUpperCase(); | ||
| 612 | + break; | ||
| 613 | + case 'lowercase': | ||
| 614 | + this.charList[i].letter = this.charList[i].letter.toLowerCase(); | ||
| 615 | + break; | ||
| 616 | + } | ||
| 617 | + } | ||
| 618 | +}, | ||
| 619 | + | ||
| 620 | +/* oskb */ | ||
| 621 | +handleShift:function(){ | ||
| 622 | +if (this.shiftState === this.SHIFT_OFF) { | ||
| 623 | + this.shiftState = this.SHIFT_ONCE; | ||
| 624 | + this.shiftDiv.addClassName("kb-active-char"); | ||
| 625 | + this.textCase = "uppercase"; | ||
| 626 | +} | ||
| 627 | +else if (this.shiftState === this.SHIFT_ONCE) { | ||
| 628 | + this.shiftState = this.SHIFT_LOCK; | ||
| 629 | + this.shiftDiv.addClassName("locked"); | ||
| 630 | + return; | ||
| 631 | +} | ||
| 632 | +else { | ||
| 633 | + this.shiftState = this.SHIFT_OFF; | ||
| 634 | + this.textCase = "lowercase"; | ||
| 635 | + this.shiftDiv.removeClassName("kb-active-char"); | ||
| 636 | + this.shiftDiv.removeClassName("locked"); | ||
| 637 | +} | ||
| 638 | + | ||
| 639 | +this.updateText(); | ||
| 640 | +}, | ||
| 641 | + | ||
| 642 | +/* oskb */ | ||
| 643 | +handleFunc:function(){ | ||
| 644 | +/* TODO: Update the keys on screen when using text (default theme) */ | ||
| 645 | +if (this.funcState === this.FUNC_OFF) { | ||
| 646 | + this.funcState = this.FUNC_ONCE; | ||
| 647 | + this.funcDiv.addClassName("kb-active-char"); | ||
| 648 | + this.useAltChars = true; | ||
| 649 | +} | ||
| 650 | +else if (this.funcState === this.FUNC_ONCE) { | ||
| 651 | + this.funcState = this.FUNC_LOCK; | ||
| 652 | + this.funcDiv.addClassName("locked"); | ||
| 653 | + return; | ||
| 654 | +} | ||
| 655 | +else { | ||
| 656 | + this.funcState = this.FUNC_OFF; | ||
| 657 | + this.useAltChars = false; | ||
| 658 | + this.funcDiv.removeClassName("kb-active-char"); | ||
| 659 | + this.funcDiv.removeClassName("locked"); | ||
| 660 | +} | ||
| 661 | +}, | ||
| 662 | + | ||
| 663 | +/* oskb */ | ||
| 664 | +exitSelector:function(chr){ | ||
| 665 | +var letter; | ||
| 666 | +var characterVal,selection; | ||
| 667 | +var tagName=this.target.tagName; | ||
| 668 | +var selectionStart,selectionEnd; | ||
| 669 | +var isWebView=false; | ||
| 670 | + | ||
| 671 | +if(this.target.mojo&&this.target.mojo.insertStringAtCursor){ | ||
| 672 | +isWebView=true; | ||
| 673 | +} | ||
| 674 | + | ||
| 675 | +if(chr){ | ||
| 676 | +letter=chr.letter || chr.character || " "; | ||
| 677 | + | ||
| 678 | +if (this.useAltChars && chr.alt) { | ||
| 679 | + letter = chr.alt; | ||
| 680 | +} | ||
| 681 | + | ||
| 682 | +selection=this.controller.window.getSelection(); | ||
| 683 | + | ||
| 684 | +if (chr.keyCode === 0 && !this.scrollEnabled) { | ||
| 685 | + this.dragEnabled = true; | ||
| 686 | + this.blankDivLeft.addClassName("kb-active-char locked"); | ||
| 687 | + this.blankDivRight.addClassName("kb-active-char locked"); | ||
| 688 | + return; | ||
| 689 | +} | ||
| 690 | +else if (Mojo.Char.isDeleteKey(chr.keyCode)) { | ||
| 691 | + this.controller.document.execCommand("Delete"); | ||
| 692 | +} | ||
| 693 | +else if (chr.keyCode === Mojo.Char.altKey) { | ||
| 694 | + if (this.shiftState === this.SHIFT_LOCK) { | ||
| 695 | + this.handleShift(); | ||
| 696 | + } | ||
| 697 | + this.handleFunc(); | ||
| 698 | +} | ||
| 699 | +else if (chr.keyCode === Mojo.Char.shift) { | ||
| 700 | + if (this.funcState === this.FUNC_LOCK) { | ||
| 701 | + this.handleFunc(); | ||
| 702 | + } | ||
| 703 | + this.handleShift(); | ||
| 704 | +} | ||
| 705 | +else if (this.isSymKey(chr.keyCode)) { | ||
| 706 | + /* TODO: is this really the only way to dynamically start/stop scrolling? */ | ||
| 707 | + this.scrollEnabled = !this.scrollEnabled; | ||
| 708 | + this.renderWidget(); | ||
| 709 | + if (this.scrollEnabled) { | ||
| 710 | + this.symDiv.addClassName("kb-active-char locked"); | ||
| 711 | + } | ||
| 712 | + else { | ||
| 713 | + this.symDiv.removeClassName("kb-active-char locked"); | ||
| 714 | + } | ||
| 715 | + | ||
| 716 | + return; | ||
| 717 | +} | ||
| 718 | +else if (!this.isSupported(chr.keyCode)) { | ||
| 719 | + console.log("Char keycode " + chr.keyCode + " not supported (yet)"); | ||
| 720 | + return; | ||
| 721 | +} | ||
| 722 | +else if(selection&&selection.rangeCount>0&&selection.getRangeAt(0)){ | ||
| 723 | +this.controller.document.execCommand("insertText",true,letter); | ||
| 724 | +}else if(isWebView&&letter!==null&&letter!==undefined){ | ||
| 725 | +this.target.mojo.insertStringAtCursor(letter); | ||
| 726 | +} | ||
| 727 | + | ||
| 728 | + | ||
| 729 | +if (this.isSpecialChar(chr.keyCode)) { | ||
| 730 | + Mojo.Event.send(this.target,'keydown',{keyCode:chr.keyCode}); | ||
| 731 | + Mojo.Event.send(this.target,'keyup',{keyCode:chr.keyCode}); | ||
| 732 | +} | ||
| 733 | + | ||
| 734 | +if(this.target.mojo&&this.target.mojo.setText){ | ||
| 735 | +selectionStart=this.target.selectionStart; | ||
| 736 | +selectionEnd=this.target.selectionEnd; | ||
| 737 | +this.target.mojo.setText(this.target.value); | ||
| 738 | +this.target.selectionStart=selectionStart; | ||
| 739 | +this.target.selectionEnd=selectionEnd; | ||
| 740 | +} | ||
| 741 | + | ||
| 742 | + | ||
| 743 | +}else{ | ||
| 744 | +this.cleanupEventListeners(); | ||
| 745 | +this._safeRemove(); | ||
| 746 | +this.state=this.VIRT_KB_CLOSED; | ||
| 747 | +} | ||
| 748 | + | ||
| 749 | +if(!isWebView){ | ||
| 750 | +this.target.focus(); | ||
| 751 | +} | ||
| 752 | + | ||
| 753 | +if (chr && this.shiftState === this.SHIFT_ONCE && chr.keyCode !== Mojo.Char.shift){ | ||
| 754 | + this.shiftState = this.SHIFT_OFF; | ||
| 755 | + this.shiftDiv.removeClassName("locked"); | ||
| 756 | + this.shiftDiv.removeClassName("kb-active-char"); | ||
| 757 | + this.textCase = "lowercase"; | ||
| 758 | + this.updateText(); | ||
| 759 | +} | ||
| 760 | +if (chr && this.funcState === this.FUNC_ONCE && chr.keyCode !== Mojo.Char.altKey){ | ||
| 761 | + this.funcState = this.FUNC_OFF; | ||
| 762 | + this.funcDiv.removeClassName("locked"); | ||
| 763 | + this.funcDiv.removeClassName("kb-active-char"); | ||
| 764 | + this.useAltChars = false; | ||
| 765 | +} | ||
| 766 | +}, | ||
| 767 | + | ||
| 768 | + | ||
| 769 | +/* oskb */ | ||
| 770 | +_safeRemove:function(){ | ||
| 771 | +this.controller.scene.removeContainer(this.controller.element); | ||
| 772 | +if(this.controller.element&&this.controller.element.parentNode){ | ||
| 773 | +Element.remove(this.controller.element); | ||
| 774 | +} | ||
| 775 | +}, | ||
| 776 | + | ||
| 777 | + | ||
| 778 | +/* oskb */ | ||
| 779 | +_insertChar:function(origValue,letter,start,end){ | ||
| 780 | +var value=''; | ||
| 781 | +if(origValue){ | ||
| 782 | +value=origValue.substring(0,start); | ||
| 783 | +value+=letter; | ||
| 784 | +value+=origValue.substring(end,origValue.length); | ||
| 785 | +}else{ | ||
| 786 | +value=letter; | ||
| 787 | +} | ||
| 788 | +return value; | ||
| 789 | +}, | ||
| 790 | + | ||
| 791 | + | ||
| 792 | +/* oskb */ | ||
| 793 | +advance:function(){ | ||
| 794 | +var old=this._selectedIdxElem(); | ||
| 795 | +var newElm; | ||
| 796 | + | ||
| 797 | +if(this.selectedIndex+1>this.charList.length-1){ | ||
| 798 | +this.selectedIndex=0; | ||
| 799 | +}else{ | ||
| 800 | +this.selectedIndex++; | ||
| 801 | +} | ||
| 802 | + | ||
| 803 | +/* oskb */ | ||
| 804 | +newElm=this._selectedIdxElem(); | ||
| 805 | +this._updateSelected(old,newElm); | ||
| 806 | +}, | ||
| 807 | + | ||
| 808 | + | ||
| 809 | +/* oskb */ | ||
| 810 | +retreat:function(){ | ||
| 811 | +var old,newElm; | ||
| 812 | + | ||
| 813 | +old=this._selectedIdxElem(); | ||
| 814 | +if(this.selectedIndex===0){ | ||
| 815 | +this.selectedIndex=this.charList.length-1; | ||
| 816 | +}else{ | ||
| 817 | +this.selectedIndex=this.selectedIndex-1; | ||
| 818 | +} | ||
| 819 | +newElm=this._selectedIdxElem(); | ||
| 820 | +this._updateSelected(old,newElm); | ||
| 821 | +}, | ||
| 822 | + | ||
| 823 | + | ||
| 824 | +/* oskb */ | ||
| 825 | +_getMatching:function(element,query){ | ||
| 826 | +if(!element){ | ||
| 827 | +return; | ||
| 828 | +} | ||
| 829 | +return element.querySelector("[name='"+query+"']"); | ||
| 830 | +}, | ||
| 831 | + | ||
| 832 | + | ||
| 833 | +/* oskb */ | ||
| 834 | +_updateSelected:function(oldSelection,newSelection){ | ||
| 835 | +var node; | ||
| 836 | +if(oldSelection){ | ||
| 837 | +node=this._getMatching(oldSelection,oldSelection.getAttribute("name")); | ||
| 838 | +if(node){ | ||
| 839 | +node.removeClassName("selected-char"); | ||
| 840 | +} | ||
| 841 | +} | ||
| 842 | +if(newSelection){ | ||
| 843 | +node=this._getMatching(newSelection,newSelection.getAttribute("name")); | ||
| 844 | +if(node){ | ||
| 845 | +node.addClassName("selected-char"); | ||
| 846 | +} | ||
| 847 | +} | ||
| 848 | +}, | ||
| 849 | + | ||
| 850 | + | ||
| 851 | + | ||
| 852 | +/* oskb */ | ||
| 853 | +moveDown:function(){ | ||
| 854 | +var old,newElm; | ||
| 855 | +if(this.selectedIndex+this.perLine<this.charList.length){ | ||
| 856 | +old=this._selectedIdxElement(); | ||
| 857 | +this.selectedIndex=this.selectedIndex+this.perLine; | ||
| 858 | +newElm=this._selectedIdxElement(); | ||
| 859 | +this._updateSelected(old,newElm); | ||
| 860 | +} | ||
| 861 | +}, | ||
| 862 | + | ||
| 863 | + | ||
| 864 | +/* oskb */ | ||
| 865 | +moveUp:function(){ | ||
| 866 | +var old,newElm; | ||
| 867 | +if(this.selectedIndex-this.perLine>=0){ | ||
| 868 | +old=this._selectedIdxElem(); | ||
| 869 | +this.selectedIndex=this.selectedIndex-this.perLine; | ||
| 870 | +newElm=this._selectedIdxElem(); | ||
| 871 | +this._updatedSelected(old,newElm); | ||
| 872 | +} | ||
| 873 | +}, | ||
| 874 | + | ||
| 875 | + | ||
| 876 | +/* oskb */ | ||
| 877 | +updatePosition:function(key){ | ||
| 878 | +switch(key){ | ||
| 879 | +case Mojo.Char.leftArrow: | ||
| 880 | +this.retreat(); | ||
| 881 | +break; | ||
| 882 | +case Mojo.Char.upArrow: | ||
| 883 | +this.moveUp(); | ||
| 884 | +break; | ||
| 885 | +case Mojo.Char.rightArrow: | ||
| 886 | +this.advance(); | ||
| 887 | +break; | ||
| 888 | +case Mojo.Char.downArrow: | ||
| 889 | +this.moveDown(); | ||
| 890 | +break; | ||
| 891 | +default: | ||
| 892 | +break; | ||
| 893 | +} | ||
| 894 | + | ||
| 895 | +if(this.charPicker){ | ||
| 896 | +this.controller.get(this.divPrefix+'-char-selector').mojo.revealElement(this._selectedIdxElem()); | ||
| 897 | +} | ||
| 898 | +}, | ||
| 899 | + | ||
| 900 | + | ||
| 901 | + | ||
| 902 | +/* oskb */ | ||
| 903 | +handleKeyUpEvent:function(event){ | ||
| 904 | +if (event.keyCode === Mojo.Char.metaKey) { | ||
| 905 | + this.exitSelector(); | ||
| 906 | +} | ||
| 907 | +return; | ||
| 908 | +var keyCode=event.keyCode; | ||
| 909 | +var chr; | ||
| 910 | + | ||
| 911 | +this.exitSelector(); | ||
| 912 | +return; | ||
| 913 | + | ||
| 914 | +if(this.isSymKey(keyCode)){ | ||
| 915 | +if(this.state===this.VIRT_KB_FILTERING_STATE){ | ||
| 916 | +chr=this.getEntered(); | ||
| 917 | +} | ||
| 918 | +this.exitSelector(chr); | ||
| 919 | +Event.stop(event); | ||
| 920 | +return; | ||
| 921 | +} | ||
| 922 | +}, | ||
| 923 | + | ||
| 924 | + | ||
| 925 | +/* oskb */ | ||
| 926 | +handleKeyEvent:function(event){ | ||
| 927 | +return; | ||
| 928 | +var keyCode=event.keyCode; | ||
| 929 | + | ||
| 930 | +if(Mojo.Char.isEnterKey(keyCode)){ | ||
| 931 | +this.exitSelector(this.getEntered()); | ||
| 932 | +Event.stop(event); | ||
| 933 | + | ||
| 934 | +return; | ||
| 935 | +} | ||
| 936 | +if(Mojo.Char.isDeleteKey(keyCode)){ | ||
| 937 | +this.exitSelector(); | ||
| 938 | +Event.stop(event); | ||
| 939 | +return; | ||
| 940 | +} | ||
| 941 | +if(this.isDirectionalKey(keyCode)){ | ||
| 942 | +this.updatePosition(keyCode); | ||
| 943 | +Event.stop(event); | ||
| 944 | +return; | ||
| 945 | +} | ||
| 946 | + | ||
| 947 | +if(!Mojo.Char.isValid(keyCode)){ | ||
| 948 | +return; | ||
| 949 | +} | ||
| 950 | + | ||
| 951 | +switch(this.state){ | ||
| 952 | +case this.VIRT_KB_OPEN: | ||
| 953 | +case this.VIRT_KB_FILTERING_STATE: | ||
| 954 | +case this.VIRT_KB_EMPTY: | ||
| 955 | +this.enterFilteringState(keyCode); | ||
| 956 | +Event.stop(event); | ||
| 957 | +break; | ||
| 958 | +default: | ||
| 959 | +break; | ||
| 960 | +} | ||
| 961 | +}, | ||
| 962 | + | ||
| 963 | +/* oskb */ | ||
| 964 | +maybeChangeLayout:function(){ | ||
| 965 | + var orientation = this.controller.stageController.getWindowOrientation(); | ||
| 966 | + switch (this.layout) { | ||
| 967 | + case "portrait": | ||
| 968 | + if (orientation==="left" || orientation==="right") { | ||
| 969 | + this.renderWidget(); | ||
| 970 | + } | ||
| 971 | + break; | ||
| 972 | + case "landscape": | ||
| 973 | + if (orientation==="up" || orientation==="down") { | ||
| 974 | + this.renderWidget(); | ||
| 975 | + } | ||
| 976 | + break; | ||
| 977 | + } | ||
| 978 | +}, | ||
| 979 | + | ||
| 980 | +/* oskb */ | ||
| 981 | +playClick:function(){ | ||
| 982 | +var request = new Mojo.Service.Request('palm://com.palm.crotest', { | ||
| 983 | + method: 'PlaySound', | ||
| 984 | + parameters: {"file":this.VIRT_KB_SOUNDS_PATH + this.clickFile} | ||
| 985 | + }); | ||
| 986 | +}, | ||
| 987 | + | ||
| 988 | +/* oskb */ | ||
| 989 | +vibrate:function(){ | ||
| 990 | +var request2 = new Mojo.Service.Request('palm://com.palm.vibrate', { | ||
| 991 | + method: 'vibrate', | ||
| 992 | + parameters: {"period": 0, "duration": this.haptic} | ||
| 993 | + }); | ||
| 994 | +}, | ||
| 995 | + | ||
| 996 | +/* oskb */ | ||
| 997 | +handleOrientation:function(event){ | ||
| 998 | +/*TODO: I'm not sure why, but every change I get two events, back to back. | ||
| 999 | + * For now just ignore the 2nd orient event */ | ||
| 1000 | +if (this.ignoreSecond) { | ||
| 1001 | + this.ignoreSecond=false; | ||
| 1002 | + return; | ||
| 1003 | +} | ||
| 1004 | +else { | ||
| 1005 | + this.ignoreSecond=true; | ||
| 1006 | + this.maybeChangeLayout(); | ||
| 1007 | +} | ||
| 1008 | +}, | ||
| 1009 | + | ||
| 1010 | +/* oskb */ | ||
| 1011 | +handleMouseDown:function(event){ | ||
| 1012 | +if (this.scrollEnabled || this.dragEnabled) { | ||
| 1013 | + return; | ||
| 1014 | +} | ||
| 1015 | + | ||
| 1016 | +if (this.isInKeyboard(event.target)) { | ||
| 1017 | + event.stop(); | ||
| 1018 | + this.stopScroll=true; | ||
| 1019 | + if (this.haptic > 0 && this.haptic <= 100) { | ||
| 1020 | + this.vibrate(); | ||
| 1021 | + } | ||
| 1022 | + | ||
| 1023 | + var name = event.target.getAttribute('name'); | ||
| 1024 | + this.preview=this.controller.get(this.divPrefix+"-"+name); | ||
| 1025 | + if (this.preview) { | ||
| 1026 | + this.preview.addClassName("kb-selected-char"); | ||
| 1027 | + } | ||
| 1028 | +} | ||
| 1029 | +}, | ||
| 1030 | + | ||
| 1031 | +/* oskb */ | ||
| 1032 | +handleMouseOver:function(event){ | ||
| 1033 | +if (this.scrollEnabled || this.dragEnabled) { | ||
| 1034 | + return; | ||
| 1035 | +} | ||
| 1036 | + | ||
| 1037 | +if (this.preview && (this.preview !== event.target)) { | ||
| 1038 | + this.preview.removeClassName("kb-selected-char"); | ||
| 1039 | + this.preview=undefined; | ||
| 1040 | +} | ||
| 1041 | + | ||
| 1042 | +if (this.isInKeyboard(event.target)) { | ||
| 1043 | + event.stop(); | ||
| 1044 | + this.stopScroll=true; | ||
| 1045 | + var name = event.target.getAttribute('name'); | ||
| 1046 | + this.preview=this.controller.get(this.divPrefix+"-"+name); | ||
| 1047 | + if (this.preview) { | ||
| 1048 | + this.preview.addClassName("kb-selected-char"); | ||
| 1049 | + } | ||
| 1050 | +} | ||
| 1051 | +}, | ||
| 1052 | + | ||
| 1053 | +/* oskb */ | ||
| 1054 | +handleMouseUp:function(event){ | ||
| 1055 | +this.stopScroll=false; | ||
| 1056 | +if (this.scrollEnabled || this.dragEnabled) { | ||
| 1057 | + return; | ||
| 1058 | +} | ||
| 1059 | + | ||
| 1060 | +if (this.isInKeyboard(event.target)) { | ||
| 1061 | + event.stop(); | ||
| 1062 | + if (this.clickFile) { | ||
| 1063 | + this.playClick(); | ||
| 1064 | + } | ||
| 1065 | + | ||
| 1066 | + if (this.preview) { | ||
| 1067 | + this.preview.removeClassName.bind(this.preview).defer("kb-selected-char"); | ||
| 1068 | + this.preview=undefined; | ||
| 1069 | + } | ||
| 1070 | + | ||
| 1071 | + if (this.state === this.VIRT_KB_OPEN){ | ||
| 1072 | + this.exitSelector(this.getSelected(event.target)); | ||
| 1073 | + } | ||
| 1074 | +} | ||
| 1075 | +}, | ||
| 1076 | + | ||
| 1077 | +/* oskb */ | ||
| 1078 | +handleTapEvent:function(event){ | ||
| 1079 | +if (!this.scrollEnabled) { | ||
| 1080 | + return; | ||
| 1081 | +} | ||
| 1082 | + | ||
| 1083 | +if (this.state === this.VIRT_KB_OPEN){ | ||
| 1084 | + if (this.isInKeyboard(event.target)) { | ||
| 1085 | + event.stop(); | ||
| 1086 | + var name = event.target.getAttribute('name'); | ||
| 1087 | + this.preview=this.controller.get(this.divPrefix+"-"+name); | ||
| 1088 | + if (this.preview) { | ||
| 1089 | + this.preview.addClassName("kb-selected-char"); | ||
| 1090 | + } | ||
| 1091 | + this.exitSelector(this.charList[name]); | ||
| 1092 | + if (this.preview) { | ||
| 1093 | + this.preview.removeClassName.bind(this.preview).defer("kb-selected-char"); | ||
| 1094 | + } | ||
| 1095 | + } | ||
| 1096 | +} | ||
| 1097 | +}, | ||
| 1098 | + | ||
| 1099 | +/* oskb */ | ||
| 1100 | +handleDragStart:function(event){ | ||
| 1101 | +if (this.dragEnabled && !this.scrollEnabled && this.isInKeyboard(event.target)) { | ||
| 1102 | + /* Set the keyboard absolutely positioned inside the charpicker, and then set the charpicker to be fixed | ||
| 1103 | + * to the entire viewport so it can be used as the drop container */ | ||
| 1104 | + this.keyboard.setStyle({"position":"absolute","top":this.charPicker.offsetTop+'px'}); | ||
| 1105 | + this.charPicker.setStyle({"position":"fixed","width":"100%","height":"100%","left":"0px","top":"0px"}); | ||
| 1106 | + | ||
| 1107 | + Mojo.Drag.setupDropContainer(this.charPicker,this); | ||
| 1108 | + Mojo.Drag.startDragging(this.controller.scene,this.keyboard,event.down, | ||
| 1109 | + { | ||
| 1110 | + preventHorizontal:true, | ||
| 1111 | + preventDropReset:true, | ||
| 1112 | + draggingClass: "kb-drag", | ||
| 1113 | + maxVerticalPixel: this.maxVert, | ||
| 1114 | + minVerticalPixel: 0 | ||
| 1115 | + }); | ||
| 1116 | + event.stop(); | ||
| 1117 | +} | ||
| 1118 | +else if (this.stopScroll) { | ||
| 1119 | + event.stop(); | ||
| 1120 | +} | ||
| 1121 | +}, | ||
| 1122 | + | ||
| 1123 | +/* oskb */ | ||
| 1124 | +handleDragging:function(event){ | ||
| 1125 | + if (this.stopScroll) { | ||
| 1126 | + event.stop(); | ||
| 1127 | + } | ||
| 1128 | +}, | ||
| 1129 | + | ||
| 1130 | +/* oskb */ | ||
| 1131 | +handleDragEnd:function(event){ | ||
| 1132 | +if (this.dragEnabled && !this.scrollEnabled) { | ||
| 1133 | + /* Done dragging, so set the charpicker that was being used as the drop container back down | ||
| 1134 | + * to the actual keyboard size, and set the keyboard back to fit exactly inside * | ||
| 1135 | + * TODO: Store keyboard size from css rather than hard-coded here */ | ||
| 1136 | + this.charPicker.setStyle({"width":"320px","height":"264px","top":this.keyboard.offsetTop+'px'}); | ||
| 1137 | + this.keyboard.setStyle({"top":"0px"}); | ||
| 1138 | + this.dragEnabled = false; | ||
| 1139 | + this.blankDivLeft.removeClassName("kb-active-char locked"); | ||
| 1140 | + this.blankDivRight.removeClassName("kb-active-char locked"); | ||
| 1141 | +} | ||
| 1142 | +else if (this.stopScroll) { | ||
| 1143 | + event.stop(); | ||
| 1144 | +} | ||
| 1145 | +}, | ||
| 1146 | + | ||
| 1147 | +/* oskb */ | ||
| 1148 | +dragDrop:function() { | ||
| 1149 | +// Dummy function to avoid error/warnings from Dragger | ||
| 1150 | +}, | ||
| 1151 | + | ||
| 1152 | +/* oskb */ | ||
| 1153 | +getEntered:function(){ | ||
| 1154 | +return this.charList[this.selectedIndex]; | ||
| 1155 | +}, | ||
| 1156 | + | ||
| 1157 | +/* oskb */ | ||
| 1158 | +getSelected:function(target){ | ||
| 1159 | +var chr=target.getAttribute('name'); | ||
| 1160 | + | ||
| 1161 | +return this.charList[chr]; | ||
| 1162 | +}, | ||
| 1163 | + | ||
| 1164 | + | ||
| 1165 | + | ||
| 1166 | + | ||
| 1167 | + | ||
| 1168 | + | ||
| 1169 | +/* oskb */ | ||
| 1170 | +isDirectionalKey:function(key){ | ||
| 1171 | +if(key==Mojo.Char.leftArrow||key==Mojo.Char.upArrow||key==Mojo.Char.rightArrow||key==Mojo.Char.downArrow){ | ||
| 1172 | +return true; | ||
| 1173 | +} | ||
| 1174 | +return false; | ||
| 1175 | +}, | ||
| 1176 | + | ||
| 1177 | + | ||
| 1178 | +/* oskb */ | ||
| 1179 | +isInCharPicker:function(target){ | ||
| 1180 | +if(!this.charPicker){ | ||
| 1181 | +return; | ||
| 1182 | +} | ||
| 1183 | +if(target.id==this.charPicker.id||Element.up(target,'div#'+this.charPicker.id)){ | ||
| 1184 | +return true; | ||
| 1185 | +} | ||
| 1186 | +return false; | ||
| 1187 | +}, | ||
| 1188 | + | ||
| 1189 | +/* oskb */ | ||
| 1190 | +isInKeyboard:function(target){ | ||
| 1191 | +if(!this.keyboard){ | ||
| 1192 | +return; | ||
| 1193 | +} | ||
| 1194 | +if(Element.up(target,'div#'+this.keyboard.id)){ | ||
| 1195 | +return true; | ||
| 1196 | +} | ||
| 1197 | +return false; | ||
| 1198 | +}, | ||
| 1199 | + | ||
| 1200 | + | ||
| 1201 | +/* oskb */ | ||
| 1202 | +isSymKey:function(keyCode){ | ||
| 1203 | +return keyCode===Mojo.Char.sym; | ||
| 1204 | +}, | ||
| 1205 | + | ||
| 1206 | + | ||
| 1207 | +/* oskb */ | ||
| 1208 | +_selectedIdxElem:function(){ | ||
| 1209 | +return this.controller.get(this.divPrefix+"-"+this.selectedIndex); | ||
| 1210 | +}, | ||
| 1211 | + | ||
| 1212 | + | ||
| 1213 | +/* oskb */ | ||
| 1214 | +handleCommand:function(commandEvent){ | ||
| 1215 | +if(commandEvent.type===Mojo.Event.back&&(this.state!==this.VIRT_KB_CLOSED&&this.state!==this.VIRT_KB_EMPTY)){ | ||
| 1216 | +this.exitSelector(); | ||
| 1217 | +Event.stop(commandEvent); | ||
| 1218 | +} | ||
| 1219 | +} | ||
| 1220 | +}); | ||
| 1221 | + | ||
| 1222 | /* Compressed by the perl version of jsmin. */ | ||
| 1223 | /* JavaScript::Minifier 0.02 */ | ||
| 1224 | |||
| 1225 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_fulltable.json b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_fulltable.json | ||
| 1226 | new file mode 100644 | ||
| 1227 | index 0000000..1d35116 | ||
| 1228 | --- /dev/null | ||
| 1229 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_fulltable.json | ||
| 1230 | @@ -0,0 +1,86 @@ | ||
| 1231 | +[ | ||
| 1232 | + {"keyCode": 81, "letter":"q", "list": ["q"], alt: "/"}, | ||
| 1233 | + {"keyCode": 87, "letter":"w", "list": ["w"], alt: "+"}, | ||
| 1234 | + {"keyCode": 69, "letter":"e", "list": ["e"], alt: "1"}, | ||
| 1235 | + {"keyCode": 82, "letter":"r", "list": ["r"], alt: "2"}, | ||
| 1236 | + {"keyCode": 84, "letter":"t", "list": ["t"], alt: "3"}, | ||
| 1237 | + {"keyCode": 89, "letter":"y", "list": ["y"], alt: "("}, | ||
| 1238 | + {"keyCode": 85, "letter":"u", "list": ["u"], alt: ")"}, | ||
| 1239 | + {"keyCode": 73, "letter":"i", "list": ["i"], alt: "%"}, | ||
| 1240 | + {"keyCode": 79, "letter":"o", "list": ["o"], alt: "\""}, | ||
| 1241 | + {"keyCode": 80, "letter":"p", "list": ["p"], alt: "="}, | ||
| 1242 | + | ||
| 1243 | + {"keyCode": 65, "letter":"a", "list": ["a"], alt: "&"}, | ||
| 1244 | + {"keyCode": 83, "letter":"s", "list": ["s"], alt: "-"}, | ||
| 1245 | + {"keyCode": 68, "letter":"d", "list": ["d"], alt: "4"}, | ||
| 1246 | + {"keyCode": 70, "letter":"f", "list": ["f"], alt: "5"}, | ||
| 1247 | + {"keyCode": 71, "letter":"g", "list": ["g"], alt: "6"}, | ||
| 1248 | + {"keyCode": 72, "letter":"h", "list": ["h"], alt: "$"}, | ||
| 1249 | + {"keyCode": 74, "letter":"j", "list": ["j"], alt: "!"}, | ||
| 1250 | + {"keyCode": 75, "letter":"k", "list": ["k"], alt: ":"}, | ||
| 1251 | + {"keyCode": 76, "letter":"l", "list": ["l"], alt: "'"}, | ||
| 1252 | + {"keyCode": 8, "letter":"\b", "list": ["«"]}, | ||
| 1253 | + | ||
| 1254 | + {"keyCode": 18, "letter":"alt-orange", "list": ["¤"]}, | ||
| 1255 | + {"keyCode": 90, "letter":"z", "list": ["z"], alt: "*"}, | ||
| 1256 | + {"keyCode": 88, "letter":"x", "list": ["x"], alt: "7"}, | ||
| 1257 | + {"keyCode": 67, "letter":"c", "list": ["c"], alt: "8"}, | ||
| 1258 | + {"keyCode": 86, "letter":"v", "list": ["v"], alt: "9"}, | ||
| 1259 | + {"keyCode": 66, "letter":"b", "list": ["b"], alt: "#"}, | ||
| 1260 | + {"keyCode": 78, "letter":"n", "list": ["n"], alt: "?"}, | ||
| 1261 | + {"keyCode": 77, "letter":"m", "list": ["m"], alt: ";"}, | ||
| 1262 | + {"keyCode": 188, "letter":",", "list": [","], alt: "_"}, | ||
| 1263 | + {"keyCode": 13, "letter":"\n", "list": ["»"]}, | ||
| 1264 | + | ||
| 1265 | + {"keyCode": 00, "letter":"blank", "list": ["°"]}, | ||
| 1266 | + {"keyCode": 16, "letter":"shift", "list": ["¥"], "span": 1.5}, | ||
| 1267 | + {"keyCode": 90, "letter":"@", "list": ["@"], alt: "0"}, | ||
| 1268 | + {"keyCode": 32, "letter":" ", "list": [" "], "span": 3}, | ||
| 1269 | + {"keyCode": 190, "letter":".", "list": ["."]}, | ||
| 1270 | + {"keyCode": 17, "letter":"sym-ctrl", "list": ["¿"], "span": 1.5}, | ||
| 1271 | + {"keyCode": 00, "letter":"blank", "list": ["°"]}, | ||
| 1272 | + | ||
| 1273 | + {"keyCode": 190, "letter":"", "list": ["/","?","+","(",")","%","\"","=","&","-","$","!",":","'","&","#","_"]}, | ||
| 1274 | + {"keyCode": 48, "letter":"0", "list": ["0"]}, | ||
| 1275 | + {"keyCode": 49, "letter":"1", "list": ["1"]}, | ||
| 1276 | + {"keyCode": 50, "letter":"2", "list": ["2"]}, | ||
| 1277 | + {"keyCode": 51, "letter":"3", "list": ["3"]}, | ||
| 1278 | + {"keyCode": 52, "letter":"4", "list": ["4"]}, | ||
| 1279 | + {"keyCode": 53, "letter":"5", "list": ["5"]}, | ||
| 1280 | + {"keyCode": 54, "letter":"6", "list": ["6"]}, | ||
| 1281 | + {"keyCode": 55, "letter":"7", "list": ["7"]}, | ||
| 1282 | + {"keyCode": 56, "letter":"8", "list": ["8"]}, | ||
| 1283 | + {"keyCode": 57, "letter":"9", "list": ["9"]}, | ||
| 1284 | + | ||
| 1285 | + {"keyCode": 190, "letter":"", "list": ["~","\\","•","`","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1286 | + {"keyCode": 65, "letter":"", "list": ["á","à","ä","â","ã","å","æ"]}, | ||
| 1287 | + {"keyCode": 65, "letter":"", "list": ["Á","À","Ä","Â","Ã","Å","Æ"], "modifier": 16}, | ||
| 1288 | + {"keyCode": 67, "letter":"", "list": ["©","ç"]}, | ||
| 1289 | + {"keyCode": 67, "letter":"", "list": ["Ç"], "modifier": 16}, | ||
| 1290 | + {"keyCode": 69, "letter":"", "list": ["é","è","ë","ê","ē"]}, | ||
| 1291 | + {"keyCode": 69, "letter":"", "list": ["É","È","Ë","Ê"], "modifier": 16}, | ||
| 1292 | + {"keyCode": 73, "letter":"", "list": ["í","ì","ï","î"]}, | ||
| 1293 | + {"keyCode": 73, "letter":"", "list": ["Í","Ì","Ï","Î"], "modifier": 16}, | ||
| 1294 | + {"keyCode": 78, "letter":"", "list": ["ñ"]}, | ||
| 1295 | + {"keyCode": 78, "letter":"", "list": ["Ñ"], "modifier": 16}, | ||
| 1296 | + {"keyCode": 79, "letter":"", "list": ["ó","ò","ö","ô","œ","õ","ø"]}, | ||
| 1297 | + {"keyCode": 79, "letter":"", "list": ["Ó","Ò","Ö","Ô","Œ","Õ","Ø"], "modifier": 16}, | ||
| 1298 | + {"keyCode": 83, "letter":"", "list": ["ß"]}, | ||
| 1299 | + {"keyCode": 85, "letter":"", "list": ["ú","ù","ü","û"]}, | ||
| 1300 | + {"keyCode": 85, "letter":"", "list": ["Ú","Ù","Ü","Û"], "modifier": 16}, | ||
| 1301 | + {"keyCode": 88, "letter":"", "list": ["×","¤"]}, | ||
| 1302 | + {"keyCode": 89, "letter":"", "list": ["ÿ"]}, | ||
| 1303 | + {"keyCode": 89, "letter":"", "list": ["Ÿ"], "modifier": 16}, | ||
| 1304 | + {"keyCode": 82, "letter":"", "list": ["®"]}, | ||
| 1305 | + {"keyCode": 80, "letter":"", "list": ["¶"]}, | ||
| 1306 | + {"keyCode": 84, "letter":"", "list": ["™"]}, | ||
| 1307 | + {"keyCode": 68, "letter":"", "list": ["†","‡"], "modifier": 16}, | ||
| 1308 | + {"keyCode": 96, "letter":"", "list": ["°"]}, | ||
| 1309 | + {"keyCode": 97, "letter":"", "list": ["¹", "¼", "½"]}, | ||
| 1310 | + {"keyCode": 98, "letter":"", "list": ["²"]}, | ||
| 1311 | + {"keyCode": 99, "letter":"", "list": ["³", "¾"]}, | ||
| 1312 | + {"keyCode": 67, "letter":"", "list": ["¡"]}, | ||
| 1313 | + {"keyCode": 67, "letter":"", "list": ["¿"]}, | ||
| 1314 | + {"keyCode": 67, "letter":"", "list": [":-)", ":-(", ";-)"]}, | ||
| 1315 | + {"keyCode": 67, "letter":"", "list": ["$","¢","€","£","¥"]} | ||
| 1316 | +] | ||
| 1317 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_fulltable_qwertz.json b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_fulltable_qwertz.json | ||
| 1318 | new file mode 100644 | ||
| 1319 | index 0000000..d4a8128 | ||
| 1320 | --- /dev/null | ||
| 1321 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_fulltable_qwertz.json | ||
| 1322 | @@ -0,0 +1,58 @@ | ||
| 1323 | +[ | ||
| 1324 | + {"keyCode": 65, "letter":"a", "list": ["a"]}, | ||
| 1325 | + {"keyCode": 66, "letter":"b", "list": ["b"]}, | ||
| 1326 | + {"keyCode": 67, "letter":"c", "list": ["c"]}, | ||
| 1327 | + {"keyCode": 68, "letter":"d", "list": ["d"]}, | ||
| 1328 | + {"keyCode": 69, "letter":"e", "list": ["e"]}, | ||
| 1329 | + {"keyCode": 70, "letter":"f", "list": ["f"]}, | ||
| 1330 | + {"keyCode": 70, "letter":"g", "list": ["g"]}, | ||
| 1331 | + {"keyCode": 70, "letter":"h", "list": ["h"]}, | ||
| 1332 | + {"keyCode": 70, "letter":"i", "list": ["i"]}, | ||
| 1333 | + {"keyCode": 70, "letter":"j", "list": ["j"]}, | ||
| 1334 | + {"keyCode": 70, "letter":"k", "list": ["k"]}, | ||
| 1335 | + {"keyCode": 70, "letter":"l", "list": ["l"]}, | ||
| 1336 | + {"keyCode": 70, "letter":"m", "list": ["m"]}, | ||
| 1337 | + {"keyCode": 70, "letter":"n", "list": ["n"]}, | ||
| 1338 | + {"keyCode": 70, "letter":"o", "list": ["o"]}, | ||
| 1339 | + {"keyCode": 80, "letter":"p", "list": ["p"]}, | ||
| 1340 | + {"keyCode": 80, "letter":"q", "list": ["q"]}, | ||
| 1341 | + {"keyCode": 80, "letter":"r", "list": ["r"]}, | ||
| 1342 | + {"keyCode": 80, "letter":"s", "list": ["s"]}, | ||
| 1343 | + {"keyCode": 80, "letter":"t", "list": ["t"]}, | ||
| 1344 | + {"keyCode": 80, "letter":"u", "list": ["u"]}, | ||
| 1345 | + {"keyCode": 80, "letter":"v", "list": ["v"]}, | ||
| 1346 | + {"keyCode": 80, "letter":"w", "list": ["w"]}, | ||
| 1347 | + {"keyCode": 80, "letter":"x", "list": ["x"]}, | ||
| 1348 | + {"keyCode": 80, "letter":"y", "list": ["y"]}, | ||
| 1349 | + {"keyCode": 90, "letter":"z", "list": ["z"]}, | ||
| 1350 | + {"keyCode": 90, "letter":"z", "list": ["z"]}, | ||
| 1351 | + {"keyCode": 65, "letter":"A", "list": ["A"], "modifier": 16}, | ||
| 1352 | + {"keyCode": 67, "letter":"c", "list": ["©","ç"]}, | ||
| 1353 | + {"keyCode": 67, "letter":"C", "list": ["Ç"], "modifier": 16}, | ||
| 1354 | + {"keyCode": 69, "letter":"e", "list": ["é","è","ë","ê","ē"]}, | ||
| 1355 | + {"keyCode": 69, "letter":"E", "list": ["É","È","Ë","Ê"], "modifier": 16}, | ||
| 1356 | + {"keyCode": 73, "letter":"i", "list": ["í","ì","ï","î"]}, | ||
| 1357 | + {"keyCode": 73, "letter":"I", "list": ["Í","Ì","Ï","Î"], "modifier": 16}, | ||
| 1358 | + {"keyCode": 78, "letter":"n", "list": ["ñ"]}, | ||
| 1359 | + {"keyCode": 78, "letter":"N", "list": ["Ñ"], "modifier": 16}, | ||
| 1360 | + {"keyCode": 79, "letter":"o", "list": ["ó","ò","ö","ô","œ","õ","ø"]}, | ||
| 1361 | + {"keyCode": 79, "letter":"O", "list": ["Ó","Ò","Ö","Ô","Œ","Õ","Ø"], "modifier": 16}, | ||
| 1362 | + {"keyCode": 83, "letter":"s", "list": ["ß"]}, | ||
| 1363 | + {"keyCode": 85, "letter":"u", "list": ["ú","ù","ü","û"]}, | ||
| 1364 | + {"keyCode": 85, "letter":"U", "list": ["Ú","Ù","Ü","Û"], "modifier": 16}, | ||
| 1365 | + {"keyCode": 88, "letter":"x", "list": ["×","¤"]}, | ||
| 1366 | + {"keyCode": 89, "letter":"y", "list": ["ÿ"]}, | ||
| 1367 | + {"keyCode": 89, "letter":"Y", "list": ["Ÿ"], "modifier": 16}, | ||
| 1368 | + {"keyCode": 82, "letter":"r", "list": ["®"]}, | ||
| 1369 | + {"keyCode": 80, "letter":"p", "list": ["¶"]}, | ||
| 1370 | + {"keyCode": 84, "letter":"t", "list": ["™"]}, | ||
| 1371 | + {"keyCode": 68, "letter":"D", "list": ["†","‡"], "modifier": 16}, | ||
| 1372 | + {"keyCode": 96, "letter":"0", "list": ["°"]}, | ||
| 1373 | + {"keyCode": 97, "letter":"1", "list": ["¹", "¼", "½"]}, | ||
| 1374 | + {"keyCode": 98, "letter":"2", "list": ["²"]}, | ||
| 1375 | + {"keyCode": 99, "letter":"3", "list": ["³", "¾"]}, | ||
| 1376 | + {"keyCode": 67, "letter":"!", "list": ["¡"]}, | ||
| 1377 | + {"keyCode": 67, "letter":"?", "list": ["¿"]}, | ||
| 1378 | + {"keyCode": 67, "letter":":", "list": [":-)", ":-(", ";-)"]}, | ||
| 1379 | + {"keyCode": 67, "letter":"$", "list": ["$","¢","€","£","¥"]} | ||
| 1380 | +] | ||
| 1381 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table.json b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table.json | ||
| 1382 | new file mode 100644 | ||
| 1383 | index 0000000..8544247 | ||
| 1384 | --- /dev/null | ||
| 1385 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table.json | ||
| 1386 | @@ -0,0 +1,30 @@ | ||
| 1387 | +[ | ||
| 1388 | + {"keyCode": 188, "letter":",", "list": ["~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1389 | + {"keyCode": 66, "letter":"b", "list": ["b"]}, | ||
| 1390 | + {"keyCode": 190, "letter":".", "list": ["…","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1391 | + {"keyCode": 48, "letter":"@", "list": ["°","•","Ø"]}, | ||
| 1392 | + {"keyCode": 65, "letter":"a", "list": ["á","à","ä","â","ã","å","æ","Á","À","Ä","Â","Ã","Å","Æ","ª","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1393 | + {"keyCode": 66, "letter":"b", "list": ["~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1394 | + {"keyCode": 67, "letter":"c", "list": ["©","ç","Ç","¢"]}, | ||
| 1395 | + {"keyCode": 68, "letter":"d", "list": ["†","‡"]}, | ||
| 1396 | + {"keyCode": 69, "letter":"e", "list": ["é","è","ë","ê","ē","É","È","Ë","Ê","€","¹","¼","½"]}, | ||
| 1397 | + {"keyCode": 72, "letter":"h", "list": ["¢","€","£","¥","ƒ"]}, | ||
| 1398 | + {"keyCode": 73, "letter":"i", "list": ["í","ì","ï","î","Í","Ì","Ï","Î","÷","‰"]}, | ||
| 1399 | + {"keyCode": 74, "letter":"j", "list": ["¡"]}, | ||
| 1400 | + {"keyCode": 75, "letter":"k", "list": [":-)",":-(",";-)"]}, | ||
| 1401 | + {"keyCode": 76, "letter":"l", "list": ["`","‘","’","‚","‛","\""]}, | ||
| 1402 | + {"keyCode": 77, "letter":"m", "list": ["µ",":-)",":-(",";-)"]}, | ||
| 1403 | + {"keyCode": 78, "letter":"n", "list": ["ñ","Ñ","¿"]}, | ||
| 1404 | + {"keyCode": 79, "letter":"o", "list": ["ó","ò","ö","ô","œ","õ","ø","Ó","Ò","Ö","Ô","Œ","Õ","Ø","º","“","”","„","<",">","«","»"]}, | ||
| 1405 | + {"keyCode": 80, "letter":"p", "list": ["¶","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1406 | + {"keyCode": 81, "letter":"q", "list": ["\\","~","|"]}, | ||
| 1407 | + {"keyCode": 82, "letter":"r", "list": ["®","²"]}, | ||
| 1408 | + {"keyCode": 83, "letter":"s", "list": ["ß","š","Š","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","|"]}, | ||
| 1409 | + {"keyCode": 84, "letter":"t", "list": ["™","³","¾"]}, | ||
| 1410 | + {"keyCode": 85, "letter":"u", "list": ["ú","ù","ü","û","Ú","Ù","Ü","Û","[","]","{","}","<",">","«","»"]}, | ||
| 1411 | + {"keyCode": 86, "letter":"v", "list": ["^"]}, | ||
| 1412 | + {"keyCode": 87, "letter":"w", "list": ["÷","^","±"]}, | ||
| 1413 | + {"keyCode": 88, "letter":"x", "list": ["×","¤"]}, | ||
| 1414 | + {"keyCode": 89, "letter":"y", "list": ["ÿ","ý","Ÿ","Ý","¥","[","]","{","}","<",">","«","»"]}, | ||
| 1415 | + {"keyCode": 90, "letter":"z", "list": ["ž","Ž","•"]} | ||
| 1416 | +] | ||
| 1417 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table_azerty.json b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table_azerty.json | ||
| 1418 | new file mode 100644 | ||
| 1419 | index 0000000..8180a5a | ||
| 1420 | --- /dev/null | ||
| 1421 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table_azerty.json | ||
| 1422 | @@ -0,0 +1,29 @@ | ||
| 1423 | +[ | ||
| 1424 | + {"keyCode": 188, "letter":",", "list": ["~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1425 | + {"keyCode": 190, "letter":".", "list": ["…","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1426 | + {"keyCode": 48, "letter":"@", "list": ["°","•","Ø"]}, | ||
| 1427 | + {"keyCode": 65, "letter":"a", "list": ["á","à","ä","â","ã","å","æ","Á","À","Ä","Â","Ã","Å","Æ","ª","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1428 | + {"keyCode": 66, "letter":"b", "list": ["~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1429 | + {"keyCode": 67, "letter":"c", "list": ["©","ç","Ç","¢"]}, | ||
| 1430 | + {"keyCode": 68, "letter":"d", "list": ["†","‡"]}, | ||
| 1431 | + {"keyCode": 69, "letter":"e", "list": ["é","è","ë","ê","ē","É","È","Ë","Ê","€","¹","¼","½"]}, | ||
| 1432 | + {"keyCode": 72, "letter":"h", "list": ["¢","€","£","¥","ƒ"]}, | ||
| 1433 | + {"keyCode": 73, "letter":"i", "list": ["í","ì","ï","î","Í","Ì","Ï","Î","÷","‰"]}, | ||
| 1434 | + {"keyCode": 74, "letter":"j", "list": ["¡"]}, | ||
| 1435 | + {"keyCode": 75, "letter":"k", "list": [":-)",":-(",";-)"]}, | ||
| 1436 | + {"keyCode": 76, "letter":"l", "list": ["`","‘","’","‚","‛","\""]}, | ||
| 1437 | + {"keyCode": 77, "letter":"m", "list": ["µ",":-)",":-(",";-)"]}, | ||
| 1438 | + {"keyCode": 78, "letter":"n", "list": ["ñ","Ñ","¿"]}, | ||
| 1439 | + {"keyCode": 79, "letter":"o", "list": ["ó","ò","ö","ô","œ","õ","ø","Ó","Ò","Ö","Ô","Œ","Õ","Ø","º","“","”","„","<",">","«","»"]}, | ||
| 1440 | + {"keyCode": 80, "letter":"p", "list": ["¶","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1441 | + {"keyCode": 81, "letter":"q", "list": ["\\","~","|"]}, | ||
| 1442 | + {"keyCode": 82, "letter":"r", "list": ["®","²"]}, | ||
| 1443 | + {"keyCode": 83, "letter":"s", "list": ["ß","š","Š","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","|"]}, | ||
| 1444 | + {"keyCode": 84, "letter":"t", "list": ["™","³","¾"]}, | ||
| 1445 | + {"keyCode": 85, "letter":"u", "list": ["ú","ù","ü","û","Ú","Ù","Ü","Û","[","]","{","}","<",">","«","»"]}, | ||
| 1446 | + {"keyCode": 86, "letter":"v", "list": ["^"]}, | ||
| 1447 | + {"keyCode": 87, "letter":"w", "list": ["÷","^","±"]}, | ||
| 1448 | + {"keyCode": 88, "letter":"x", "list": ["×","¤"]}, | ||
| 1449 | + {"keyCode": 89, "letter":"y", "list": ["ÿ","ý","Ÿ","Ý","¥","[","]","{","}","<",">","«","»"]}, | ||
| 1450 | + {"keyCode": 90, "letter":"z", "list": ["ž","Ž","•"]} | ||
| 1451 | +] | ||
| 1452 | \ No newline at end of file | ||
| 1453 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table_qwertz.json b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table_qwertz.json | ||
| 1454 | new file mode 100644 | ||
| 1455 | index 0000000..8180a5a | ||
| 1456 | --- /dev/null | ||
| 1457 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/kbchars_table_qwertz.json | ||
| 1458 | @@ -0,0 +1,29 @@ | ||
| 1459 | +[ | ||
| 1460 | + {"keyCode": 188, "letter":",", "list": ["~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1461 | + {"keyCode": 190, "letter":".", "list": ["…","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1462 | + {"keyCode": 48, "letter":"@", "list": ["°","•","Ø"]}, | ||
| 1463 | + {"keyCode": 65, "letter":"a", "list": ["á","à","ä","â","ã","å","æ","Á","À","Ä","Â","Ã","Å","Æ","ª","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1464 | + {"keyCode": 66, "letter":"b", "list": ["~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1465 | + {"keyCode": 67, "letter":"c", "list": ["©","ç","Ç","¢"]}, | ||
| 1466 | + {"keyCode": 68, "letter":"d", "list": ["†","‡"]}, | ||
| 1467 | + {"keyCode": 69, "letter":"e", "list": ["é","è","ë","ê","ē","É","È","Ë","Ê","€","¹","¼","½"]}, | ||
| 1468 | + {"keyCode": 72, "letter":"h", "list": ["¢","€","£","¥","ƒ"]}, | ||
| 1469 | + {"keyCode": 73, "letter":"i", "list": ["í","ì","ï","î","Í","Ì","Ï","Î","÷","‰"]}, | ||
| 1470 | + {"keyCode": 74, "letter":"j", "list": ["¡"]}, | ||
| 1471 | + {"keyCode": 75, "letter":"k", "list": [":-)",":-(",";-)"]}, | ||
| 1472 | + {"keyCode": 76, "letter":"l", "list": ["`","‘","’","‚","‛","\""]}, | ||
| 1473 | + {"keyCode": 77, "letter":"m", "list": ["µ",":-)",":-(",";-)"]}, | ||
| 1474 | + {"keyCode": 78, "letter":"n", "list": ["ñ","Ñ","¿"]}, | ||
| 1475 | + {"keyCode": 79, "letter":"o", "list": ["ó","ò","ö","ô","œ","õ","ø","Ó","Ò","Ö","Ô","Œ","Õ","Ø","º","“","”","„","<",">","«","»"]}, | ||
| 1476 | + {"keyCode": 80, "letter":"p", "list": ["¶","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","µ","|"]}, | ||
| 1477 | + {"keyCode": 81, "letter":"q", "list": ["\\","~","|"]}, | ||
| 1478 | + {"keyCode": 82, "letter":"r", "list": ["®","²"]}, | ||
| 1479 | + {"keyCode": 83, "letter":"s", "list": ["ß","š","Š","~","\\","`","•","÷","^","[","]","{","}","<",">","«","»","Ø","|"]}, | ||
| 1480 | + {"keyCode": 84, "letter":"t", "list": ["™","³","¾"]}, | ||
| 1481 | + {"keyCode": 85, "letter":"u", "list": ["ú","ù","ü","û","Ú","Ù","Ü","Û","[","]","{","}","<",">","«","»"]}, | ||
| 1482 | + {"keyCode": 86, "letter":"v", "list": ["^"]}, | ||
| 1483 | + {"keyCode": 87, "letter":"w", "list": ["÷","^","±"]}, | ||
| 1484 | + {"keyCode": 88, "letter":"x", "list": ["×","¤"]}, | ||
| 1485 | + {"keyCode": 89, "letter":"y", "list": ["ÿ","ý","Ÿ","Ý","¥","[","]","{","}","<",">","«","»"]}, | ||
| 1486 | + {"keyCode": 90, "letter":"z", "list": ["ž","Ž","•"]} | ||
| 1487 | +] | ||
| 1488 | \ No newline at end of file | ||
| 1489 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/resources/kbchars_fulltable.json b/usr/palm/frameworks/mojo/submissions/191.15/resources/kbchars_fulltable.json | ||
| 1490 | new file mode 100644 | ||
| 1491 | index 0000000..6774f8f | ||
| 1492 | --- /dev/null | ||
| 1493 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/resources/kbchars_fulltable.json | ||
| 1494 | @@ -0,0 +1,87 @@ | ||
| 1495 | +[ | ||
| 1496 | + {"keyCode": 80, "letter":"q", "list": ["q"]}, | ||
| 1497 | + {"keyCode": 80, "letter":"w", "list": ["w"]}, | ||
| 1498 | + {"keyCode": 69, "letter":"e", "list": ["e"]}, | ||
| 1499 | + {"keyCode": 80, "letter":"r", "list": ["r"]}, | ||
| 1500 | + {"keyCode": 80, "letter":"t", "list": ["t"]}, | ||
| 1501 | + {"keyCode": 80, "letter":"y", "list": ["y"]}, | ||
| 1502 | + {"keyCode": 80, "letter":"u", "list": ["u"]}, | ||
| 1503 | + {"keyCode": 70, "letter":"i", "list": ["i"]}, | ||
| 1504 | + {"keyCode": 70, "letter":"o", "list": ["o"]}, | ||
| 1505 | + {"keyCode": 80, "letter":"p", "list": ["p"]}, | ||
| 1506 | + | ||
| 1507 | + {"keyCode": 65, "letter":"a", "list": ["a"]}, | ||
| 1508 | + {"keyCode": 80, "letter":"s", "list": ["s"]}, | ||
| 1509 | + {"keyCode": 68, "letter":"d", "list": ["d"]}, | ||
| 1510 | + {"keyCode": 70, "letter":"f", "list": ["f"]}, | ||
| 1511 | + {"keyCode": 70, "letter":"g", "list": ["g"]}, | ||
| 1512 | + {"keyCode": 70, "letter":"h", "list": ["h"]}, | ||
| 1513 | + {"keyCode": 70, "letter":"j", "list": ["j"]}, | ||
| 1514 | + {"keyCode": 70, "letter":"k", "list": ["k"]}, | ||
| 1515 | + {"keyCode": 70, "letter":"l", "list": ["l"]}, | ||
| 1516 | + {"keyCode": 8, "letter":"\b", "list": ["«"]}, | ||
| 1517 | + | ||
| 1518 | + {"keyCode": 90, "letter":"O", "list": ["O"]}, | ||
| 1519 | + {"keyCode": 90, "letter":"z", "list": ["z"]}, | ||
| 1520 | + {"keyCode": 80, "letter":"x", "list": ["x"]}, | ||
| 1521 | + {"keyCode": 67, "letter":"c", "list": ["c"]}, | ||
| 1522 | + {"keyCode": 80, "letter":"v", "list": ["v"]}, | ||
| 1523 | + {"keyCode": 66, "letter":"b", "list": ["b"]}, | ||
| 1524 | + {"keyCode": 70, "letter":"n", "list": ["n"]}, | ||
| 1525 | + {"keyCode": 70, "letter":"m", "list": ["m"]}, | ||
| 1526 | + {"keyCode": 90, "letter":",", "list": [","]}, | ||
| 1527 | + {"keyCode": 90, "letter":"\n", "list": ["»"]}, | ||
| 1528 | + | ||
| 1529 | + {"keyCode": 90, "letter":"blank", "list": ["°"]}, | ||
| 1530 | + {"keyCode": 90, "letter":"shift", "list": ["¥"]}, | ||
| 1531 | + {"keyCode": 90, "letter":"@", "list": ["@"]}, | ||
| 1532 | + {"keyCode": 90, "letter":" ", "list": [" "]}, | ||
| 1533 | + {"keyCode": 90, "letter":" ", "list": [" "]}, | ||
| 1534 | + {"keyCode": 90, "letter":" ", "list": [" "]}, | ||
| 1535 | + {"keyCode": 90, "letter":" ", "list": [" "]}, | ||
| 1536 | + {"keyCode": 90, "letter":".", "list": ["."]}, | ||
| 1537 | + {"keyCode": 90, "letter":"sym", "list": ["¿"]}, | ||
| 1538 | + {"keyCode": 90, "letter":"blank", "list": ["°"]}, | ||
| 1539 | + | ||
| 1540 | + {"keyCode": 90, "letter":"0", "list": ["0"]}, | ||
| 1541 | + {"keyCode": 90, "letter":"1", "list": ["1"]}, | ||
| 1542 | + {"keyCode": 90, "letter":"2", "list": ["2"]}, | ||
| 1543 | + {"keyCode": 90, "letter":"3", "list": ["3"]}, | ||
| 1544 | + {"keyCode": 90, "letter":"4", "list": ["4"]}, | ||
| 1545 | + {"keyCode": 90, "letter":"5", "list": ["5"]}, | ||
| 1546 | + {"keyCode": 90, "letter":"6", "list": ["6"]}, | ||
| 1547 | + {"keyCode": 90, "letter":"7", "list": ["7"]}, | ||
| 1548 | + {"keyCode": 90, "letter":"8", "list": ["8"]}, | ||
| 1549 | + {"keyCode": 90, "letter":"9", "list": ["9"]}, | ||
| 1550 | + {"keyCode": 90, "letter":".", "list": ["."]}, | ||
| 1551 | + | ||
| 1552 | + {"keyCode": 65, "letter":"A", "list": ["A"], "modifier": 16}, | ||
| 1553 | + {"keyCode": 67, "letter":"c", "list": ["©","ç"]}, | ||
| 1554 | + {"keyCode": 67, "letter":"C", "list": ["Ç"], "modifier": 16}, | ||
| 1555 | + {"keyCode": 69, "letter":"e", "list": ["é","è","ë","ê","ē"]}, | ||
| 1556 | + {"keyCode": 69, "letter":"E", "list": ["É","È","Ë","Ê"], "modifier": 16}, | ||
| 1557 | + {"keyCode": 73, "letter":"i", "list": ["í","ì","ï","î"]}, | ||
| 1558 | + {"keyCode": 73, "letter":"I", "list": ["Í","Ì","Ï","Î"], "modifier": 16}, | ||
| 1559 | + {"keyCode": 78, "letter":"n", "list": ["ñ"]}, | ||
| 1560 | + {"keyCode": 78, "letter":"N", "list": ["Ñ"], "modifier": 16}, | ||
| 1561 | + {"keyCode": 79, "letter":"o", "list": ["ó","ò","ö","ô","œ","õ","ø"]}, | ||
| 1562 | + {"keyCode": 79, "letter":"O", "list": ["Ó","Ò","Ö","Ô","Œ","Õ","Ø"], "modifier": 16}, | ||
| 1563 | + {"keyCode": 83, "letter":"s", "list": ["ß"]}, | ||
| 1564 | + {"keyCode": 85, "letter":"u", "list": ["ú","ù","ü","û"]}, | ||
| 1565 | + {"keyCode": 85, "letter":"U", "list": ["Ú","Ù","ÜÛ"], "modifier": 16}, | ||
| 1566 | + {"keyCode": 88, "letter":"x", "list": ["×","¤"]}, | ||
| 1567 | + {"keyCode": 89, "letter":"y", "list": ["ÿ"]}, | ||
| 1568 | + {"keyCode": 89, "letter":"Y", "list": ["Ÿ"], "modifier": 16}, | ||
| 1569 | + {"keyCode": 82, "letter":"r", "list": ["®"]}, | ||
| 1570 | + {"keyCode": 80, "letter":"p", "list": ["¶"]}, | ||
| 1571 | + {"keyCode": 84, "letter":"t", "list": ["™"]}, | ||
| 1572 | + {"keyCode": 68, "letter":"D", "list": ["†","‡"], "modifier": 16}, | ||
| 1573 | + {"keyCode": 96, "letter":"0", "list": ["°"]}, | ||
| 1574 | + {"keyCode": 97, "letter":"1", "list": ["¹", "¼", "½"]}, | ||
| 1575 | + {"keyCode": 98, "letter":"2", "list": ["²"]}, | ||
| 1576 | + {"keyCode": 99, "letter":"3", "list": ["³", "¾"]}, | ||
| 1577 | + {"keyCode": 67, "letter":"!", "list": ["¡"]}, | ||
| 1578 | + {"keyCode": 67, "letter":"?", "list": ["¿"]}, | ||
| 1579 | + {"keyCode": 67, "letter":":", "list": [":-)", ":-(", ";-)"]}, | ||
| 1580 | + {"keyCode": 67, "letter":"$", "list": ["$","¢","€","£","¥"]} | ||
| 1581 | +] | ||
| 1582 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/global.css b/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/global.css | ||
| 1583 | index 39fa4ec..b98b50c 100644 | ||
| 1584 | --- a/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/global.css | ||
| 1585 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/global.css | ||
| 1586 | @@ -16,6 +16,7 @@ | ||
| 1587 | @import url(global-iconography.css); | ||
| 1588 | @import url(global-widget-addressing.css); | ||
| 1589 | @import url(global-widget-mvpicker.css); | ||
| 1590 | +@import url(webos-internals-virtual-keyboard.css); | ||
| 1591 | |||
| 1592 | a { | ||
| 1593 | color: #00c; | ||
| 1594 | @@ -665,4 +666,4 @@ span.selected-char { | ||
| 1595 | height: 111px; | ||
| 1596 | background: url(../images/disclaimer-beta.png) no-repeat; | ||
| 1597 | -webkit-palm-mouse-target: ignore; | ||
| 1598 | -} | ||
| 1599 | \ No newline at end of file | ||
| 1600 | +} | ||
| 1601 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/webos-internals-virtual-keyboard.css b/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/webos-internals-virtual-keyboard.css | ||
| 1602 | new file mode 100755 | ||
| 1603 | index 0000000..6062691 | ||
| 1604 | --- /dev/null | ||
| 1605 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/stylesheets/webos-internals-virtual-keyboard.css | ||
| 1606 | @@ -0,0 +1,97 @@ | ||
| 1607 | +/* Styles for On Screen Keyboard */ | ||
| 1608 | + | ||
| 1609 | +.kb-char-selector-container { | ||
| 1610 | + position: fixed; | ||
| 1611 | + z-index: 199500; /* same as popup */ | ||
| 1612 | + width: 320px; | ||
| 1613 | + height: 264px; | ||
| 1614 | + left: 0px; | ||
| 1615 | +} | ||
| 1616 | + | ||
| 1617 | +.kb-char-selector-wrapper { | ||
| 1618 | +} | ||
| 1619 | + | ||
| 1620 | +.kb-char-selector-scroller { | ||
| 1621 | + position: absolute; | ||
| 1622 | + top: 0px; | ||
| 1623 | + padding: 0px; | ||
| 1624 | + max-height: 264px; | ||
| 1625 | + overflow: hidden; | ||
| 1626 | +} | ||
| 1627 | + | ||
| 1628 | +.kb-char-selector-content { | ||
| 1629 | + margin-top:72px; | ||
| 1630 | +} | ||
| 1631 | + | ||
| 1632 | +.kb-char-selector-column { | ||
| 1633 | + width: 320px; | ||
| 1634 | + height: 48px; | ||
| 1635 | +} | ||
| 1636 | + | ||
| 1637 | +.kb-char-selector-element{ | ||
| 1638 | + color: black; | ||
| 1639 | + width:10%; | ||
| 1640 | + height:48px; | ||
| 1641 | + line-height:48px; | ||
| 1642 | + display:inline-block; | ||
| 1643 | + float:left; | ||
| 1644 | + font-weight: normal; | ||
| 1645 | + text-align: center; | ||
| 1646 | + vertical-align: middle; | ||
| 1647 | + margin-right: -1px; | ||
| 1648 | + border-bottom: 1px solid #999; | ||
| 1649 | + border-right: 1px solid #999; | ||
| 1650 | +} | ||
| 1651 | + | ||
| 1652 | +.kb-char-selector-element .kb-img{ | ||
| 1653 | + position: relative; | ||
| 1654 | + width: 100%; | ||
| 1655 | + height: 100%; | ||
| 1656 | +} | ||
| 1657 | + | ||
| 1658 | +.kb-char-selector-element .kb-span{ | ||
| 1659 | + position: relative; | ||
| 1660 | +} | ||
| 1661 | + | ||
| 1662 | +.kb-char-selector-element.kb-selected-char .kb-span{ | ||
| 1663 | + left: -25%; | ||
| 1664 | + top: -150%; | ||
| 1665 | + color: red; | ||
| 1666 | +} | ||
| 1667 | + | ||
| 1668 | +.kb-char-selector-element.kb-selected-char .kb-img{ | ||
| 1669 | + width: 150%; | ||
| 1670 | + height: 150%; | ||
| 1671 | +} | ||
| 1672 | + | ||
| 1673 | +/* | ||
| 1674 | +.kb-char-selector-element.kb-active-char{ | ||
| 1675 | + background:#0072ff; | ||
| 1676 | +} | ||
| 1677 | + | ||
| 1678 | +.kb-char-selector-element.kb-active-char.locked{ | ||
| 1679 | + background:#984c08; | ||
| 1680 | +} | ||
| 1681 | + */ | ||
| 1682 | + | ||
| 1683 | +.kb-char-selector-element.kb-active-char .kb-img{ | ||
| 1684 | + position: relative; | ||
| 1685 | + width: 70%; | ||
| 1686 | + height: 70%; | ||
| 1687 | + top:15%; | ||
| 1688 | +} | ||
| 1689 | + | ||
| 1690 | +.kb-char-selector-element.kb-active-char.locked .kb-img{ | ||
| 1691 | + width: 50%; | ||
| 1692 | + height: 50%; | ||
| 1693 | + top:15%; | ||
| 1694 | +} | ||
| 1695 | + | ||
| 1696 | +/* Landscape rows */ | ||
| 1697 | +.kb-char-selector-container.landscape { | ||
| 1698 | + width: 480px; | ||
| 1699 | +} | ||
| 1700 | + | ||
| 1701 | +.kb-char-selector-column.landscape { | ||
| 1702 | + width: 480px; | ||
| 1703 | +} | ||
| 1704 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-ls.html b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-ls.html | ||
| 1705 | new file mode 100644 | ||
| 1706 | index 0000000..3d78ff7 | ||
| 1707 | --- /dev/null | ||
| 1708 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-ls.html | ||
| 1709 | @@ -0,0 +1,3 @@ | ||
| 1710 | +<div id="#{divPrefix}-#{index}" name="#{index}" class="kb-char-selector-element landscape" x-mojo-tap-highlight="momentary"> | ||
| 1711 | + <span name="#{index}" class="kb-span">#{-character}</span> | ||
| 1712 | +</div> | ||
| 1713 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-selector-row-ls.html b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-selector-row-ls.html | ||
| 1714 | new file mode 100644 | ||
| 1715 | index 0000000..a5a8217 | ||
| 1716 | --- /dev/null | ||
| 1717 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-selector-row-ls.html | ||
| 1718 | @@ -0,0 +1 @@ | ||
| 1719 | +<div class="kb-char-selector-column landscape">#{-characters}</div> | ||
| 1720 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-selector-row.html b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-selector-row.html | ||
| 1721 | new file mode 100644 | ||
| 1722 | index 0000000..847f837 | ||
| 1723 | --- /dev/null | ||
| 1724 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char-selector-row.html | ||
| 1725 | @@ -0,0 +1 @@ | ||
| 1726 | +<div class="kb-char-selector-column">#{-characters}</div> | ||
| 1727 | \ No newline at end of file | ||
| 1728 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char.html b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char.html | ||
| 1729 | new file mode 100644 | ||
| 1730 | index 0000000..6cfac50 | ||
| 1731 | --- /dev/null | ||
| 1732 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/char.html | ||
| 1733 | @@ -0,0 +1,3 @@ | ||
| 1734 | +<div id="#{divPrefix}-#{index}" name="#{index}" class="kb-char-selector-element" x-mojo-tap-highlight="momentary"> | ||
| 1735 | + <span name="#{index}" class="kb-span">#{-character}</span> | ||
| 1736 | +</div> | ||
| 1737 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/charselector-ls.html b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/charselector-ls.html | ||
| 1738 | new file mode 100644 | ||
| 1739 | index 0000000..84349fa | ||
| 1740 | --- /dev/null | ||
| 1741 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/charselector-ls.html | ||
| 1742 | @@ -0,0 +1,7 @@ | ||
| 1743 | +<div class="kb-char-selector-container landscape" id="#{divPrefix}-kb-char-selector-div"> | ||
| 1744 | + <div class="kb-char-selector-wrapper"> | ||
| 1745 | + <div class="kb-char-selector-scroller landscape" x-mojo-element="Scroller" id="#{divPrefix}-char-selector"> | ||
| 1746 | + <div class="kb-char-selector-content landscape" id="char-list" x-mojo-element="List"> | ||
| 1747 | + </div> | ||
| 1748 | + </div> | ||
| 1749 | +</div> | ||
| 1750 | diff --git a/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/charselector.html b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/charselector.html | ||
| 1751 | new file mode 100644 | ||
| 1752 | index 0000000..0675d8d | ||
| 1753 | --- /dev/null | ||
| 1754 | +++ b/usr/palm/frameworks/mojo/submissions/191.15/templates/kbselector/charselector.html | ||
| 1755 | @@ -0,0 +1,7 @@ | ||
| 1756 | +<div class="kb-char-selector-container" id="#{divPrefix}-kb-char-selector-div"> | ||
| 1757 | + <div class="kb-char-selector-wrapper"> | ||
| 1758 | + <div class="kb-char-selector-scroller" x-mojo-element="Scroller" id="#{divPrefix}-char-selector"> | ||
| 1759 | + <div class="kb-char-selector-content" id="char-list" x-mojo-element="List"> | ||
| 1760 | + </div> | ||
| 1761 | + </div> | ||
| 1762 | +</div> |
frameworks/install_kb
(0 / 44)
|   | |||
| 1 | #!/bin/sh | ||
| 2 | PATCH_PRE=add-onscreen-keyboard.patch | ||
| 3 | PATCH_EMU=add-onscreen-keyboard-emu.patch | ||
| 4 | PATCH=${PATCH_PRE} | ||
| 5 | ARCH=`/bin/uname -m` | ||
| 6 | |||
| 7 | if [ "$ARCH" = "i686" ] | ||
| 8 | then | ||
| 9 | cd /opt/src/modifications/frameworks | ||
| 10 | rm -f ${PATCH_EMU} | ||
| 11 | git pull | ||
| 12 | sed s/191_15/191_14/g ${PATCH_PRE} > tmp | ||
| 13 | sed s/191.15/191.14/g tmp > ${PATCH_EMU} | ||
| 14 | rm -f tmp | ||
| 15 | PATCH=${PATCH_EMU} | ||
| 16 | fi | ||
| 17 | |||
| 18 | sh /opt/src/modifications/install ${PATCH} | ||
| 19 | if [ $? -ne 0 ] | ||
| 20 | then | ||
| 21 | echo "ERROR: Could not install patch!" | ||
| 22 | echo "Please visit http://www.webos-internals.org/wiki/Applying_Patches" | ||
| 23 | exit 1 | ||
| 24 | fi | ||
| 25 | |||
| 26 | if [ "$ARCH" = "armv7l" ] | ||
| 27 | then | ||
| 28 | echo "Remounting / rw..." | ||
| 29 | mount -o rw,remount / | ||
| 30 | if [ $? -ne 0 ] | ||
| 31 | then | ||
| 32 | echo "ERROR: Could not remount / in rw" | ||
| 33 | echo "Please visit http://www.webos-internals.org/wiki/Applying_Patches" | ||
| 34 | exit 1 | ||
| 35 | fi | ||
| 36 | fi | ||
| 37 | |||
| 38 | cp /opt/src/modifications/frameworks/virtual-keyboard-themes.tar.gz / && cd / && tar -xvzf virtual-keyboard-themes.tar.gz && cd - && echo "SUCCESS" | ||
| 39 | |||
| 40 | if [ "$ARCH" = "armv7l" ] | ||
| 41 | then | ||
| 42 | echo "Remounting / to read-only" | ||
| 43 | mount -o ro,remount / | ||
| 44 | fi |
Binary files differ

