diff --git a/packages/uhk-common/src/config-serializer/config-items/index.ts b/packages/uhk-common/src/config-serializer/config-items/index.ts index 62e04aed..d553c3ba 100644 --- a/packages/uhk-common/src/config-serializer/config-items/index.ts +++ b/packages/uhk-common/src/config-serializer/config-items/index.ts @@ -8,6 +8,7 @@ export * from './secondary-role-action'; export * from './macro'; export * from './module'; export * from './module-configuration'; +export * from './mouse-speed-configuration'; export * from './user-configuration'; export const SCANCODES = require('./scancodes.json'); diff --git a/packages/uhk-common/src/config-serializer/config-items/mouse-speed-configuration.ts b/packages/uhk-common/src/config-serializer/config-items/mouse-speed-configuration.ts new file mode 100644 index 00000000..48d96e99 --- /dev/null +++ b/packages/uhk-common/src/config-serializer/config-items/mouse-speed-configuration.ts @@ -0,0 +1,12 @@ +export interface MouseSpeedConfiguration { + mouseMoveInitialSpeed: number; + mouseMoveAcceleration: number; + mouseMoveDeceleratedSpeed: number; + mouseMoveBaseSpeed: number; + mouseMoveAcceleratedSpeed: number; + mouseScrollInitialSpeed: number; + mouseScrollAcceleration: number; + mouseScrollDeceleratedSpeed: number; + mouseScrollBaseSpeed: number; + mouseScrollAcceleratedSpeed: number; +} diff --git a/packages/uhk-common/src/config-serializer/config-items/user-configuration.ts b/packages/uhk-common/src/config-serializer/config-items/user-configuration.ts index 46e416a4..691e9661 100644 --- a/packages/uhk-common/src/config-serializer/config-items/user-configuration.ts +++ b/packages/uhk-common/src/config-serializer/config-items/user-configuration.ts @@ -7,8 +7,9 @@ import { ConfigSerializer } from '../config-serializer'; import { KeystrokeAction, NoneAction } from './key-action'; import { SecondaryRoleAction } from './secondary-role-action'; import { isScancodeExists } from './scancode-checker'; +import { MouseSpeedConfiguration } from './mouse-speed-configuration'; -export class UserConfiguration { +export class UserConfiguration implements MouseSpeedConfiguration { @assertUInt16 userConfigMajorVersion: number; diff --git a/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.html b/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.html index 93860a4c..cbc7f5c6 100644 --- a/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.html +++ b/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.html @@ -2,6 +2,23 @@ Mouse speed + + +

Mouse pointer speed

@@ -32,11 +49,5 @@ (ngModelChange)="onSetPropertyValue(prop.prop, $event)">
- \ No newline at end of file + +
diff --git a/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.scss b/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.scss index 4d2ff84b..6a3d3c26 100644 --- a/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.scss +++ b/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.scss @@ -14,8 +14,8 @@ } .mouse-speed-reset-button { - display: block; - margin-bottom: 4rem; + margin-bottom: 2rem; + margin-right: 1em; } .mouse-speed-setting { @@ -25,4 +25,9 @@ margin-top: 2rem; } } + + .placeholder { + height: 3rem; + } + } diff --git a/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.ts b/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.ts index fefb2658..705b0b57 100644 --- a/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.ts +++ b/packages/uhk-web/src/app/components/device/mouse-speed/mouse-speed.component.ts @@ -5,7 +5,7 @@ import { SetUserConfigurationValueAction } from '../../../store/actions/user-con import { SliderPips, SliderProps } from '../../slider-wrapper/slider-wrapper.component'; import { Observable, Subscription } from 'rxjs'; import { UserConfiguration } from 'uhk-common'; -import { ResetMouseSpeedSettingsAction } from '../../../store/actions/device'; +import { ResetPcMouseSpeedSettingsAction, ResetMacMouseSpeedSettingsAction } from '../../../store/actions/device'; const MOUSE_MOVE_VALUE_MULTIPLIER = 25; @@ -144,7 +144,11 @@ export class MouseSpeedComponent implements OnInit, OnDestroy { })); } - resetToDefault() { - this.store.dispatch(new ResetMouseSpeedSettingsAction()); + resetToPcDefault() { + this.store.dispatch(new ResetPcMouseSpeedSettingsAction()); + } + + resetToMacDefault() { + this.store.dispatch(new ResetMacMouseSpeedSettingsAction()); } } diff --git a/packages/uhk-web/src/app/services/default-mouse-speeds.ts b/packages/uhk-web/src/app/services/default-mouse-speeds.ts new file mode 100644 index 00000000..366f5268 --- /dev/null +++ b/packages/uhk-web/src/app/services/default-mouse-speeds.ts @@ -0,0 +1,31 @@ +import { MouseSpeedConfiguration } from 'uhk-common'; + +export function getDefaultPcMouseSpeeds(): MouseSpeedConfiguration { + return { + mouseMoveInitialSpeed: 4, + mouseMoveAcceleration: 68, + mouseMoveDeceleratedSpeed: 8, + mouseMoveBaseSpeed: 32, + mouseMoveAcceleratedSpeed: 64, + mouseScrollInitialSpeed: 20, + mouseScrollAcceleration: 20, + mouseScrollDeceleratedSpeed: 10, + mouseScrollBaseSpeed: 20, + mouseScrollAcceleratedSpeed: 50 + }; +} + +export function getDefaultMacMouseSpeeds(): MouseSpeedConfiguration { + return { + mouseMoveInitialSpeed: 8, + mouseMoveAcceleration: 180, + mouseMoveDeceleratedSpeed: 80, + mouseMoveBaseSpeed: 112, + mouseMoveAcceleratedSpeed: 160, + mouseScrollInitialSpeed: 10, + mouseScrollAcceleration: 10, + mouseScrollDeceleratedSpeed: 7, + mouseScrollBaseSpeed: 10, + mouseScrollAcceleratedSpeed: 12 + }; +} diff --git a/packages/uhk-web/src/app/store/actions/device.ts b/packages/uhk-web/src/app/store/actions/device.ts index 160057d4..4df90c47 100644 --- a/packages/uhk-web/src/app/store/actions/device.ts +++ b/packages/uhk-web/src/app/store/actions/device.ts @@ -14,7 +14,8 @@ export enum ActionTypes { SaveToKeyboardFailed = '[device] save to keyboard failed', HideSaveToKeyboardButton = '[device] hide save to keyboard button', ResetUserConfiguration = '[device] reset user configuration', - ResetMouseSpeedSettings = '[device] reset mouse speed settings', + ResetPcMouseSpeedSettings = '[device] reset PC mouse speed settings', + ResetMacMouseSpeedSettings = '[device] reset Mac mouse speed settings', UpdateFirmware = '[device] update firmware', UpdateFirmwareWith = '[device] update firmware with', UpdateFirmwareReply = '[device] update firmware reply', @@ -113,8 +114,12 @@ export class UpdateFirmwareFailedAction implements Action { } } -export class ResetMouseSpeedSettingsAction implements Action { - type = ActionTypes.ResetMouseSpeedSettings; +export class ResetPcMouseSpeedSettingsAction implements Action { + type = ActionTypes.ResetPcMouseSpeedSettings; +} + +export class ResetMacMouseSpeedSettingsAction implements Action { + type = ActionTypes.ResetMacMouseSpeedSettings; } export class HardwareModulesLoadedAction implements Action { @@ -161,7 +166,8 @@ export type Actions | SaveToKeyboardSuccessAction | SaveToKeyboardSuccessFailed | HideSaveToKeyboardButton - | ResetMouseSpeedSettingsAction + | ResetPcMouseSpeedSettingsAction + | ResetMacMouseSpeedSettingsAction | ResetUserConfigurationAction | UpdateFirmwareAction | UpdateFirmwareWithAction diff --git a/packages/uhk-web/src/app/store/effects/device.ts b/packages/uhk-web/src/app/store/effects/device.ts index f924da31..8cc38729 100644 --- a/packages/uhk-web/src/app/store/effects/device.ts +++ b/packages/uhk-web/src/app/store/effects/device.ts @@ -34,7 +34,7 @@ import { import { AppRendererService } from '../../services/app-renderer.service'; import { DeviceRendererService } from '../../services/device-renderer.service'; import { SetupPermissionErrorAction, ShowNotificationAction } from '../actions/app'; -import { AppState, deviceConnected, getRouterState } from '../index'; +import { AppState, deviceConnected, getRouterState, getUserConfiguration } from '../index'; import { ActionTypes as UserConfigActions, ApplyUserConfigurationFromFileAction, @@ -169,27 +169,12 @@ export class DeviceEffects { @Effect() resetMouseSpeedSettings$: Observable = this.actions$ .pipe( - ofType(ActionTypes.ResetMouseSpeedSettings), - switchMap(() => { - const config = this.defaultUserConfigurationService.getDefault(); - const mouseSpeedDefaultSettings = {}; - const mouseSpeedProps = [ - 'mouseMoveInitialSpeed', - 'mouseMoveAcceleration', - 'mouseMoveDeceleratedSpeed', - 'mouseMoveBaseSpeed', - 'mouseMoveAcceleratedSpeed', - 'mouseScrollInitialSpeed', - 'mouseScrollAcceleration', - 'mouseScrollDeceleratedSpeed', - 'mouseScrollBaseSpeed', - 'mouseScrollAcceleratedSpeed' - ]; - mouseSpeedProps.forEach(prop => { - mouseSpeedDefaultSettings[prop] = config[prop]; - }); - return of(new LoadResetUserConfigurationAction(mouseSpeedDefaultSettings)); - }) + ofType( + ActionTypes.ResetPcMouseSpeedSettings, + ActionTypes.ResetMacMouseSpeedSettings + ), + withLatestFrom(this.store.select(getUserConfiguration)), + map(([action, config]) => new LoadResetUserConfigurationAction(config)) ); @Effect() resetUserConfiguration$: Observable = this.actions$ diff --git a/packages/uhk-web/src/app/store/reducers/user-configuration.ts b/packages/uhk-web/src/app/store/reducers/user-configuration.ts index 03f1b68f..e3c9de1e 100644 --- a/packages/uhk-web/src/app/store/reducers/user-configuration.ts +++ b/packages/uhk-web/src/app/store/reducers/user-configuration.ts @@ -14,8 +14,10 @@ import { import * as KeymapActions from '../actions/keymap'; import * as MacroActions from '../actions/macro'; import * as UserConfig from '../actions/user-config'; +import * as DeviceActions from '../actions/device'; import { isValidName } from '../../util'; import { defaultLastEditKey, LastEditedKey } from '../../models'; +import { getDefaultMacMouseSpeeds, getDefaultPcMouseSpeeds } from '../../services/default-mouse-speeds'; export interface State { userConfiguration: UserConfiguration; @@ -31,7 +33,7 @@ export const initialState: State = { export function reducer( state = initialState, - action: KeymapActions.Actions | MacroActions.Actions | UserConfig.Actions + action: KeymapActions.Actions | MacroActions.Actions | UserConfig.Actions | DeviceActions.Actions ): State { switch (action.type) { case UserConfig.ActionTypes.ApplyUserConfigurationFromFile: @@ -52,6 +54,30 @@ export function reducer( }; } + case DeviceActions.ActionTypes.ResetPcMouseSpeedSettings: + return { + ...state, + userConfiguration: Object.assign( + new UserConfiguration(), + { + ...state.userConfiguration, + ...getDefaultPcMouseSpeeds() + } + ) + }; + + case DeviceActions.ActionTypes.ResetMacMouseSpeedSettings: + return { + ...state, + userConfiguration: Object.assign( + new UserConfiguration(), + { + ...state.userConfiguration, + ...getDefaultMacMouseSpeeds() + } + ) + }; + case KeymapActions.ActionTypes.Add: case KeymapActions.ActionTypes.Duplicate: { const newKeymap: Keymap = new Keymap((action as KeymapActions.AddKeymapAction).payload);