loleaflet/src/map/handler/Map.Keyboard.js |  310 ++++++------------------------
 1 file changed, 66 insertions(+), 244 deletions(-)

New commits:
commit fd610ff6a66db269f47413546bfb7aa712b0e2cf
Author: László Németh <laszlo.nem...@collabora.com>
Date:   Thu Nov 5 16:48:41 2015 +0100

    loleaflet: handle Ctrl/Alt keys in the core

diff --git a/loleaflet/src/map/handler/Map.Keyboard.js 
b/loleaflet/src/map/handler/Map.Keyboard.js
index 3532795..9ac81de 100644
--- a/loleaflet/src/map/handler/Map.Keyboard.js
+++ b/loleaflet/src/map/handler/Map.Keyboard.js
@@ -38,6 +38,42 @@ L.Map.Keyboard = L.Handler.extend({
                40  : 1024, // down arrow       : DOWN
                45  : 1285, // insert           : INSERT
                46  : 1286, // delete           : DELETE
+               48  : 256,  // 0                : NUM0
+               49  : 257,  // 1                : NUM1
+               50  : 258,  // 2                : NUM2
+               51  : 259,  // 3                : NUM3
+               52  : 260,  // 4                : NUM4
+               53  : 261,  // 5                : NUM5
+               54  : 262,  // 6                : NUM6
+               55  : 263,  // 7                : NUM7
+               56  : 264,  // 8                : NUM8
+               57  : 265,  // 9                : NUM9
+               65  : 512,  // A                : A
+               66  : 513,  // B                : B
+               67  : 514,  // C                : C
+               68  : 515,  // D                : D
+               69  : 516,  // E                : E
+               70  : 517,  // F                : F
+               71  : 518,  // G                : G
+               72  : 519,  // H                : H
+               73  : 520,  // I                : I
+               74  : 521,  // J                : J
+               75  : 522,  // K                : K
+               76  : 523,  // L                : L
+               77  : 524,  // M                : M
+               78  : 525,  // N                : N
+               79  : 526,  // O                : O
+               80  : 527,  // P                : P
+               81  : 528,  // Q                : Q
+               82  : 529,  // R                : R
+               83  : 530,  // S                : S
+               84  : 531,  // T                : T
+               85  : 532,  // U                : U
+               86  : 533,  // V                : V
+               87  : 534,  // W                : W
+               88  : 535,  // X                : X
+               89  : 536,  // Y                : Y
+               90  : 537,  // Z                : Z
                91  : null, // left window key  : UNKOWN
                92  : null, // right window key : UNKOWN
                93  : null, // select key       : UNKOWN
@@ -69,11 +105,11 @@ L.Map.Keyboard = L.Handler.extend({
                122 : 778,  // f11              : F11
                144 : 1313, // num lock         : NUMLOCK
                145 : 1314, // scroll lock      : SCROLLLOCK
-               173 : 5,    // dash             : DASH (on Firefox)
+               173 : 1288, // dash             : DASH (on Firefox)
                186 : 1317, // semi-colon       : SEMICOLON
                187 : 1295, // equal sign       : EQUAL
                188 : 1292, // comma            : COMMA
-               189 : 5,    // dash             : DASH
+               189 : 1288, // dash             : DASH
                190 : null, // period           : UNKOWN
                191 : null, // forward slash    : UNKOWN
                192 : null, // grave accent     : UNKOWN
@@ -191,9 +227,10 @@ L.Map.Keyboard = L.Handler.extend({
                var ctrl = e.originalEvent.ctrlKey ? this.keyModifier.ctrl : 0;
                var alt = e.originalEvent.altKey ? this.keyModifier.alt : 0;
                this.modifier = shift | ctrl | alt;
+
                if (ctrl) {
-                       this._handleCtrlCommand(e);
-                       return;
+                       if (this._handleCtrlCommand(e))
+                               return;
                }
 
                // page up or page down, handled by this.dopagejump
@@ -215,15 +252,12 @@ L.Map.Keyboard = L.Handler.extend({
                var keyCode = e.originalEvent.keyCode;
                var unoKeyCode = this._toUNOKeyCode(keyCode);
 
-               if (shift) {
-                       unoKeyCode |= this.keyModifier.shift;
-
-                       switch (e.originalEvent.keyCode) {
-                               case 32: // space
-                                       if (this._map.getDocType() === 
'spreadsheet') {
-                                               L.Socket.sendMessage('uno 
.uno:SelectRow');
-                                               return;
-                                       }
+               if (this.modifier) {
+                       unoKeyCode |= this.modifier;
+                       if (e.type !== 'keyup' && (this.modifier !== shift || 
keyCode === 32)) {
+                               docLayer._postKeyboardEvent('input', charCode, 
unoKeyCode);
+                               e.originalEvent.preventDefault();
+                               return;
                        }
                }
 
@@ -271,17 +305,17 @@ L.Map.Keyboard = L.Handler.extend({
                L.DomEvent.stopPropagation(e.originalEvent);
        },
 
-
-    _getUno: function (calc, writer) {
-               return this._map.getDocType() === 'spreadsheet' ? calc : writer;
-       },
-
        _handleCtrlCommand: function (e) {
                if (e.type !== 'keydown' && e.originalEvent.key !== 'c' && 
e.originalEvent.key !== 'v') {
                        e.originalEvent.preventDefault();
-                       return;
+                       return true;
                };
 
+               if (e.originalEvent.keyCode !== 67 && e.originalEvent.keyCode 
!== 86 && e.originalEvent.key !== 'c' && e.originalEvent.key !== 'v') {
+                       // not copy or paste
+                       e.originalEvent.preventDefault();
+               }
+
                if (e.originalEvent.altKey || e.originalEvent.shiftKey) {
 
                        // Ctrl + Alt
@@ -289,256 +323,44 @@ L.Map.Keyboard = L.Handler.extend({
                                switch (e.originalEvent.keyCode) {
                                        case 53: // 5
                                                L.Socket.sendMessage('uno 
.uno:Strikeout');
-                                               break;
+                                               return true;
                                        case 70: // f
                                                L.Socket.sendMessage('uno 
.uno:InsertFootnote');
-                                               break;
+                                               return true;
                                        case 67: // c
                                        case 77: // m
                                                L.Socket.sendMessage('uno 
.uno:InsertAnnotation');
-                                               break;
+                                               return true;
                                        case 68: // d
                                                L.Socket.sendMessage('uno 
.uno:InsertEndnote');
-                                               break;
-                               }
-                       }
-
-                       // Ctrl + Shift
-                       if (!e.originalEvent.altKey) {
-                               switch (e.originalEvent.keyCode) {
-                                       case 8: // backspace
-                                               L.Socket.sendMessage('uno 
.uno:DelToStartOfSentence');
-                                       break;
-                                       case 13: // return
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       '',
-                                                       'uno 
.uno:InsertColumnBreak'
-                                               ));
-                                       case 32: // space
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno .uno:SelectColumn',
-                                                       'uno 
.uno:InsertNonBreakingSpace'
-                                               ));
-                                               break;
-                                       case 35: // end
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno .uno:GoToEndOfData 
{"Sel":{"type":"string", "value": "1"}}',
-                                                       'uno 
.uno:EndOfDocumentSel'
-                                               ));
-                                               break;
-                                       case 36: // home
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno .uno:GoToStart 
{"Sel":{"type":"string", "value":"1"}}',
-                                                       'uno 
.uno:StartOfDocumentSel'
-                                               ));
-                                               break;
-                                       case 37: // left arrow
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno 
.uno:GoLeftToStartOfDataSel',
-                                                       'uno .uno:WordLeftSel'
-                                               ));
-                                               break;
-                                       case 38: // up arrow
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno 
.uno:GoUpToStartOfDataSel',
-                                                       'uno 
.uno:StartOfParaSel'
-                                               ));
-                                               break;
-                                       case 39: // right arrow
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno 
.uno:GoRightToEndOfDataSel',
-                                                       'uno .uno:WordRightSel'
-                                               ));
-                                               break;
-                                       case 40: // down arrow
-                                               L.Socket.sendMessage( 
this._getUno(
-                                                       'uno 
.uno:GoDownToEndOfDataSel',
-                                                       'uno .uno:EndOfParaSel'
-                                               ));
-                                               break;
-                                       case 46: // delete
-                                               L.Socket.sendMessage('uno 
.uno:DelToEndOfSentence');
-                                               break;
-                                       case 49: // 1
-                                               L.Socket.sendMessage('uno 
.uno:NumberFormatValue {"NumberFormatValue":{"type":"unsigned short", 
"value":"2"}}');
-                                               break;
-                                       case 50: // 2
-                                               L.Socket.sendMessage('uno 
.uno:NumberFormatTime');
-                                               break;
-                                       case 51: // 3
-                                               L.Socket.sendMessage('uno 
.uno:NumberFormatDate');
-                                               break;
-                                       case 52: // 4
-                                               L.Socket.sendMessage('uno 
.uno:NumberFormatCurrency');
-                                               break;
-                                       case 53: // 5
-                                               L.Socket.sendMessage('uno 
.uno:NumberFormatPercent');
-                                               break;
-                                       case 54: // 6
-                                               L.Socket.sendMessage('uno 
.uno:NumberFormatScientific');
-                                               break;
-                                       case 66: // b
-                                               L.Socket.sendMessage('uno 
.uno:SubScript');
-                                               break;
-                                       case 80: // p
-                                               L.Socket.sendMessage('uno 
.uno:SuperScript');
-                                               break;
-                                       case 173: // -
-                                       case 189: // -
-                                               L.Socket.sendMessage('uno 
.uno:InsertHardHyphen');
-                                               break;
+                                               return true;
                                }
                        }
 
-                       e.originalEvent.preventDefault();
-                       return;
+                       return false;
                }
 
                switch (e.originalEvent.keyCode) {
-                       case 8: // backspace
-                               L.Socket.sendMessage('uno 
.uno:DelToStartOfWord');
-                               break;
-                       case 13: // enter
-                               L.Socket.sendMessage('uno 
.uno:InsertPagebreak');
-                               break;
-                       case 32: // space
-                       case 77: // m
-                               L.Socket.sendMessage('uno 
.uno:ResetAttributes');
-                               break;
-                       case 35: // end
-                               L.Socket.sendMessage( this._getUno(
-                                               'uno .uno:GoToEndOfData',
-                                               'uno .uno:GoToEndOfDoc'
-                               ));
-                               break;
-                       case 36: // home
-                               L.Socket.sendMessage( this._getUno(
-                                               'uno .uno:GoToStart',
-                                               'uno .uno:GoToStartOfDoc'
-                               ));
-                               break;
-                       case 37: // left arrow
-                               L.Socket.sendMessage( this._getUno(
-                                               'uno .uno:GoLeftToStartOfData',
-                                               'uno .uno:GoToPrevWord'
-                               ));
-                               break;
-                       case 38: // up arrow
-                               L.Socket.sendMessage( this._getUno(
-                                               'uno .uno:GoUpToStartOfData',
-                                               'uno .uno:GoToPrevPara'
-                               ));
-                               break;
-                       case 39: // right arrow
-                               L.Socket.sendMessage( this._getUno(
-                                               'uno .uno:GoRightToEndOfData',
-                                               'uno .uno:GoToNextWord'
-                               ));
-                               break;
-                       case 40: // down arrow
-                               L.Socket.sendMessage( this._getUno(
-                                               'uno .uno:GoDownToEndOfData',
-                                               'uno .uno:GoToNextPara'
-                               ));
-                               break;
-                       case 46: // delete
-                               L.Socket.sendMessage('uno .uno:DelToEndOfWord');
-                               break;
-                       case 48: // 0
-                               this._map.applyStyle('Text body', 
'ParagraphStyles');
-                               break;
-                       case 49: // 1
-                               this._map.applyStyle('Heading 1', 
'ParagraphStyles');
-                               break;
-                       case 50: // 2
-                               this._map.applyStyle('Heading 2', 
'ParagraphStyles');
-                               break;
-                       case 51: // 3
-                               this._map.applyStyle('Heading 3', 
'ParagraphStyles');
-                               break;
-                       case 52: // 4
-                               this._map.applyStyle('Heading 4', 
'ParagraphStyles');
-                               break;
-                       case 53: // 5
-                               if (this._map.getDocType() === 'spreadsheet') {
-                                       L.Socket.sendMessage('uno 
.uno:Strikeout');
-                               }
-                               else {
-                                       this._map.applyStyle('Heading 5', 
'ParagraphStyles');
-                               }
-                               break;
-                       case 65: // a
-                               L.Socket.sendMessage('uno .uno:SelectAll');
-                               break;
-                       case 66: // b
-                               L.Socket.sendMessage('uno .uno:Bold');
-                               break;
                        case 67: // c
                                // we prepare for a copy event
                                this._map._docLayer._textArea.value = 'dummy 
text';
                                this._map._docLayer._textArea.focus();
                                this._map._docLayer._textArea.select();
-                               break;
-                       case 68: // d
-                               L.Socket.sendMessage( this._getUno(
-                                       'uno .uno:FillDown',
-                                       'uno .uno:UnderlineDouble'
-                               ));
-                               break;
-                       case 69: // e
-                               L.Socket.sendMessage( this._getUno(
-                                       'uno .uno:HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"2"}}',
-                                       'uno .uno:CenterPara'
-                               ));
-                               break;
-                       case 73: // i
-                               L.Socket.sendMessage('uno .uno:Italic');
-                               break;
-                       case 74: // j
-                               L.Socket.sendMessage( this._getUno(
-                                       'uno .uno:HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"4"}}',
-                                       'uno .uno:JustifyPara'
-                               ));
-                               break;
-                       case 76: // l
-                               L.Socket.sendMessage( this._getUno(
-                                       'uno .uno:HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"1"}}',
-                                       'uno .uno:LeftPara'
-                               ));
-                               break;
+                               return true;
                        case 80: // p
                                this._map.print();
-                               break;
-                       case 82: // r
-                               L.Socket.sendMessage( this._getUno(
-                                       'uno .uno:HorizontalAlignment 
{"HorizontalAlignment":{"type":"unsigned short", "value":"3"}}',
-                                       'uno .uno:RightPara'
-                               ));
-                               break;
-                       case 85: // u
-                               L.Socket.sendMessage('uno .uno:Underline');
-                               break;
-                       case 89: // y
-                               L.Socket.sendMessage('uno .uno:Redo');
-                               break;
-                       case 90: // z
-                               L.Socket.sendMessage('uno .uno:Undo');
-                               break;
+                               return true;
+                       case 86: // v
+                               return true;
                        case 188: // ,
                                L.Socket.sendMessage('uno .uno:SubScript');
-                               break;
-                       case 173: // -
-                       case 189: // -
-                               L.Socket.sendMessage('uno 
.uno:InsertSoftHyphen');
-                               break;
+                               return true;
                        case 190: // .
                                L.Socket.sendMessage('uno .uno:SuperScript');
-                               break;
-               }
-               if (e.originalEvent.keyCode !== 67 && e.originalEvent.keyCode 
!== 86 && e.originalEvent.key !== 'c' && e.originalEvent.key !== 'v') {
-                       // not copy or paste
-                       e.originalEvent.preventDefault();
+                               return true;
                }
+
+               return false;
        }
 });
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to