Appach Guacomole JS RDP масштабирование окна - PullRequest
0 голосов
/ 08 апреля 2020

Я использую javascript Apache Guacamole Client на моем веб-сайте для контроля RDP. Я столкнулся с проблемой - размер окна не изменился. Я пытался использовать «масштаб» метод отображения гуакамоле:

guac = new Guacamole.Client(tunnel);
...
guac.getDisplay().scale(myScale);

Этот метод изменяет размер дисплея. Однако при изменении размера координаты мыши сохраняются, как на клиенте. Таким образом, указатель мыши на клиенте и на веб-экране не совпадают.

enter image description here

1 Ответ

0 голосов
/ 08 апреля 2020

Исправление также применяет масштабирование к координатам мыши:

    let scale = 1;
    $(document).ready(function ($) {

        $(window).resize(function () {
           nsZoomZoom();
        });

        //Get screen resolution.
        origHeigth = window.screen.height * window.devicePixelRatio;
        origWidth = window.screen.width * window.devicePixelRatio;

        nsZoomZoom();

        function nsZoomZoom() {
            //Calculating scalse
            let htmlWidth = $(window).innerWidth();
            var htmlHeigth = $(window).height();
            var xscale = htmlWidth / origWidth;
            var yscale = htmlHeigth / origHeigth;
            //This is done to handle both X and Y axis slacing
            scale = Math.min(xscale, yscale);
            //Add 10% to scale because window always less than screen resolution
            scale += scale / 10;
            //Change Cuacamole Display scale
            guac.getDisplay().scale(scale);  
        }
    });

        ...   
        guac = new Guacamole.Client(tunnel);

        const guacEl = guac.getDisplay().getElement();
        rootEl.appendChild(guacEl);

        mouse = new Guacamole.Mouse(guacEl);
        mouse.onmousedown = mouse.onmouseup = (state) => guac.sendMouseState(state); 
        //The fix is here
        mouse.onmousemove = (state) => {
            updateMouseState(state);
        }; 

   //Handle mouse coordinates scaling         
    let updateMouseState = (mouseState) => {
        mouseState.y =  mouseState.y / scale;
        mouseState.x =  mouseState.x / scale;
        guac.sendMouseState(mouseState);
    }

Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...