anchor.diff:          mouseDownY = mouseY;
         }
       });
  +
       eventElement.onTouchStart.listen((HTML.TouchEvent e) {
         mouseDownX = e.touches[0].client.x;
         mouseDownY = e.touches[0].client.y;
       });
  +
       eventElement.onTouchMove.listen((HTML.TouchEvent e) {
         //azimuth += e.movement.x*0.01;
         //polar += e.movement.y*0.01;
  
positive.code:     mouseDownX = e.client.x - (HTML.window.innerWidth ~/ 2);
      mouseDownY = -(e.client.y - (HTML.window.innerHeight ~/ 2));
      bool rightclick = e.button == 2;
      if (rightclick) currentlyPressedMouseButtons['right'] = true;
      else currentlyPressedMouseButtons['left'] = true;
    });
  
    canvas.onContextMenu.listen((HTML.MouseEvent e) {
  
negative.code:   HTML.document.onMouseUp.listen((HTML.MouseEvent e) {
      //e.preventDefault();
      bool rightclick = e.button == 2;
      if (rightclick) {
        currentlyPressedMouseButtons['right'] = null;
      } else {
        currentlyPressedMouseButtons['left'] = null;
      }
    });
  }
  
  // See http://keycode.info/
  abstract class Key {
    static const int PAGEUP = 33;
    static const int PAGEDOWN = 34;
    static const int END = 35;
    static const int HOME = 36;
    static const int LEFT = 37;
    static const int RIGHT = 39;
    static const int UP = 38;
    static const int DOWN = 40;
    static const int SPACE = 32;
    static const int SHIFT = 16;
    static const int CTRL = 17;
    static const int ALT = 18;
    static const int TAB = 9;
    static const int A = 65;
    static const int B = 66;
    static const int C = 67;
    static const int D = 68;
    static const int E = 69;
    static const int F = 70;
    static const int G = 71;
    static const int H = 72;
    static const int I = 73;
    static const int J = 74;
    static const int K = 75;
    static const int L = 76;
    static const int M = 77;
    static const int N = 78;
    static const int O = 79;
    static const int P = 80;
    static const int Q = 81;
    static const int R = 82;
    static const int S = 83;
    static const int T = 84;
    static const int U = 85;
    static const int V = 86;
    static const int W = 87;
    static const int X = 88;
    static const int Y = 89;
    static const int Z = 90;
    //
    static const int F1 = 112;
    static const int F2 = 113;
    static const int F3 = 114;
    static const int F4 = 115;
    static const int F5 = 116;
    static const int F6 = 117;
    static const int F7 = 118;
    static const int F8 = 119;
    static const int F9 = 120;
    static const int F10 = 121;
    static const int F11 = 122;
    static const int F12 = 123;
  }
  
  class OrbitCamera extends Camera {
  