Merge pull request #429 from tidalcycles/minirepl-keyboard-support

minirepl: add keyboard shortcuts
This commit is contained in:
Felix Roos 2023-02-09 19:22:56 +01:00 committed by GitHub
commit 0da25ea7cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -63,6 +63,27 @@ export function MiniRepl({ tune, hideOutsideView = false, enableKeyboard, drawTi
getTime: () => scheduler.now(),
});
// keyboard shortcuts
useKeydown(
useCallback(
async (e) => {
if (view?.hasFocus) {
if (e.ctrlKey || e.altKey) {
if (e.code === 'Enter') {
e.preventDefault();
flash(view);
await activateCode();
} else if (e.code === 'Period') {
stop();
e.preventDefault();
}
}
}
},
[activateCode, stop, view],
),
);
// set active pattern on ctrl+enter
useLayoutEffect(() => {
if (enableKeyboard) {
@ -150,3 +171,8 @@ function useEvent(name, onTrigger, useCapture = false) {
};
}, [onTrigger]);
}
// TODO: dedupe
function useKeydown(onTrigger) {
useEvent('keydown', onTrigger, true);
}