(`${camera}/ptz/info`);
+
+ const { payload: _, send: sendPtz } = usePtzCommand(camera);
+
+ const onStop = useCallback(
+ (e: React.SyntheticEvent) => {
+ e.preventDefault();
+ sendPtz("STOP");
+ },
+ [sendPtz],
+ );
+
+ useKeyboardListener(
+ ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "+", "-"],
+ (key, down, repeat) => {
+ if (repeat) {
+ return;
+ }
+
+ if (!down) {
+ sendPtz("STOP");
+ return;
+ }
+
+ switch (key) {
+ case "ArrowLeft":
+ sendPtz("MOVE_LEFT");
+ break;
+ case "ArrowRight":
+ sendPtz("MOVE_RIGHT");
+ break;
+ case "ArrowUp":
+ sendPtz("MOVE_UP");
+ break;
+ case "ArrowDown":
+ sendPtz("MOVE_DOWN");
+ break;
+ case "+":
+ sendPtz("ZOOM_IN");
+ break;
+ case "-":
+ sendPtz("ZOOM_OUT");
+ break;
+ }
+ },
+ );
+
+ return (
+
+ {ptz?.features?.includes("pt") && (
+ <>
+
+
+
+
+ >
+ )}
+ {ptz?.features?.includes("zoom") && (
+ <>
+
+
+ >
+ )}
+ {(ptz?.presets?.length ?? 0) > 0 && (
+
+ )}
+
+ );
+}