feat: Provide reasonable default mouse settings for Macs (#982)
* feat: Provide reasonable default mouse settings for Macs * fix: hack to eliminate the double scrollbar
This commit is contained in:
committed by
László Monda
parent
2b84101975
commit
a409c219d8
@@ -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');
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -2,6 +2,23 @@
|
||||
<i class="fa fa-sliders"></i>
|
||||
<span>Mouse speed</span>
|
||||
</h1>
|
||||
<button class="btn btn-danger mouse-speed-reset-button"
|
||||
mwlConfirmationPopover
|
||||
title="Are you sure?"
|
||||
placement="bottom"
|
||||
confirmText="Yes"
|
||||
cancelText="No"
|
||||
(confirm)="resetToPcDefault()">Reset PC default speeds
|
||||
</button>
|
||||
<button class="btn btn-danger mouse-speed-reset-button"
|
||||
mwlConfirmationPopover
|
||||
title="Are you sure?"
|
||||
placement="bottom"
|
||||
confirmText="Yes"
|
||||
cancelText="No"
|
||||
(confirm)="resetToMacDefault()">Reset Mac default speeds
|
||||
</button>
|
||||
|
||||
<h3>Mouse pointer speed</h3>
|
||||
<div class="row mouse-speed-setting" *ngFor="let prop of moveProps">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
@@ -32,11 +49,5 @@
|
||||
(ngModelChange)="onSetPropertyValue(prop.prop, $event)"></slider-wrapper>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-danger mouse-speed-reset-button"
|
||||
mwlConfirmationPopover
|
||||
title="Are you sure?"
|
||||
placement="top"
|
||||
confirmText="Yes"
|
||||
cancelText="No"
|
||||
(confirm)="resetToDefault()">Reset speeds to default
|
||||
</button>
|
||||
<!-- It is a hack to eliminate the double scrollbar -->
|
||||
<div class="placeholder"></div>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
31
packages/uhk-web/src/app/services/default-mouse-speeds.ts
Normal file
31
packages/uhk-web/src/app/services/default-mouse-speeds.ts
Normal file
@@ -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
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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<Action> = 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(<UserConfiguration>mouseSpeedDefaultSettings));
|
||||
})
|
||||
ofType(
|
||||
ActionTypes.ResetPcMouseSpeedSettings,
|
||||
ActionTypes.ResetMacMouseSpeedSettings
|
||||
),
|
||||
withLatestFrom(this.store.select(getUserConfiguration)),
|
||||
map(([action, config]) => new LoadResetUserConfigurationAction(config))
|
||||
);
|
||||
|
||||
@Effect() resetUserConfiguration$: Observable<Action> = this.actions$
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user