Skip to content

Commit 7a767e3

Browse files
authored
Merge pull request #870 from yoichi/fix-no-change-judgement
Use selected keySwitchOperation to determin that there is no change
2 parents fff2297 + 0e14f7a commit 7a767e3

File tree

5 files changed

+75
-18
lines changed

5 files changed

+75
-18
lines changed

src/components/configure/keycap/Keycap.container.ts

+43-13
Original file line numberDiff line numberDiff line change
@@ -64,33 +64,63 @@ const mapDispatchToProps = (_dispatch: any) => {
6464
draggingKey: Key,
6565
selectedLayer: number,
6666
pos: string,
67+
isSelectedKey: boolean,
6768
orgKey: Key
6869
) => {
6970
if (draggingKey.keymap.code === orgKey.keymap.code) {
70-
return;
71+
if (isSelectedKey) {
72+
// clear diff display
73+
_dispatch(KeydiffActions.clearKeydiff());
74+
}
75+
_dispatch(AppActions.remapsRemoveKey(selectedLayer, pos));
76+
} else {
77+
if (isSelectedKey) {
78+
// show key diff
79+
_dispatch(
80+
KeydiffActions.updateKeydiff(orgKey.keymap, draggingKey.keymap)
81+
);
82+
}
83+
_dispatch(
84+
AppActions.remapsSetKey(selectedLayer, pos, draggingKey.keymap)
85+
);
7186
}
72-
_dispatch(
73-
AppActions.remapsSetKey(selectedLayer, pos, draggingKey.keymap)
74-
);
7587
},
7688
onDropKeycodeToEncoder: (
7789
draggingKey: Key,
7890
selectedLayer: number,
7991
encoderId: number,
8092
keySwitchOperation: IKeySwitchOperation,
93+
isSelectedKey: boolean,
8194
orgKey: Key
8295
) => {
8396
if (draggingKey.keymap.code === orgKey.keymap.code) {
84-
return;
97+
if (isSelectedKey) {
98+
// clear diff display
99+
_dispatch(KeydiffActions.clearKeydiff());
100+
}
101+
_dispatch(
102+
AppActions.encodersRemapsRemoveKey(
103+
selectedLayer,
104+
encoderId,
105+
keySwitchOperation
106+
)
107+
);
108+
} else {
109+
if (isSelectedKey) {
110+
// show key diff
111+
_dispatch(
112+
KeydiffActions.updateKeydiff(orgKey.keymap, draggingKey.keymap)
113+
);
114+
}
115+
_dispatch(
116+
AppActions.encodersRemapsSetKey(
117+
selectedLayer,
118+
encoderId,
119+
draggingKey.keymap,
120+
keySwitchOperation
121+
)
122+
);
85123
}
86-
_dispatch(
87-
AppActions.encodersRemapsSetKey(
88-
selectedLayer,
89-
encoderId,
90-
draggingKey.keymap,
91-
keySwitchOperation
92-
)
93-
);
94124
},
95125
};
96126
};

src/components/configure/keycap/Keycap.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ export default class Keycap extends React.Component<
289289
this.props.draggingKey!,
290290
this.props.selectedLayer!,
291291
pos,
292+
isFocusedKey,
292293
orgKey
293294
);
294295
} else {
@@ -297,6 +298,7 @@ export default class Keycap extends React.Component<
297298
this.props.selectedLayer!,
298299
this.props.model.encoderId!,
299300
this.state.targetKeySwitchOperation,
301+
isFocusedKey,
300302
orgKey
301303
);
302304
}

src/components/configure/keyeventcapture/KeyEventCapture.tsx

+13-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import KeyModel from '../../../models/KeyModel';
3-
import { IKeymap } from '../../../services/hid/Hid';
3+
import { IEncoderKeymaps, IKeymap } from '../../../services/hid/Hid';
44
import { KeycodeList } from '../../../services/hid/KeycodeList';
55
import { keyInfoList } from '../../../services/hid/KeycodeInfoList';
66
import { KeyLabelLangs } from '../../../services/labellang/KeyLabelLangs';
@@ -23,7 +23,7 @@ type OwnProps = {
2323
// eslint-disable-next-line no-unused-vars
2424
newKey: Key,
2525
// eslint-disable-next-line no-unused-vars
26-
oldKeycode: number,
26+
oldKeymap: IKeymap,
2727
// eslint-disable-next-line no-unused-vars
2828
selectedLayer: number,
2929
// eslint-disable-next-line no-unused-vars
@@ -43,6 +43,7 @@ type OwnProps = {
4343
) => void;
4444
keyModels: KeyModel[];
4545
keymaps: { [pos: string]: IKeymap };
46+
encodersKeymaps: IEncoderKeymaps;
4647
children?: React.ReactNode | React.ReactNode[];
4748
};
4849
type KeyEventCaptureProps = OwnProps &
@@ -77,9 +78,18 @@ export default class KeyEventCapture extends React.Component<
7778
return;
7879
}
7980

81+
let oldKeymap =
82+
this.props.selectedKeySwitchOperation === 'click'
83+
? this.props.keymaps[this.props.selectedPos!]
84+
: this.props.selectedKeySwitchOperation === 'cw'
85+
? this.props.encodersKeymaps[this.props.selectedEncoderId!].clockwise
86+
: this.props.selectedKeySwitchOperation === 'ccw'
87+
? this.props.encodersKeymaps[this.props.selectedEncoderId!]
88+
.counterclockwise
89+
: undefined;
8090
this.props.onKeyDown!(
8191
newKey,
82-
this.props.keymaps[this.props.selectedPos!].code,
92+
oldKeymap!,
8393
this.props.selectedLayer!,
8494
this.props.selectedPos!,
8595
this.props.selectedEncoderId!,

src/components/configure/keymap/Keymap.container.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,27 @@ const mapDispatchToProps = (_dispatch: any) => {
128128
},
129129
onKeyDown: (
130130
newKey: Key,
131-
oldKeycode: number,
131+
oldKeymap: IKeymap,
132132
selectedLayer: number,
133133
pos: string,
134134
encoderId: number | null,
135135
keySwitchOperation: IKeySwitchOperation
136136
) => {
137-
if (newKey.keymap.code != oldKeycode) {
137+
if (newKey.keymap.code === oldKeymap.code) {
138+
_dispatch(KeydiffActions.clearKeydiff());
139+
if (keySwitchOperation === 'click') {
140+
_dispatch(AppActions.remapsRemoveKey(selectedLayer, pos));
141+
} else {
142+
_dispatch(
143+
AppActions.encodersRemapsRemoveKey(
144+
selectedLayer,
145+
encoderId!,
146+
keySwitchOperation
147+
)
148+
);
149+
}
150+
} else {
151+
_dispatch(KeydiffActions.updateKeydiff(oldKeymap, newKey.keymap));
138152
if (keySwitchOperation === 'click') {
139153
_dispatch(AppActions.remapsSetKey(selectedLayer, pos, newKey.keymap));
140154
} else {

src/components/configure/keymap/Keymap.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ export default class Keymap extends React.Component<
326326
onKeyUp={this.props.onKeyUp!}
327327
keyModels={keyboardViewContent.keymaps}
328328
keymaps={deviceKeymaps}
329+
encodersKeymaps={deviceEncodersKeymaps}
329330
>
330331
<KeyboardView
331332
keyboardViewContent={keyboardViewContent}

0 commit comments

Comments
 (0)