src/Keyboard.js
function update_modifier_state(e) {

        // Get state
        var state = Guacamole.Keyboard.ModifierState.fromKeyboardEvent(e);

        // Release alt if implicitly released
        if (guac_keyboard.modifiers.alt && state.alt === false) {
            guac_keyboard.release(0xFFE9); // Left alt
            guac_keyboard.release(0xFFEA); // Right alt
            guac_keyboard.release(0xFE03); // AltGr
        }

        // Release shift if implicitly released
        if (guac_keyboard.modifiers.shift && state.shift === false) {
            guac_keyboard.release(0xFFE1); // Left shift
            guac_keyboard.release(0xFFE2); // Right shift
        }

        // Release ctrl if implicitly released
        if (guac_keyboard.modifiers.ctrl && state.ctrl === false) {
            guac_keyboard.release(0xFFE3); // Left ctrl 
            guac_keyboard.release(0xFFE4); // Right ctrl 
        }

        // Release meta if implicitly released
        if (guac_keyboard.modifiers.meta && state.meta === false) {
            guac_keyboard.release(0xFFE7); // Left meta 
            guac_keyboard.release(0xFFE8); // Right meta 
        }

        // Release hyper if implicitly released
        if (guac_keyboard.modifiers.hyper && state.hyper === false) {
            guac_keyboard.release(0xFFEB); // Left hyper
            guac_keyboard.release(0xFFEC); // Right hyper
        }

        // Update state
        guac_keyboard.modifiers = state;

    }
function update_modifier_state(e) {

        // Get state
        var state = Guacamole.Keyboard.ModifierState.fromKeyboardEvent(e);

        // Release alt if implicitly released
        if (guac_keyboard.modifiers.alt && state.alt === false) {
            guac_keyboard.release(0xFFE9); // Left alt
            guac_keyboard.release(0xFFEA); // Right alt
            guac_keyboard.release(0xFE03); // AltGr
        }

        // Release shift if implicitly released
        if (guac_keyboard.modifiers.shift && state.shift === false) {
            guac_keyboard.release(0xFFE1); // Left shift
            guac_keyboard.release(0xFFE2); // Right shift
        }

        // Release ctrl if implicitly released
        if (guac_keyboard.modifiers.ctrl && state.ctrl === false) {
            guac_keyboard.release(0xFFE3); // Left ctrl 
            guac_keyboard.release(0xFFE4); // Right ctrl 
        }

        // Release meta if implicitly released
        if (guac_keyboard.modifiers.meta && state.meta === false) {
            guac_keyboard.release(0xFFE7); // Left meta 
            guac_keyboard.release(0xFFE8); // Right meta 
        }

        // Release hyper if implicitly released
        if (guac_keyboard.modifiers.hyper && state.hyper === false) {
            guac_keyboard.release(0xFFEB); // Left hyper
            guac_keyboard.release(0xFFEC); // Right hyper
        }

        // Update state
        guac_keyboard.modifiers = state;

    }
function update_modifier_state ( e ) { // Get state var state = Guacamole . Keyboard . ModifierState . fromKeyboardEvent ( e ) ; // Release alt if implicitly released if ( guac_keyboard . modifiers . alt && state . alt === false ) { guac_keyboard . release ( 0xFFE9 ) ; // Left alt guac_keyboard . release ( 0xFFEA ) ; // Right alt guac_keyboard . release ( 0xFE03 ) ; // AltGr } // Release shift if implicitly released if ( guac_keyboard . modifiers . shift && state . shift === false ) { guac_keyboard . release ( 0xFFE1 ) ; // Left shift guac_keyboard . release ( 0xFFE2 ) ; // Right shift } // Release ctrl if implicitly released if ( guac_keyboard . modifiers . ctrl && state . ctrl === false ) { guac_keyboard . release ( 0xFFE3 ) ; // Left ctrl  guac_keyboard . release ( 0xFFE4 ) ; // Right ctrl  } // Release meta if implicitly released if ( guac_keyboard . modifiers . meta && state . meta === false ) { guac_keyboard . release ( 0xFFE7 ) ; // Left meta  guac_keyboard . release ( 0xFFE8 ) ; // Right meta  } // Release hyper if implicitly released if ( guac_keyboard . modifiers . hyper && state . hyper === false ) { guac_keyboard . release ( 0xFFEB ) ; // Left hyper guac_keyboard . release ( 0xFFEC ) ; // Right hyper } // Update state guac_keyboard . modifiers = state ; }
Given a keyboard event, updates the local modifier state and remote
key state based on the modifier flags within the event. This function
pays no attention to keycodes.

@private
@param {KeyboardEvent} e
The keyboard event containing the flags to update.
Given a keyboard event updates the local modifier state and remote key state based on the modifier flags within the event . This function pays no attention to keycodes .