function handleGamepadInput() {
    const gamepads = navigator.getGamepads();
    if (!gamepads) return;

    const gamepad = gamepads[0];
    if (!gamepad) return;

    const boardLeft = document.getElementById('board-left');
    const boardRight = document.getElementById('board-right');

    if (boardLeft && boardRight) {
        if (translateVrXLeft === 0 && translateVrYLeft === 0 && scaleVrLeft === 0.05) {
            const initialLeft = getInitialTransformValues(boardLeft);
            translateVrXLeft = initialLeft.translateX;
            translateVrYLeft = initialLeft.translateY;
            scaleVrLeft = initialLeft.scale;
        }

        if (translateVrXRight === 0 && translateVrYRight === 0 && scaleVrRight === 0.05) {
            const initialRight = getInitialTransformValues(boardRight);
            translateVrXRight = initialRight.translateX;
            translateVrYRight = initialRight.translateY;
            scaleVrRight = initialRight.scale;
        }

        const previousScaleLeft = scaleVrLeft;
        const previousScaleRight = scaleVrRight;
        // Проверьте кнопки увеличения/уменьшения масштаба
        // Обновите индексы кнопок, если они не соответствуют
        if (gamepad.buttons[3].pressed) { // Обновите индексы для своего геймпада
            scaleVrLeft += zoomStepVr;
            scaleVrRight += zoomStepVr;
        }
        if (gamepad.buttons[5].pressed) {  // Обновите индексы для своего геймпада
            scaleVrLeft -= zoomStepVr;
            scaleVrRight -= zoomStepVr;
        }

        // Ограничиваем масштаб между минимальным и максимальным значениями
        scaleVrLeft = Math.min(Math.max(MIN_SCALEVr, scaleVrLeft), MAX_SCALEVr);
        scaleVrRight = Math.min(Math.max(MIN_SCALEVr, scaleVrRight), MAX_SCALEVr);
        // Центр зуммирования - центр видимой области
        const rectLeft = boardLeft.getBoundingClientRect();
        const rectRight = boardRight.getBoundingClientRect();
        const midXLeft = rectLeft.left + rectLeft.width / 2;
        const midYLeft = rectLeft.top + rectLeft.height / 2;
        const midXRight = boardRight.left + boardRight.width / 2;
        const midYRight = boardRight.top + boardRight.height / 2;
        // Вычисляем позицию относительно предыдущего масштаба
        const offsetXLeft = (midXLeft - rectLeft.left) / previousScaleLeft;
        const offsetYLeft = (midYLeft - rectLeft.top) / previousScaleLeft;
        const offsetXRight = (midXRight - rectRight.left) / previousScaleRight;
        const offsetYRight = (midYRight - rectRight.top) / previousScaleRight;
        // Корректируем translate, чтобы центр оставался на том же месте
        translateVrXLeft -= offsetXLeft * (scaleVrLeft - previousScaleLeft);
        translateVrYLeft -= offsetYLeft * (scaleVrLeft - previousScaleLeft);
        translateVrXRight -= offsetXRight * (scaleVrRight - previousScaleRight);
        translateVrYRight -= offsetYRight * (scaleVrRight - previousScaleRight);

        // Проверка осей стиков для перемещения с учетом мертвой зоны
        const moveLeftX = Math.abs(gamepad.axes[0]) > DEAD_ZONE ? gamepad.axes[0] * moveStepVr : 0;
        const moveLeftY = Math.abs(gamepad.axes[1]) > DEAD_ZONE ? gamepad.axes[1] * moveStepVr : 0;
        const moveRightX = Math.abs(gamepad.axes[0]) > DEAD_ZONE ? gamepad.axes[0] * moveStepVr : 0;
        const moveRightY = Math.abs(gamepad.axes[1]) > DEAD_ZONE ? gamepad.axes[1] * moveStepVr : 0;

        translateVrXLeft -= moveLeftX;
        translateVrYLeft -= moveLeftY;
        translateVrXRight -= moveRightX;
        translateVrYRight -= moveRightY;

        updateVRTransform(boardLeft, translateVrXLeft, translateVrYLeft, scaleVrLeft);
        updateVRTransform(boardRight, translateVrXRight, translateVrYRight, scaleVrRight);
    }

    requestAnimationFrame(handleGamepadInput);
}

Почему у меня двигается только левая половина экрана?