diff --git a/web/org.openbravo.mobile.core/source/component/ob-keyboard.js b/web/org.openbravo.mobile.core/source/component/ob-keyboard.js
index 7920fe3d..da06f290 100644
--- a/web/org.openbravo.mobile.core/source/component/ob-keyboard.js
+++ b/web/org.openbravo.mobile.core/source/component/ob-keyboard.js
@@ -653,144 +653,159 @@ enyo.kind({
     }
 
     if (
-      which === 27 &&
-      key === 'Escape' &&
-      OB.MobileApp.view.openedPopup !== null
+      document.getElementById('_focusKeeper') &&
+      document.getElementById('_focusKeeper').value &&
+      document.getElementById('_focusKeeper').value === '{' &&
+      !this.skipHandler
     ) {
-      OB.MobileApp.view.waterfall('onkeydown', inEvent.keyboardEvent);
-      return true;
+      this.skipHandler = true;
+    } else if (which === 13) {
+      this.skipHandler = false;
     }
 
-    if (OB.MobileApp.model.get('useBarcode') && OB.MobileApp.view.scanMode) {
-      //Issue 25013. This flag is checked by keypressHandler function in ob-terminal-component.js
-      OB.MobileApp.keyPressProcessed = true;
-
-      if (which === 16) {
-        // Shift key, set next character to uppercase
-        this.isUpperCase = true;
+    if (!this.skipHandler) {
+      if (
+        which === 27 &&
+        key === 'Escape' &&
+        OB.MobileApp.view.openedPopup !== null
+      ) {
+        OB.MobileApp.view.waterfall('onkeydown', inEvent.keyboardEvent);
         return true;
       }
 
-      if (which >= 96 && which <= 105) {
-        which -= 48;
-      }
+      if (OB.MobileApp.model.get('useBarcode') && OB.MobileApp.view.scanMode) {
+        //Issue 25013. This flag is checked by keypressHandler function in ob-terminal-component.js
+        OB.MobileApp.keyPressProcessed = true;
 
-      if (key) {
-        if (OB.UTIL.isIOS()) {
-          actualChar = key;
-        } else {
-          actualChar =
-            key.match(this.keyMatcher) ||
-            key === 'Delete' ||
-            key === 'Backspace'
-              ? key // key pressed is an standard ASCII character
-              : String.fromCharCode(which); // key pressed must be calculated from keycode
+        if (which === 16) {
+          // Shift key, set next character to uppercase
+          this.isUpperCase = true;
+          return true;
         }
-      } else {
-        OB.error('globalKeypressHandler without key. Event ignored');
-        return true;
-      }
 
-      keyAction = this.getKeyActionFromCode(which);
-      if (
-        keyAction &&
-        actualChar !== '*' &&
-        actualChar !== OB.Format.defaultDecimalSymbol
-      ) {
-        if (keyAction.char) {
-          actualChar = keyAction.char;
+        if (which >= 96 && which <= 105) {
+          which -= 48;
         }
-        if (keyAction.action) {
-          keyAction.action(this);
-        }
-      }
-
-      if (
-        inEvent.keyboardEvent.code === 'F11' ||
-        inEvent.keyboardEvent.code === 'F10' ||
-        inEvent.keyboardEvent.code === 'F9' ||
-        inEvent.keyboardEvent.code === 'F8' ||
-        inEvent.keyboardEvent.code === 'F7' ||
-        inEvent.keyboardEvent.code === 'F23' ||
-        inEvent.keyboardEvent.code === 'Delete'
-      ) {
-        actualChar = '';
-      }
-      if (OB.UTIL.isIOS() && inEvent.keyboardEvent.key === 'Backspace') {
-        //Handle special case of backspace key in iOS
-        this.writeCharacter('del');
-      }
-
-      if (this.isUpperCase) {
-        this.isUpperCase = false;
-        actualChar = actualChar.toUpperCase();
-      }
 
-      if (actualChar && actualChar.match(this.keyMatcher)) {
-        this.writeCharacter(actualChar);
-      } else if (which === 13) {
-        //Handle ENTER key
-        actualStatus = this.getStatus();
-        keeper = document.getElementById('_focusKeeper');
-        if (keeper) {
-          if (keeper.value && keeper.value.length > 0) {
-            this.$.editbox.setContent(keeper.value);
-            keeper.value = '';
+        if (key) {
+          if (OB.UTIL.isIOS()) {
+            actualChar = key;
           } else {
-            keeper.value = '';
-            this.$.editbox.setContent(this.$.editbox.getContent());
-          }
-        }
-        if (this.$.editbox.getContent() === '0') {
-          this.doCommandFired({
-            key: 'OK'
-          });
-        } else if (actualStatus) {
-          this.execCommand(actualStatus, this.getString());
-          if (
-            this.commands[this.status] &&
-            !this.commands[this.status].holdActive
-          ) {
-            this.setStatus('');
+            actualChar =
+              key.match(this.keyMatcher) ||
+              key === 'Delete' ||
+              key === 'Backspace'
+                ? key // key pressed is an standard ASCII character
+                : String.fromCharCode(which); // key pressed must be calculated from keycode
           }
         } else {
-          OB.UTIL.showWarning(OB.I18N.getLabel('OBMOBC_KeypadTargetMissing'));
+          OB.error('globalKeypressHandler without key. Event ignored');
+          return true;
         }
-      } else if (
-        OB.Format.defaultDecimalSymbol === '.' &&
-        actualChar !== '+' &&
-        actualChar !== '-'
-      ) {
-        //Handle any keypress except any kind of dot (.) '+' or '-'
-        if (which === 229) {
-          if (this.$.editbox.getContent() !== null) {
-            //It seems we are already scanning something, we should ignore this event as it's likely repeated
-            return true;
+
+        keyAction = this.getKeyActionFromCode(which);
+        if (
+          keyAction &&
+          actualChar !== '*' &&
+          actualChar !== OB.Format.defaultDecimalSymbol
+        ) {
+          if (keyAction.char) {
+            actualChar = keyAction.char;
           }
-          var scan = document.getElementById('_focusKeeper').value;
-          for (i = 0; i < scan.length; i++) {
-            this.writeCharacter(scan.charAt(i));
+          if (keyAction.action) {
+            keyAction.action(this);
           }
-        } else {
+        }
+
+        if (
+          inEvent.keyboardEvent.code === 'F11' ||
+          inEvent.keyboardEvent.code === 'F10' ||
+          inEvent.keyboardEvent.code === 'F9' ||
+          inEvent.keyboardEvent.code === 'F8' ||
+          inEvent.keyboardEvent.code === 'F7' ||
+          inEvent.keyboardEvent.code === 'F23' ||
+          inEvent.keyboardEvent.code === 'Delete'
+        ) {
+          actualChar = '';
+        }
+        if (OB.UTIL.isIOS() && inEvent.keyboardEvent.key === 'Backspace') {
+          //Handle special case of backspace key in iOS
+          this.writeCharacter('del');
+        }
+
+        if (this.isUpperCase) {
+          this.isUpperCase = false;
+          actualChar = actualChar.toUpperCase();
+        }
+
+        if (actualChar && actualChar.match(this.keyMatcher)) {
           this.writeCharacter(actualChar);
+        } else if (which === 13) {
+          //Handle ENTER key
+          actualStatus = this.getStatus();
+          keeper = document.getElementById('_focusKeeper');
+          if (keeper) {
+            if (keeper.value && keeper.value.length > 0) {
+              this.$.editbox.setContent(keeper.value);
+              keeper.value = '';
+            } else {
+              keeper.value = '';
+              this.$.editbox.setContent(this.$.editbox.getContent());
+            }
+          }
+          if (this.$.editbox.getContent() === '0') {
+            this.doCommandFired({
+              key: 'OK'
+            });
+          } else if (actualStatus) {
+            this.execCommand(actualStatus, this.getString());
+            if (
+              this.commands[this.status] &&
+              !this.commands[this.status].holdActive
+            ) {
+              this.setStatus('');
+            }
+          } else {
+            OB.UTIL.showWarning(OB.I18N.getLabel('OBMOBC_KeypadTargetMissing'));
+          }
+        } else if (
+          OB.Format.defaultDecimalSymbol === '.' &&
+          actualChar !== '+' &&
+          actualChar !== '-'
+        ) {
+          //Handle any keypress except any kind of dot (.) '+' or '-'
+          if (which === 229) {
+            if (this.$.editbox.getContent() !== null) {
+              //It seems we are already scanning something, we should ignore this event as it's likely repeated
+              return true;
+            }
+            var scan = document.getElementById('_focusKeeper').value;
+            for (i = 0; i < scan.length; i++) {
+              this.writeCharacter(scan.charAt(i));
+            }
+          } else {
+            this.writeCharacter(actualChar);
+          }
+        }
+        return true;
+      } else {
+        OB.MobileApp.keyPressProcessed = true;
+        //scanMode is disable, raise an error sound only if the preference allows it.
+        if (
+          OB.MobileApp.model.hasPermission(
+            'OBMOBC_ReproduceErrorSoundOnFailedScan',
+            true
+          ) &&
+          OB.MobileApp.model.get('reproduceErrorSound')
+        ) {
+          var error_sound = new Audio(
+            '../org.openbravo.mobile.core/sounds/Computer_Error.mp3'
+          );
+          error_sound.play();
         }
+        return true;
       }
-      return true;
     } else {
-      OB.MobileApp.keyPressProcessed = true;
-      //scanMode is disable, raise an error sound only if the preference allows it.
-      if (
-        OB.MobileApp.model.hasPermission(
-          'OBMOBC_ReproduceErrorSoundOnFailedScan',
-          true
-        ) &&
-        OB.MobileApp.model.get('reproduceErrorSound')
-      ) {
-        var error_sound = new Audio(
-          '../org.openbravo.mobile.core/sounds/Computer_Error.mp3'
-        );
-        error_sound.play();
-      }
       return true;
     }
   },
