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); }
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); }