Hi team,
Thank you for the development of X2go, I'm using Kdrive on the Windows client on a daily basis and very happy with it!
I am also using the HTML client but faced limitations with the keyboard that I could fix.
I made the changes directly on the compiled JS but it all happens in [x2gohtmlclient.git] / src / x2gokdrivehtmlclient.js
CapsLock and AltGr modifier keys were not effective. Fix:
@@ -1419,10 +1691,17 @@ X2GoKDriveHTMLClient
{
v32[1] |= Mod4Mask;
}
+ if (e.getModifierState("AltGraph")) {
+ v32[1] |= Mod5Mask;
+ }
+ if (e.getModifierState("CapsLock")) {
+ v32[1] |= LockMask;
+ }
v32[2] = this.web2pc105(e.keyCode);
// console.log(v32[1], v32[2]);
e.preventDefault();
e.stopPropagation();
Minor issue with parsing:
@@ -1249,7 +1249,7 @@ X2GoKDriveHTMLClient
case 111 :
return 106; ///
case 106 :
- return 63; //*
+ return 63; // * (putting a space before * here, so that nano/gedit do not get confused with syntax highlighting)
case 109 :
return 82; //-
FYI, since I'm using a French keyboard, I also created a new keymap, but this should probably be written differently and add a UI setting in the HTML to choose the keyboard mapping.
- v32[2] = this.web2pc105(e.keyCode);
+ v32[2] = this.web2pc105fr(e.keyCode);
@@ -1312,6 +1312,273 @@ X2GoKDriveHTMLClient
return nativeCode;
}
+ web2pc105fr(nativeCode)
+ {
+ switch (nativeCode)
+ {
+ //1st row
+ case 222:
+ return 49; // ²
+ case 49:
+ return 10; //1
+ case 50:
+ return 11; //2
+ case 51:
+ return 12; //3
+ case 52:
+ return 13; //4
+ case 53:
+ return 14; //5
+ case 54:
+ return 15; //6
+ case 55:
+ return 16; //7
+ case 56:
+ return 17; //8
+ case 57:
+ return 18; //9
+ case 48:
+ return 19; //0
+ case 169:
+ return 20; //°
+ case 61:
+ return 21; //+
+ case 8:
+ return 22; //BSP
+
+ //2 row
+ case 9 :
+ return 23; //TAB
+ case 65:
+ return 24; //a
+ case 90:
+ return 25; //z
+ case 69 :
+ return 26; //e
+ case 82 :
+ return 27; //r
+ case 84 :
+ return 28; //t
+ case 89:
+ return 29; //y
+ case 85:
+ return 30; //u
+ case 73:
+ return 31; //i
+ case 79:
+ return 32; //o
+ case 80:
+ return 33; //p
+ case 160:
+ return 34; //[
+ case 164:
+ return 35; //]
+ case 13:
+ return 36; //ENT
+
+ //3 row
+ case 20 :
+ return 66; //CAPS
+ case 81 :
+ return 38; //q
+ case 83 :
+ return 39; //s
+ case 68 :
+ return 40; //d
+ case 70 :
+ return 41; //f
+ case 71 :
+ return 42; //g
+ case 72 :
+ return 43; //h
+ case 74 :
+ return 44; //j
+ case 75 :
+ return 45; //k
+ case 76 :
+ return 46; //l
+ case 77 :
+ return 47; //m
+ case 165 :
+ return 48; //ù
+ case 170 :
+ return 51; // *
+
+ //4 row
+ case 16 :
+ return 50; //Shift Left
+ case 60 :
+ return 94; //<
+ case 87 :
+ return 52; //w
+ case 88 :
+ return 53; //x
+ case 67 :
+ return 54; //c
+ case 86 :
+ return 55; //v
+ case 66 :
+ return 56; //b
+ case 78 :
+ return 57; //n
+ case 188 :
+ return 58; //,
+ case 59 :
+ return 59; //;
+ case 58 :
+ return 60; //:
+ case 161 :
+ return 61; //!
+ case 16 :
+ return 62; //Shift Right
+
+
+ //5 row
+ case 17 :
+ return 37; //LCTRL
+ case 91 :
+ return 133; //LMETA
+ case 18 :
+ return 64; //LALT
+ case 32 :
+ return 65; //SPACE
+ case 18 :
+ return 108; //RALT
+// case 92 :
+// return 134; //RMETA
+// case 93 :
+// return 135; //MENU
+ case 17 :
+ return 105; //RCTRL
+
+
+ //specials
+ case 27 :
+ return 9; //ESC
+ case 112 :
+ return 67; //F1
+ case 113 :
+ return 68; //F2
+ case 114 :
+ return 69; //F3
+ case 115 :
+ return 70; //F4
+ case 116 :
+ return 71; //F5
+ case 117 :
+ return 72; //F6
+ case 118 :
+ return 73; //F7
+ case 119 :
+ return 74; //F8
+ case 120 :
+ return 75; //F9
+ case 121 :
+ return 76; //F10
+ case 122 :
+ return 95; //F11
+ case 123 :
+ return 96; //F12
+
+ case 44 :
+ return 107; //print
+// case 145 :
+// return 78; //scroll
+// case 19 :
+// return 127; //break
+
+ case 45 :
+ return 118; //ins
+ case 36 :
+ return 110; //home
+ case 33 :
+ return 112; //pgup
+ case 46 :
+ return 119; //del
+ case 35 :
+ return 115; //end
+ case 34 :
+ return 117; //pgdn
+
+ //arrows
+ case 38 :
+ return 111;
+ case 37 :
+ return 113;
+ case 40 :
+ return 116;
+ case 39 :
+ return 114;
+
+ //numlock
+ case 144 :
+ return 77; //NLCK
+ case 111 :
+ return 106; ///
+ case 106 :
+ return 63; // *
+ case 109 :
+ return 82; //-
+
+ case 36 :
+ return 79; //home
+ case 38 :
+ return 80; //up
+ case 33 :
+ return 81; //pgup
+ case 107 :
+ return 86; //+
+
+ case 37 :
+ return 83; //left
+ case 12 :
+ return 84; //clear
+ case 39 :
+ return 85; //right
+
+ case 35 :
+ return 87; //end
+ case 40 :
+ return 88; //dwn
+ case 34 :
+ return 89; //pgdn
+ case 13 :
+ return 104; //enter
+
+ case 45 :
+ return 90; //ins
+ case 46 :
+ return 91; //del
+
+ case 96 :
+ return 90; //0
+ case 97 :
+ return 87; //1
+ case 98 :
+ return 88; //2
+ case 99 :
+ return 89; //3
+ case 100 :
+ return 83; //4
+ case 101 :
+ return 84; //5
+ case 102 :
+ return 85; //6
+ case 103 :
+ return 79; //7
+ case 104 :
+ return 80; //8
+ case 105 :
+ return 81; //9
+
+ case 110 :
+ return 91; //.
+
+
+ }
+ return nativeCode;
+ }
+
Cheers!
DjZU