fix(web): Fix layers for embedded longpress keys

This commit is contained in:
Darcy Wong 2021-08-27 14:44:33 +07:00
parent 6c17ecbd5f
commit e3073a4405
2 changed files with 21 additions and 6 deletions

View file

@ -238,7 +238,8 @@
var keyPos = x.toString() + ',' + y.toString();
for(i=0; i<obj.length; i++)
{
s=s+obj[i].layer+'-'+obj[i].coreID;
// elementID contains the layer and coreID
s=s+obj[i].elementID;
if(obj[i].sp == 1 || obj[i].sp == 2) shift = true;
if(typeof(obj[i].text) != 'undefined' && obj[i].text != null && obj[i].text != '') s=s+':'+toHex(obj[i].text);
if(i < (obj.length -1)) s=s+';'

View file

@ -374,18 +374,25 @@ namespace com.keyman.text {
/* Clear any pending (non-popup) key */
osk.vkbd.keyPending = null;
// Changes for Build 353 to resolve KMEI popup key issues
// Changes for Build 353 to resolve KMEI popup key issues
keyName=keyName.replace('popup-',''); //remove popup prefix if present (unlikely)
// Can't just split on '-' because some layers like ctrl-shift contain it.
let separatorIndex = keyName.lastIndexOf('-');
var layer = core.keyboardProcessor.layerId;
var displayLayer = core.keyboardProcessor.layerId;
if (separatorIndex > 0) {
layer = keyName.substring(0, separatorIndex);
displayLayer = keyName.substring(0, separatorIndex);
keyName = keyName.substring(separatorIndex+1);
}
if(layer == 'undefined') {
layer=core.keyboardProcessor.layerId;
if(displayLayer == 'undefined') {
displayLayer=core.keyboardProcessor.layerId;
}
// Determine the "functional" layer
let layer = 'default';
separatorIndex = keyName.lastIndexOf('+');
if (separatorIndex > 0) {
layer = keyName.substring(separatorIndex+1);
}
// Note: this assumes Lelem is properly attached and has an element interface.
@ -425,6 +432,11 @@ namespace com.keyman.text {
console.warn("No base key exists for the subkey being executed: '" + origArg + "'");
}
// Now that we've checked if key is found, split "functional layer" from keyName
if (separatorIndex > 0) {
keyName = keyName.substring(0, separatorIndex);
}
let Codes = com.keyman.text.Codes;
// Check the virtual key
@ -435,6 +447,8 @@ namespace com.keyman.text {
Lcode: Codes.keyCodes[keyName],
LisVirtualKey: true,
kName: keyName,
kLayer: layer,
kbdLayer: displayLayer,
kNextLayer: nextLayer,
vkCode: null, // was originally undefined
isSynthetic: true,