summaryrefslogtreecommitdiff
path: root/usr/rsc/nacl/av/event.go
diff options
context:
space:
mode:
Diffstat (limited to 'usr/rsc/nacl/av/event.go')
-rw-r--r--usr/rsc/nacl/av/event.go471
1 files changed, 0 insertions, 471 deletions
diff --git a/usr/rsc/nacl/av/event.go b/usr/rsc/nacl/av/event.go
deleted file mode 100644
index 62ecbc6e6..000000000
--- a/usr/rsc/nacl/av/event.go
+++ /dev/null
@@ -1,471 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// NaCl GUI events.
-// Clients do not have raw access to the event stream
-// (only filtered through the lens of package draw)
-// but perhaps they will.
-
-package av
-
-import (
- "bytes";
- "debug/binary";
- "draw";
- "log";
- "os";
- "time";
-)
-
-// An eventType identifies the type of a Native Client Event.
-type eventType uint8;
-const (
- eventActive = 1+iota;
- eventExpose;
- eventKeyDown;
- eventKeyUp;
- eventMouseMotion;
- eventMouseButtonDown;
- eventMouseButtonUp;
- eventQuit;
- eventUnsupported;
-)
-
-// A key represents a key on a keyboard.
-type key uint16
-const (
- keyUnknown = 0;
- keyFirst = 0;
- keyBackspace = 8;
- keyTab = 9;
- keyClear = 12;
- keyReturn = 13;
- keyPause = 19;
- keyEscape = 27;
- keySpace = 32;
- keyExclaim = 33;
- keyQuotedbl = 34;
- keyHash = 35;
- keyDollar = 36;
- keyAmpersand = 38;
- keyQuote = 39;
- keyLeftparen = 40;
- keyRightparen = 41;
- keyAsterisk = 42;
- keyPlus = 43;
- keyComma = 44;
- keyMinus = 45;
- keyPeriod = 46;
- keySlash = 47;
- key0 = 48;
- key1 = 49;
- key2 = 50;
- key3 = 51;
- key4 = 52;
- key5 = 53;
- key6 = 54;
- key7 = 55;
- key8 = 56;
- key9 = 57;
- keyColon = 58;
- keySemicolon = 59;
- keyLess = 60;
- keyEquals = 61;
- keyGreater = 62;
- keyQuestion = 63;
- keyAt = 64;
- keyLeftbracket = 91;
- keyBackslash = 92;
- keyRightbracket = 93;
- keyCaret = 94;
- keyUnderscore = 95;
- keyBackquote = 96;
- keyA = 97;
- keyB = 98;
- keyC = 99;
- keyD = 100;
- keyE = 101;
- keyF = 102;
- keyG = 103;
- keyH = 104;
- keyI = 105;
- keyJ = 106;
- keyK = 107;
- keyL = 108;
- keyM = 109;
- keyN = 110;
- keyO = 111;
- keyP = 112;
- keyQ = 113;
- keyR = 114;
- keyS = 115;
- keyT = 116;
- keyU = 117;
- keyV = 118;
- keyW = 119;
- keyX = 120;
- keyY = 121;
- keyZ = 122;
- keyDelete = 127;
- keyWorld0 = 160;
- keyWorld1 = 161;
- keyWorld2 = 162;
- keyWorld3 = 163;
- keyWorld4 = 164;
- keyWorld5 = 165;
- keyWorld6 = 166;
- keyWorld7 = 167;
- keyWorld8 = 168;
- keyWorld9 = 169;
- keyWorld10 = 170;
- keyWorld11 = 171;
- keyWorld12 = 172;
- keyWorld13 = 173;
- keyWorld14 = 174;
- keyWorld15 = 175;
- keyWorld16 = 176;
- keyWorld17 = 177;
- keyWorld18 = 178;
- keyWorld19 = 179;
- keyWorld20 = 180;
- keyWorld21 = 181;
- keyWorld22 = 182;
- keyWorld23 = 183;
- keyWorld24 = 184;
- keyWorld25 = 185;
- keyWorld26 = 186;
- keyWorld27 = 187;
- keyWorld28 = 188;
- keyWorld29 = 189;
- keyWorld30 = 190;
- keyWorld31 = 191;
- keyWorld32 = 192;
- keyWorld33 = 193;
- keyWorld34 = 194;
- keyWorld35 = 195;
- keyWorld36 = 196;
- keyWorld37 = 197;
- keyWorld38 = 198;
- keyWorld39 = 199;
- keyWorld40 = 200;
- keyWorld41 = 201;
- keyWorld42 = 202;
- keyWorld43 = 203;
- keyWorld44 = 204;
- keyWorld45 = 205;
- keyWorld46 = 206;
- keyWorld47 = 207;
- keyWorld48 = 208;
- keyWorld49 = 209;
- keyWorld50 = 210;
- keyWorld51 = 211;
- keyWorld52 = 212;
- keyWorld53 = 213;
- keyWorld54 = 214;
- keyWorld55 = 215;
- keyWorld56 = 216;
- keyWorld57 = 217;
- keyWorld58 = 218;
- keyWorld59 = 219;
- keyWorld60 = 220;
- keyWorld61 = 221;
- keyWorld62 = 222;
- keyWorld63 = 223;
- keyWorld64 = 224;
- keyWorld65 = 225;
- keyWorld66 = 226;
- keyWorld67 = 227;
- keyWorld68 = 228;
- keyWorld69 = 229;
- keyWorld70 = 230;
- keyWorld71 = 231;
- keyWorld72 = 232;
- keyWorld73 = 233;
- keyWorld74 = 234;
- keyWorld75 = 235;
- keyWorld76 = 236;
- keyWorld77 = 237;
- keyWorld78 = 238;
- keyWorld79 = 239;
- keyWorld80 = 240;
- keyWorld81 = 241;
- keyWorld82 = 242;
- keyWorld83 = 243;
- keyWorld84 = 244;
- keyWorld85 = 245;
- keyWorld86 = 246;
- keyWorld87 = 247;
- keyWorld88 = 248;
- keyWorld89 = 249;
- keyWorld90 = 250;
- keyWorld91 = 251;
- keyWorld92 = 252;
- keyWorld93 = 253;
- keyWorld94 = 254;
- keyWorld95 = 255;
-
- // Numeric keypad
- keyKp0 = 256;
- keyKp1 = 257;
- keyKp2 = 258;
- keyKp3 = 259;
- keyKp4 = 260;
- keyKp5 = 261;
- keyKp6 = 262;
- keyKp7 = 263;
- keyKp8 = 264;
- keyKp9 = 265;
- keyKpPeriod = 266;
- keyKpDivide = 267;
- keyKpMultiply = 268;
- keyKpMinus = 269;
- keyKpPlus = 270;
- keyKpEnter = 271;
- keyKpEquals = 272;
-
- // Arrow & insert/delete pad
- keyUp = 273;
- keyDown = 274;
- keyRight = 275;
- keyLeft = 276;
- keyInsert = 277;
- keyHome = 278;
- keyEnd = 279;
- keyPageup = 280;
- keyPagedown = 281;
-
- // Function keys
- keyF1 = 282;
- keyF2 = 283;
- keyF3 = 284;
- keyF4 = 285;
- keyF5 = 286;
- keyF6 = 287;
- keyF7 = 288;
- keyF8 = 289;
- keyF9 = 290;
- keyF10 = 291;
- keyF11 = 292;
- keyF12 = 293;
- keyF13 = 294;
- keyF14 = 295;
- keyF15 = 296;
-
- // Modifier keys
- keyNumlock = 300;
- keyCapslock = 301;
- keyScrollock = 302;
- keyRshift = 303;
- keyLshift = 304;
- keyRctrl = 305;
- keyLctrl = 306;
- keyRalt = 307;
- keyLalt = 308;
- keyRmeta = 309;
- keyLmeta = 310;
- keyLsuper = 311;
- keyRsuper = 312;
- keyMode = 313;
- keyCompose = 314;
-
- // Misc keys
- keyHelp = 315;
- keyPrint = 316;
- keySysreq = 317;
- keyBreak = 318;
- keyMenu = 319;
- keyPower = 320;
- keyEuro = 321;
- keyUndo = 322;
-
- // Add any other keys here
- keyLast
-)
-
-// A keymod is a set of bit flags
-type keymod uint16
-const (
- keymodNone = 0x0000;
- keymodLshift= 0x0001;
- keymodRshift= 0x0002;
- keymodLctrl = 0x0040;
- keymodRctrl = 0x0080;
- keymodLalt = 0x0100;
- keymodRalt = 0x0200;
- keymodLmeta = 0x0400;
- keymodRmeta = 0x0800;
- keymodNum = 0x1000;
- keymodCaps = 0x2000;
- keymodMode = 0x4000;
- keymodReserved = 0x8000
-)
-
-const (
- mouseButtonLeft = 1;
- mouseButtonMiddle = 2;
- mouseButtonRight = 3;
- mouseScrollUp = 4;
- mouseScrollDown = 5
-)
-
-const (
- mouseStateLeftButtonPressed = 1;
- mouseStateMiddleButtonPressed = 2;
- mouseStateRightButtonPressed = 4
-)
-
-const (
- activeMouse = 1; // mouse leaving/entering
- activeInputFocus = 2; // input focus lost/restored
- activeApplication = 4 // application minimized/restored
-)
-
-const maxEventBytes = 64
-
-type activeEvent struct {
- EventType eventType;
- Gain uint8;
- State uint8;
-}
-
-type exposeEvent struct {
- EventType eventType;
-}
-
-type keyboardEvent struct {
- EventType eventType;
- Device uint8;
- State uint8;
- Pad uint8;
- ScanCode uint8;
- Pad1 uint8;
- Key key;
- Mod keymod;
- Unicode uint16;
-}
-
-type mouseMotionEvent struct {
- EventType eventType;
- Device uint8;
- Buttons uint8;
- Pad uint8;
- X uint16;
- Y uint16;
- Xrel int16;
- Yrel int16;
-}
-
-type mouseButtonEvent struct {
- EventType eventType;
- Device uint8;
- Button uint8;
- State uint8;
- X uint16;
- Y uint16;
-}
-
-type quitEvent struct {
- EventType eventType;
-}
-
-type syncEvent struct {
-}
-
-type event interface {
-}
-
-type reader []byte
-func (r *reader) Read(p []byte) (n int, err os.Error) {
- b := *r;
- if len(b) == 0 && len(p) > 0 {
- return 0, os.EOF;
- }
- n = bytes.Copy(p, b);
- *r = b[n:len(b)];
- return;
-}
-
-func (w *Window) readEvents() {
- buf := make([]byte, maxEventBytes);
- clean := false;
- var (
- ea *activeEvent;
- ee *exposeEvent;
- ke *keyboardEvent;
- mme *mouseMotionEvent;
- mbe *mouseButtonEvent;
- qe *quitEvent;
- )
- var m draw.Mouse;
- for {
- if err := videoPollEvent(buf); err != nil {
- if !clean {
- clean = w.resizec <- false;
- }
- time.Sleep(10e6); // 10ms
- continue;
- }
- clean = false;
- var e event;
- switch buf[0] {
- default:
- log.Stdout("unsupported event type", buf[0]);
- continue;
- case eventActive:
- ea = new(activeEvent);
- e = ea;
- case eventExpose:
- ee = new(exposeEvent);
- e = ee;
- case eventKeyDown, eventKeyUp:
- ke = new(keyboardEvent);
- e = ke;
- case eventMouseMotion:
- mme = new(mouseMotionEvent);
- e = mme;
- case eventMouseButtonDown, eventMouseButtonUp:
- mbe = new(mouseButtonEvent);
- e = mbe;
- case eventQuit:
- qe = new(quitEvent);
- e = qe;
- }
- r := reader(buf);
- if err := binary.Read(&r, binary.LittleEndian, e); err != nil {
- log.Stdout("unpacking %T event: %s", e, err);
- continue;
- }
- // log.Stdoutf("%#v\n", e);
- switch buf[0] {
- case eventExpose:
- w.resizec <- true
- case eventKeyDown:
- w.kbdc <- int(ke.Key);
- case eventKeyUp:
- w.kbdc <- -int(ke.Key);
- case eventMouseMotion:
- m.X = int(mme.X);
- m.Y = int(mme.Y);
- m.Buttons = int(mme.Buttons);
- m.Nsec = time.Nanoseconds();
- _ = w.mousec <- m;
- case eventMouseButtonDown:
- m.X = int(mbe.X);
- m.Y = int(mbe.Y);
- // TODO(rsc): Remove uint cast once 8g bug is fixed.
- m.Buttons |= 1<<uint(mbe.Button-1);
- m.Nsec = time.Nanoseconds();
- _ = w.mousec <- m;
- case eventMouseButtonUp:
- m.X = int(mbe.X);
- m.Y = int(mbe.Y);
- // TODO(rsc): Remove uint cast once 8g bug is fixed.
- m.Buttons &^= 1<<uint(mbe.Button-1);
- m.Nsec = time.Nanoseconds();
- _ = w.mousec <- m;
- case eventQuit:
- w.quitc <- true;
- }
- }
-}