Exemplo n.º 1
0
        public MainWindow()
        {
            InitializeComponent();
            Ahk              = AutoHotkeyEngine.Instance;
            InputSimulator   = new InputSimulator();
            KeyActionManager = new KeyActionManager(Dispatcher, InputSimulator);
            BluetoothManager bluetoothManager = new BluetoothManager();

            GyroscopeReadingUuid       = GyroscopeRfcommServiceConnectionWrapper.RfcommServiceId;
            KeyboardServiceUuid        = Constants.KeyboardServiceGuid;
            MouseServiceUuid           = Constants.MouseServiceId;
            MouseCharacteristicUuid    = Constants.MouseActionCharacteristicWrapper;
            KeyboardCharacteristicUuid = Constants.KeyActionCharacteristicWrapper;

            var characteristicDict = new Dictionary <Guid, List <CharacteristicProfile> >();

            characteristicDict.Add(KeyboardServiceWrapper.Guid, new List <CharacteristicProfile>()
            {
                new CharacteristicProfile
                {
                    Notified = true,
                    Guid     = Constants.KeyActionCharacteristicWrapper
                },
                new CharacteristicProfile
                {
                    Notified = true,
                    Guid     = Constants.MouseActionCharacteristicWrapper
                }
            });
            var serviceId = new List <Guid>
            {
                MouseServiceWrapper.ServiceId
            };
            ConnectionProfile profile = new ConnectionProfile()
            {
                RequiredCharacteristicGuids = characteristicDict,
                RequiredServiceGuids        = serviceId
            };

            BleDeviceSelectorWindow bleDeviceSelectorWindow = new BleDeviceSelectorWindow(bluetoothManager, profile);

            bleDeviceSelectorWindow.ShowDialog();
            ConnectionBuildResult = bleDeviceSelectorWindow.ConnectionBuildResult;
            MouseServiceWrapper   = new MouseServiceWrapper(ConnectionBuildResult[MouseServiceUuid].RfcommConnection);
            MouseServiceWrapper.OnMouseMoveReceived           += MouseServiceWrapper_OnMouseMoveReceived;
            KeyboardServiceClientWrapper                       = new KeyboardServiceClientWrapper(ConnectionBuildResult[KeyboardServiceUuid, KeyboardCharacteristicUuid], ConnectionBuildResult[KeyboardServiceUuid, MouseCharacteristicUuid]);
            KeyboardServiceClientWrapper.OnKeyStatusChanged   += KeyboardServiceClientWrapper_OnKeyStatusChanged;
            KeyboardServiceClientWrapper.OnMouseStatusChanged += KeyboardServiceClientWrapper_OnMouseStatusChanged;
        }
        private async void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
        {
            if (MouseServiceWrapper == null)
            {
                return;
            }
            if (!_MouseMoving)
            {
                return;
            }
            var angularVelocity           = e.Reading.AngularVelocity;
            var angluarVelocityQuaternion = AngluarVelocityToQuaternion(angularVelocity);
            var angluarVelocityMat        = Matrix4x4.CreateFromQuaternion(angluarVelocityQuaternion);

            //var matrix = Matrix4x4.Transpose(Matrix4x4.CreateFromQuaternion(LatestOrientation));
            var deviceToWorldMat             = Matrix4x4.Transpose(Matrix4x4.CreateFromQuaternion(LatestOrientation));
            var angluarVelocityMatWolrdspace = Matrix4x4.Multiply(angluarVelocityMat, deviceToWorldMat);


            //var moveAmount = new Vector2(transformedAngularVelocity.Z, transformedAngularVelocity.X);
            var moveAmount = new Vector2(angularVelocity.Z, -angularVelocity.X);
            //var moveAmount = new Vector2(Vector3.Transform(Vector3.UnitX, angluarVelocityQuaternion).Z, -Vector3.Transform(Vector3.UnitX, angluarVelocityQuaternion).X);
            await MouseServiceWrapper.MoveMouseAsync(moveAmount);
        }
Exemplo n.º 3
0
 private void MouseServiceProvider_OnConnectionReceived(object sender, IRfcommConnection e)
 {
     MouseServiceWrapper = new MouseServiceWrapper(e);
 }
 private async void MouseStick_OnMove(object sender, Vector2 e)
 {
     var moveAmount = -e * 0.15f;
     await MouseServiceWrapper.MoveMouseAsync(moveAmount);
 }