+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