diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-09-08 10:53:41 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-08 10:53:41 -0400 | 
| commit | 36fc5abae543840484b3d8f7abff85f57de66ada (patch) | |
| tree | d8ce5b59ca26e8b91957989a775cb75a76c3d44a /ext/mixed/js | |
| parent | 0a5e832dfddcc6184410e8836cc8dea030457486 (diff) | |
Modifier key refactor (#784)
* Add functions for getting keyboard key information
* Use os + DocumentUtil to get modifier key names
* Remove keyboard modifier info from environment info
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/document-util.js | 40 | ||||
| -rw-r--r-- | ext/mixed/js/environment.js | 61 | 
2 files changed, 41 insertions, 60 deletions
| diff --git a/ext/mixed/js/document-util.js b/ext/mixed/js/document-util.js index ba39942d..0b72ff9a 100644 --- a/ext/mixed/js/document-util.js +++ b/ext/mixed/js/document-util.js @@ -259,6 +259,46 @@ class DocumentUtil {          return false;      } +    static getModifierKeys(os) { +        switch (os) { +            case 'win': +                return [ +                    ['alt', 'Alt'], +                    ['ctrl', 'Ctrl'], +                    ['shift', 'Shift'], +                    ['meta', 'Windows'] +                ]; +            case 'mac': +                return [ +                    ['alt', 'Opt'], +                    ['ctrl', 'Ctrl'], +                    ['shift', 'Shift'], +                    ['meta', 'Cmd'] +                ]; +            case 'linux': +            case 'openbsd': +            case 'cros': +            case 'android': +                return [ +                    ['alt', 'Alt'], +                    ['ctrl', 'Ctrl'], +                    ['shift', 'Shift'], +                    ['meta', 'Super'] +                ]; +            default: // 'unknown', etc +                return [ +                    ['alt', 'Alt'], +                    ['ctrl', 'Ctrl'], +                    ['shift', 'Shift'], +                    ['meta', 'Meta'] +                ]; +        } +    } + +    static isMetaKeySupported(os, browser) { +        return !(browser === 'firefox' || browser === 'firefox-mobile') || os === 'mac'; +    } +      // Private      _setImposterStyle(style, propertyName, value) { diff --git a/ext/mixed/js/environment.js b/ext/mixed/js/environment.js index 1f4038d2..3ed9f5cf 100644 --- a/ext/mixed/js/environment.js +++ b/ext/mixed/js/environment.js @@ -33,11 +33,9 @@ class Environment {      async _loadEnvironmentInfo() {          const browser = await this._getBrowser();          const os = await this._getOperatingSystem(); -        const modifierInfo = this._getModifierInfo(browser, os);          return {              browser, -            platform: {os}, -            modifiers: modifierInfo +            platform: {os}          };      } @@ -91,61 +89,4 @@ class Environment {              return 'chrome';          }      } - -    _getModifierInfo(browser, os) { -        let osKeys; -        let separator; -        switch (os) { -            case 'win': -                separator = ' + '; -                osKeys = [ -                    ['alt', 'Alt'], -                    ['ctrl', 'Ctrl'], -                    ['shift', 'Shift'], -                    ['meta', 'Windows'] -                ]; -                break; -            case 'mac': -                separator = ''; -                osKeys = [ -                    ['alt', '⌥'], -                    ['ctrl', '⌃'], -                    ['shift', '⇧'], -                    ['meta', '⌘'] -                ]; -                break; -            case 'linux': -            case 'openbsd': -            case 'cros': -            case 'android': -                separator = ' + '; -                osKeys = [ -                    ['alt', 'Alt'], -                    ['ctrl', 'Ctrl'], -                    ['shift', 'Shift'], -                    ['meta', 'Super'] -                ]; -                break; -            default: // 'unknown', etc -                separator = ' + '; -                osKeys = [ -                    ['alt', 'Alt'], -                    ['ctrl', 'Ctrl'], -                    ['shift', 'Shift'], -                    ['meta', 'Meta'] -                ]; -                break; -        } - -        const isFirefox = (browser === 'firefox' || browser === 'firefox-mobile'); -        const keys = []; - -        for (const [value, name] of osKeys) { -            // Firefox doesn't support event.metaKey on platforms other than macOS -            if (value === 'meta' && isFirefox && os !== 'mac') { continue; } -            keys.push({value, name}); -        } - -        return {keys, separator}; -    }  } |