text: /* @flow */
  
  import config from 'core/config'
  import { hyphenate } from 'shared/util'
  
  function isKeyNotMatch<T>(expect: T | Array<T>, actual: T): boolean {
    if (Array.isArray(expect)) {
      return expect.indexOf(actual) === -1
    } else {
      return expect !== actual
    }
  }
  
  /**
   * Runtime helper for checking keyCodes from config.
   * exposed as Vue.prototype._k
   * passing in eventKeyName as last argument separately for backwards compat
   */
  export function checkKeyCodes(
    eventKeyCode: number,
    key: string,
    builtInKeyCode?: number | Array<number>,
    eventKeyName?: string,
    builtInKeyName?: string | Array<string>
  ): ?boolean {
    const mappedKeyCode = config.keyCodes[key] || builtInKeyCode
    if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
      return isKeyNotMatch(builtInKeyName, eventKeyName)
    } else if (mappedKeyCode) {
      return isKeyNotMatch(mappedKeyCode, eventKeyCode)
    } else if (eventKeyName) {
      return hyphenate(eventKeyName) !== key
    }
  }
  