OSDN Git Service

5
[psychlops/silverlight.git] / dev5 / psychlops / core / devices / hid.cs
diff --git a/dev5/psychlops/core/devices/hid.cs b/dev5/psychlops/core/devices/hid.cs
new file mode 100644 (file)
index 0000000..ff824ae
--- /dev/null
@@ -0,0 +1,155 @@
+using System;\r
+using System.Windows;\r
+using System.Windows.Controls;\r
+using System.Windows.Documents;\r
+using System.Windows.Input;\r
+\r
+\r
+namespace Psychlops\r
+{\r
+       public class HID\r
+       {\r
+               public struct Button\r
+               {\r
+                       private static object locker;\r
+                       static Button()\r
+                       {\r
+                               locker = new object(); \r
+                       }\r
+                       private bool pushed_, released_, pressed_;\r
+                       public void down()\r
+                       {\r
+                               lock (locker)\r
+                               {\r
+                                       pushed_ = true;\r
+                                       pressed_ = true;\r
+                               }\r
+                       }\r
+                       public void up()\r
+                       {\r
+                               lock (locker)\r
+                               {\r
+                                       released_ = true;\r
+                                       pressed_ = false;\r
+                               }\r
+                       }\r
+                       public bool pushed() { lock (locker) { bool tmp = pushed_; pushed_ = false; return tmp; } }\r
+                       public bool released() { lock (locker) { bool tmp = released_; released_ = false; return tmp; } }\r
+                       public bool pressed() { return pressed_; }\r
+               }\r
+       }\r
+\r
+\r
+       public static class Mouse\r
+       {\r
+               static internal Point position_;\r
+               static internal System.Windows.UIElement _prime;\r
+               static public HID.Button left, right, middle;\r
+               static internal Point wheelDelta_;\r
+\r
+               static public Point position { get { return position_; } }\r
+               static public int x { get { return (int)position_.x; } }\r
+               static public int y { get { return (int)position_.y; } }\r
+               static public Point wheelDelta { get { return wheelDelta_; } }\r
+\r
+               static public void show() { }\r
+               static public void hide() { }\r
+\r
+               static public void Canvas_MousePos(object sender, MouseEventArgs e)\r
+               {\r
+                       System.Windows.Point p = e.GetPosition(_prime);\r
+                       position_.set(p.X, p.Y);\r
+               }\r
+               static public void Canvas_LDown(object sender, MouseEventArgs e)\r
+               {\r
+                       left.down();\r
+                       System.Windows.Point p = e.GetPosition(_prime);\r
+                       position_.set(p.X, p.Y);\r
+               }\r
+               static public void Canvas_LUp(object sender, MouseEventArgs e)\r
+               {\r
+                       left.up();\r
+                       System.Windows.Point p = e.GetPosition(_prime);\r
+                       position_.set(p.X, p.Y);\r
+               }\r
+               static public void Canvas_MouseWheel(object sender, MouseWheelEventArgs e)\r
+               {\r
+                       wheelDelta_.y += e.Delta;\r
+                       System.Windows.Point p = e.GetPosition(_prime);\r
+                       position_.set(p.X, p.Y);\r
+               }\r
+       }\r
+\r
+\r
+       public static class Keyboard\r
+       {\r
+               public class IKey\r
+               {\r
+                       //internal static HID.Button[] states;\r
+                       //int p;\r
+                       internal HID.Button state;\r
+                       public void down() { state.down(); }\r
+                       public void up() { state.up(); }\r
+                       public bool pushed() { return state.pushed(); }\r
+                       public bool released() { return state.released(); }\r
+                       public bool pressed() { return state.pressed(); }\r
+               }\r
+               static public IKey\r
+                       alt, shift, ctrl,\r
+                       esc, spc, rtn,\r
+                       left, right, up, down,\r
+                       tab,\r
+                       comma, period,\r
+                       q, w, e, r, t, y, u, i, o, p,\r
+                       a, s, d, f, g, h, j, k, l,\r
+                       z, x, c, v, b, n, m,\r
+                       one, two, three, four, five, six, seven, eight, nine, zero,\r
+                       pad0, pad1, pad2, pad3, pad4, pad5, pad6, pad7, pad8, pad9;\r
+               static private System.Collections.Generic.Dictionary<System.Windows.Input.Key, IKey> map;\r
+               static public void Canvas_KeyUp(object sender, KeyEventArgs e)\r
+               {\r
+                       if (map.ContainsKey(e.Key)) map[e.Key].up();\r
+               }\r
+               static public void Canvas_KeyDown(object sender, KeyEventArgs e)\r
+               {\r
+                       if (map.ContainsKey(e.Key)) map[e.Key].down();\r
+               }\r
+\r
+\r
+               static Keyboard()\r
+               {\r
+                       /*\r
+                       esc = new Key(0); spc = new Key(1); rtn = new Key(2);\r
+                       left = new Key(3); right = new Key(4); up = new Key(5); down = new Key(6);\r
+                       comma = new Key(7); period = new Key(8);\r
+                       q = new Key(32); w = new Key(33); e = new Key(34); r = new Key(35); t = new Key(36); y = new Key(37); u = new Key(38); i = new Key(39); o = new Key(40); p = new Key(41);\r
+                       a = new Key(42); s = new Key(43); d = new Key(44); f = new Key(45); g = new Key(46); h = new Key(47); j = new Key(48); k = new Key(49); l = new Key(50);\r
+                       z = new Key(51); x = new Key(52); c = new Key(53); v = new Key(54); b = new Key(55); n = new Key(56); m = new Key(57);\r
+                       one = new Key(80); two = new Key(81); three = new Key(82); four = new Key(83); five = new Key(84); six = new Key(85); seven = new Key(86); eight = new Key(87); nine = new Key(88); zero = new Key(96);\r
+                       pad0 = new Key(96); pad1 = new Key(97); pad2 = new Key(98); pad3 = new Key(99); pad4 = new Key(100); pad5 = new Key(101); pad6 = new Key(102); pad7 = new Key(103); pad8 = new Key(104); pad9 = new Key(105);\r
+                       */\r
+                       alt = new IKey(); shift = new IKey(); ctrl = new IKey();\r
+                       esc = new IKey(); spc = new IKey(); rtn = new IKey();\r
+                       left = new IKey(); right = new IKey(); up = new IKey(); down = new IKey();\r
+                       comma = new IKey(); period = new IKey();\r
+                       q = new IKey(); w = new IKey(); e = new IKey(); r = new IKey(); t = new IKey(); y = new IKey(); u = new IKey(); i = new IKey(); o = new IKey(); p = new IKey();\r
+                       a = new IKey(); s = new IKey(); d = new IKey(); f = new IKey(); g = new IKey(); h = new IKey(); j = new IKey(); k = new IKey(); l = new IKey();\r
+                       z = new IKey(); x = new IKey(); c = new IKey(); v = new IKey(); b = new IKey(); n = new IKey(); m = new IKey();\r
+                       one = new IKey(); two = new IKey(); three = new IKey(); four = new IKey(); five = new IKey(); six = new IKey(); seven = new IKey(); eight = new IKey(); nine = new IKey(); zero = new IKey();\r
+                       pad0 = new IKey(); pad1 = new IKey(); pad2 = new IKey(); pad3 = new IKey(); pad4 = new IKey(); pad5 = new IKey(); pad6 = new IKey(); pad7 = new IKey(); pad8 = new IKey(); pad9 = new IKey();\r
+\r
+                       map = new System.Collections.Generic.Dictionary<System.Windows.Input.Key, IKey>();\r
+                       map.Add(Key.Alt, alt); map.Add(Key.Shift, shift); map.Add(Key.Ctrl, ctrl);\r
+                       map.Add(Key.Escape, esc); map.Add(Key.Space, spc); map.Add(Key.Enter, rtn);\r
+                       map.Add(Key.Left, left); map.Add(Key.Right, right); map.Add(Key.Up, up); map.Add(Key.Down, down);\r
+                       map.Add(Key.Tab, tab);\r
+                       map.Add(Key.PageDown, comma); map.Add(Key.PageUp, period);\r
+                       map.Add(Key.Q, q); map.Add(Key.W, w); map.Add(Key.E, e); map.Add(Key.R, r); map.Add(Key.T, t); map.Add(Key.Y, y); map.Add(Key.U, u); map.Add(Key.I, i); map.Add(Key.O, o); map.Add(Key.P, p);\r
+                       map.Add(Key.A, a); map.Add(Key.S, s); map.Add(Key.D, d); map.Add(Key.F, f); map.Add(Key.G, g); map.Add(Key.H, h); map.Add(Key.J, j); map.Add(Key.K, k); map.Add(Key.L, l);\r
+                       map.Add(Key.Z, z); map.Add(Key.X, x); map.Add(Key.C, c); map.Add(Key.V, v); map.Add(Key.B, b); map.Add(Key.N, n); map.Add(Key.M, m);\r
+                       map.Add(Key.D1, one); map.Add(Key.D2, two); map.Add(Key.D3, three); map.Add(Key.D4, four); map.Add(Key.D5, five); map.Add(Key.D6, six); map.Add(Key.D7, seven); map.Add(Key.D8, eight); map.Add(Key.D9, nine); map.Add(Key.D0, zero);\r
+                       map.Add(Key.NumPad0, pad0); map.Add(Key.NumPad1, pad1); map.Add(Key.NumPad2, pad2); map.Add(Key.NumPad3, pad3); map.Add(Key.NumPad4, pad4); map.Add(Key.NumPad5, pad5); map.Add(Key.NumPad6, pad6); map.Add(Key.NumPad7, pad7); map.Add(Key.NumPad8, pad8); map.Add(Key.NumPad9, pad9);\r
+               }\r
+       }\r
+\r
+}
\ No newline at end of file