예제 #1
0
 public WinInkRelativePointer(IVirtualScreen screen) : base(screen, 0x05, "WindowsInk")
 {
     WinInkButtonHandler.SetReport(Report);
     WinInkButtonHandler.SetDevice(Device);
     maxPoint     = new Vector2(VirtualScreen.Width, VirtualScreen.Height);
     currentPoint = maxPoint / 2;
 }
예제 #2
0
 protected TiledGame()
 {
     loader = new ModuleLoader();
     loader.Load();
     this.stateManager = loader.GetStateManager();
     this.spriteDrawer = loader.GetDrawer();
     this.spriteFontDawer = loader.GetFontDrawer();
     this.inputManager = loader.GetInputManager();
     this.virtualScreen = loader.GetVirtualScreen();
     this.camera = loader.GetCamera();
     this.contentLoader = loader.GetContentLoader();
 }
예제 #3
0
        public BasePointer(IVirtualScreen screen, byte ReportID, string Name)
        {
            Report = new T
            {
                ReportID = ReportID
            };

            VirtualScreen = screen;
            Device        = VMultiDevice.Retrieve(Name);

            ScreenToVMulti = new Vector2(VirtualScreen.Width, VirtualScreen.Height) / 32767;
        }
예제 #4
0
        public BasePointer(IVirtualScreen screen, string Name)
        {
            ReportBuffer  = GC.AllocateArray <byte>(Unsafe.SizeOf <T>(), pinned: true);
            ReportPointer = (T *)Unsafe.AsPointer(ref ReportBuffer[0]);

            T report = CreateReport();

            *ReportPointer = report;

            VirtualScreen = screen;
            Device        = VMultiDevice.Retrieve(Name);

            ScreenToVMulti = new Vector2(VirtualScreen.Width, VirtualScreen.Height) / 32767;
        }
 public WindowsAbsolutePointer(IVirtualScreen virtualScreen)
 {
     timer = new System.Threading.Timer(
         state => screenToVirtualDesktop = new Vector2(
             virtualScreen.Width,
             virtualScreen.Height
             ) / 65535,
         null,
         TimeSpan.Zero,
         TimeSpan.FromSeconds(1)
         );
     screenToVirtualDesktop =
         new Vector2(virtualScreen.Width, virtualScreen.Height) / 65535;
 }
        public unsafe EvdevAbsolutePointer(IVirtualScreen virtualScreen)
        {
            Device = new EvdevDevice("OpenTabletDriver Virtual Tablet");

            Device.EnableType(EventType.EV_ABS);

            var xAbs = new input_absinfo
            {
                maximum = (int)virtualScreen.Width
            };
            input_absinfo *xPtr = &xAbs;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_X, (IntPtr)xPtr);

            var yAbs = new input_absinfo
            {
                maximum = (int)virtualScreen.Height
            };
            input_absinfo *yPtr = &yAbs;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_Y, (IntPtr)yPtr);

            Device.EnableTypeCodes(
                EventType.EV_KEY,
                EventCode.BTN_LEFT,
                EventCode.BTN_MIDDLE,
                EventCode.BTN_RIGHT,
                EventCode.BTN_FORWARD,
                EventCode.BTN_BACK);

            var result = Device.Initialize();

            switch (result)
            {
            case ERRNO.NONE:
                Log.Debug("Evdev", $"Successfully initialized virtual tablet. (code {result})");
                break;

            default:
                Log.Write("Evdev", $"Failed to initialize virtual tablet. (error code {result})", LogLevel.Error);
                break;
            }
        }
예제 #7
0
        public unsafe EvdevVirtualTablet(IVirtualScreen virtualScreen)
        {
            Device = new EvdevDevice("OpenTabletDriver Virtual Artist Tablet");

            Device.EnableType(EventType.INPUT_PROP_DIRECT);
            Device.EnableType(EventType.EV_ABS);

            screenScale = new Vector2(virtualScreen.Width, virtualScreen.Height);

            var xAbs = new input_absinfo
            {
                maximum    = Max,
                resolution = 100
            };
            input_absinfo *xPtr = &xAbs;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_X, (IntPtr)xPtr);

            var yAbs = new input_absinfo
            {
                maximum    = Max,
                resolution = 100
            };
            input_absinfo *yPtr = &yAbs;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_Y, (IntPtr)yPtr);

            var pressure = new input_absinfo
            {
                maximum = MaxPressure
            };
            input_absinfo *pressurePtr = &pressure;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_PRESSURE, (IntPtr)pressurePtr);

            var xTilt = new input_absinfo
            {
                minimum    = -64,
                maximum    = 63,
                resolution = 57
            };
            input_absinfo *xTiltPtr = &xTilt;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_TILT_X, (IntPtr)xTiltPtr);

            var yTilt = new input_absinfo
            {
                minimum    = -64,
                maximum    = 63,
                resolution = 57
            };
            input_absinfo *yTiltPtr = &yTilt;

            Device.EnableCustomCode(EventType.EV_ABS, EventCode.ABS_TILT_Y, (IntPtr)yTiltPtr);

            Device.EnableTypeCodes(
                EventType.EV_KEY,
                EventCode.BTN_TOUCH,
                EventCode.BTN_STYLUS,
                EventCode.BTN_TOOL_PEN,
                EventCode.BTN_TOOL_RUBBER,
                EventCode.BTN_STYLUS2,
                EventCode.BTN_STYLUS3
                );

            var result = Device.Initialize();

            switch (result)
            {
            case ERRNO.NONE:
                Log.Debug("Evdev", $"Successfully initialized virtual pressure sensitive tablet. (code {result})");
                break;

            default:
                Log.Write("Evdev", $"Failed to initialize virtual pressure sensitive tablet. (error code {result})", LogLevel.Error);
                break;
            }
        }
예제 #8
0
 public VMultiRelativePointer(IVirtualScreen screen) : base(screen, "VMultiRel")
 {
     ButtonHandler.SetReport((VMultiReportHeader *)ReportPointer, ReportBuffer);
 }
예제 #9
0
 public WinInkAbsolutePointer(IVirtualScreen screen) : base(screen, 0x05, "WindowsInk")
 {
     WinInkButtonHandler.SetReport(Report);
     WinInkButtonHandler.SetDevice(Device);
 }
예제 #10
0
 public VMultiRelativePointer(IVirtualScreen screen) : base(screen, 0x04, "VMultiRel")
 {
     ButtonHandler.SetReport(Report);
 }
예제 #11
0
 public VMultiAbsolutePointer(IVirtualScreen screen) : base(screen, 0x09, "VMultiAbs")
 {
     ButtonHandler.SetReport(Report);
 }
 public MacOSAbsolutePointer(IVirtualScreen virtualScreen)
     : base(virtualScreen)
 {
 }
 public MacOSRelativePointer(IVirtualScreen virtualScreen)
     : base(virtualScreen)
 {
 }
예제 #14
0
 public GameObjectsFactory(ISpritesFactory spritesFactory, IVirtualScreen virtualScreen)
 {
     this.spritesFactory = spritesFactory;
     this.virtualScreen = virtualScreen;
 }
예제 #15
0
        protected MacOSVirtualMouse(IVirtualScreen virtualScreen)
        {
            var primary = virtualScreen.Displays.FirstOrDefault();

            offset = new CGPoint(primary.Position.X, primary.Position.Y);
        }