Skip to content

Commit 32147a9

Browse files
committed
fix: Show selection of first key, binding fixes for no-params behaviors.
* Don't ignore a selected key position of `0` for selection rendering of the keyboard. * Properly handle updating the keymap when a behavior with no parameters is selected.
1 parent 1dc11c8 commit 32147a9

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

src/behaviors/BehaviorBindingPicker.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function validateBinding(
5252
param1?: number,
5353
param2?: number,
5454
): boolean {
55-
if (param1 === undefined) {
55+
if (param1 === undefined || param1 === 0) {
5656
return metadata.every((s) => !s.param1);
5757
}
5858

@@ -73,7 +73,6 @@ export const BehaviorBindingPicker = ({
7373
behaviors,
7474
onBindingChanged,
7575
}: BehaviorBindingPickerProps) => {
76-
console.log("Binding", binding);
7776
const [behaviorId, setBehaviorId] = useState(binding.behaviorId);
7877
const [param1, setParam1] = useState<number | undefined>(binding.param1);
7978
const [param2, setParam2] = useState<number | undefined>(binding.param2);

src/keyboard/Keyboard.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ function renderLayout(
3636
keymap: Keymap,
3737
behaviors: BehaviorMap,
3838
selectedLayoutIndex: number,
39-
selectedKeyPosition: number | null,
40-
setSelectedKeyPosition: React.Dispatch<SetStateAction<number | null>>,
39+
selectedKeyPosition: number | undefined,
40+
setSelectedKeyPosition: React.Dispatch<SetStateAction<number | undefined>>,
4141
) {
4242
if (!keymap.layers[selectedLayoutIndex]) {
4343
return <></>;
@@ -68,7 +68,7 @@ function renderLayout(
6868
return (
6969
<PhysicalLayoutComp
7070
positions={positions}
71-
selectedPosition={selectedKeyPosition || undefined}
71+
selectedPosition={selectedKeyPosition}
7272
onPositionClicked={setSelectedKeyPosition}
7373
/>
7474
);
@@ -202,8 +202,8 @@ export default function Keyboard() {
202202
(keymap) => keymap?.keymap?.getKeymap,
203203
);
204204
const [selectedLayerIndex, setSelectedLayerIndex] = useState<number>(0);
205-
const [selectedKeyPosition, setSelectedKeyPosition] = useState<number | null>(
206-
null,
205+
const [selectedKeyPosition, setSelectedKeyPosition] = useState<number | undefined>(
206+
undefined
207207
);
208208
const behaviors = useBehaviors();
209209

@@ -251,7 +251,7 @@ export default function Keyboard() {
251251
let doUpdateBinding = useCallback(
252252
(binding: BehaviorBinding) => {
253253
console.log("Updatet the binding");
254-
if (!keymap || selectedKeyPosition === null) {
254+
if (!keymap || selectedKeyPosition === undefined) {
255255
console.error(
256256
"Can't update binding without a selected key position and loaded keymap",
257257
);

src/keyboard/PhysicalLayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export const PhysicalLayout = ({
5555
className="absolute hover:z-[1000]"
5656
style={scalePosition(p)}
5757
>
58-
<Key selected={idx == selectedPosition} {...p} />
58+
<Key selected={idx === selectedPosition} {...p} />
5959
</div>
6060
));
6161

0 commit comments

Comments
 (0)