public X11Mouse(WindowInfo window) { this.window = window; // Just create one mouse now. // TODO: support for multiple devices through evdev. // TODO: Should call XSelectInput for mouse pointer events. MouseDevice m = new MouseDevice(); m.Description = "Default X11 mouse"; m.DeviceID = IntPtr.Zero; m.NumberOfButtons = 5; m.NumberOfWheels = 1; mice.Add(m); }
/// <summary> /// Not used yet. /// Registers the necessary atoms for GameWindow. /// </summary> private static void RegisterAtoms(WindowInfo window) { string[] atom_names = new string[] { "WM_TITLE", "UTF8_STRING" }; IntPtr[] atoms = new IntPtr[atom_names.Length]; //Functions.XInternAtoms(window.Display, atom_names, atom_names.Length, false, atoms); int offset = 0; WMTitle = atoms[offset++]; UTF8String = atoms[offset++]; }
internal X11Keyboard(WindowInfo window) { if (window == null) throw new ArgumentNullException("window"); this.window = window; Initialize(); //Debug.Print("Info: {0}", window.ToString()); API.DisplayKeycodes(window.Display, ref firstKeyCode, ref lastKeyCode); Debug.Print("First keycode: {0}, last {1}", firstKeyCode, lastKeyCode); IntPtr keysym_ptr = API.GetKeyboardMapping(window.Display, (byte)firstKeyCode, lastKeyCode - firstKeyCode + 1, ref keysyms_per_keycode); Debug.Print("{0} keysyms per keycode.", keysyms_per_keycode); keysyms = new IntPtr[(lastKeyCode - firstKeyCode + 1) * keysyms_per_keycode]; Marshal.PtrToStructure(keysym_ptr, keysyms); //keysyms = (IntPtr[])Marshal.PtrToStructure(keysym_ptr, typeof(IntPtr[])); API.Free(keysym_ptr); KeyboardDevice kb = new KeyboardDevice(); kb.Description = "Default X11 keyboard"; kb.NumberOfKeys = lastKeyCode - firstKeyCode + 1; kb.DeviceID = IntPtr.Zero; keyboards.Add(kb); Debug.Print("Keyboard added: {0}", kb.ToString()); }