// These are to create keys which don't exist in a locale.
// so that we can create alternate maps to qwerty, azerty, or whatever.
// Key name,
// unshifted key and it's required mods.
// the desired shifted keys and it's required mods.

// for dvorak on bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
  MK_KEY(BP_DV_1,    BP_DQUO, MOD_LSFT,      BP_DCIR, MOD_LSFT)
  MK_KEY(BP_DV_2,    BP_LDAQ, MOD_LSFT,      BP_AT, MOD_NONE)
  MK_KEY(BP_DV_3,    BP_RDAQ, MOD_LSFT,      BP_DLR, MOD_LSFT)
  MK_KEY(BP_DV_4,    BP_LPRN, MOD_LSFT,      BP_DLR, MOD_NONE)
  MK_KEY(BP_DV_5,    BP_RPRN, MOD_LSFT,      BP_PERC, MOD_NONE)
  MK_KEY(BP_DV_6,    BP_AT, MOD_LSFT,        BP_AT, MOD_BIT(KC_RALT))
  MK_KEY(BP_DV_7,    BP_PLUS, MOD_LSFT,      BP_P, MOD_BIT(KC_RALT))
  MK_KEY(BP_DV_8,    BP_MINS, MOD_LSFT,      BP_ASTR, MOD_NONE)
  MK_KEY(BP_DV_9,    BP_SLSH, MOD_LSFT,      BP_LPRN, MOD_NONE)
  MK_KEY(BP_DV_0,    BP_ASTR, MOD_LSFT,      BP_RPRN, MOD_NONE)

  MK_KEY(BP_DV_GRV,  BP_PERC, MOD_LSFT,      BP_K, MOD_BIT(KC_RALT))
  MK_KEY(BP_DV_SCLN, BP_COMM, MOD_LSFT,      BP_DOT, MOD_LSFT)
  MK_KEY(BP_DV_SLSH, BP_SLSH, MOD_NONE,     BP_QUOT, MOD_LSFT)
  //MK_KEY(BP_DV_BSLS, BP_AGRV, MOD_BIT(KC_RALT), BP_B, MOD_BIT(KC_RALT))
  MK_KEY(BP_DV_EQL,  BP_EQL, MOD_NONE,       BP_PLUS, MOD_NONE)
  MK_KEY(BP_DV_COMM, BP_COMM, MOD_NONE,      BP_LDAQ, MOD_BIT(KC_RALT))
  MK_KEY(BP_DV_DOT,  BP_DOT, MOD_NONE,       BP_RDAQ, MOD_BIT(KC_RALT))
  MK_KEY(BP_DV_QUOT, BP_QUOT, MOD_NONE,      BP_DQUO, MOD_NONE)
  MK_KEY(BP_DV_MINS, BP_MINS, MOD_NONE,      KC_SPC, MOD_BIT(KC_RALT))
#endif

#if defined(BEAKL15_LAYER_ENABLE) || defined(BEAKL19_LAYER_ENABLE)
  // Keys for BEAKL 15, 19 on Qwerty
  MK_KEY(KC_BK_DOT,  KC_DOT, MOD_NONE,    KC_2, MOD_LSFT)
  MK_KEY(KC_BK_COMM, KC_COMM, MOD_NONE,  KC_1, MOD_LSFT)
  MK_KEY(KC_BK_QUOT, KC_QUOT, MOD_NONE,   KC_GRV, MOD_NONE)

  MK_KEY(US_BK_DOT,  KC_DOT, MOD_NONE,    KC_2, MOD_LSFT)
  MK_KEY(US_BK_COMM, KC_COMM, MOD_NONE,  KC_1, MOD_LSFT)
  MK_KEY(US_BK_QUOT, KC_QUOT, MOD_NONE,   KC_GRV, MOD_NONE)

  // Keys for BEAKL WI on Qwerty
  MK_KEY(KC_BKW_DOT,  KC_DOT, MOD_NONE,   KC_GRV, MOD_NONE)
  MK_KEY(KC_BKW_COMM, KC_COMM, MOD_NONE,  KC_TILD, MOD_NONE)
  MK_KEY(KC_BKW_COLN, KC_SCLN, MOD_LSFT,  KC_SCLN, MOD_NONE)

#  if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
  // Keys for BEAKL on BEPO
  MK_KEY(BP_BK_DOT,  BP_DOT, MOD_NONE,    BP_AT, MOD_NONE)
  MK_KEY(BP_BK_COMM, BP_COMM, MOD_NONE,   BP_EXLM, MOD_NONE)
  MK_KEY(BP_BK_QUOT, BP_QUOT, MOD_NONE,   BP_PERC, MOD_LSFT)


#    ifdef BEAKLWI_LAYER_ENABLE
  // Keys for BEAKL WI on BEPO
  MK_KEY(BP_BKW_DOT,  BP_DOT, MOD_NONE,   BP_GRV, MOD_NONE)
  MK_KEY(BP_BKW_COMM, BP_COMM, MOD_NONE,  BP_TILD, MOD_NONE)
  MK_KEY(BP_BKW_COLN, BP_COLN, MOD_LSFT,  BP_SCLN, MOD_NONE)
#    endif

  // Keys for BEAKL 27 on BEPO
#    ifdef BEAKL27_LAYER_ENABLE
  MK_KEY(BP_BK2_DOT,  BP_DOT, MOD_NONE,    BP_GRV, MOD_NONE)
  MK_KEY(BP_BK2_COMM, BP_COMM, MOD_NONE,   BP_QUES, MOD_NONE)
  MK_KEY(BP_BK2_EXLM, BP_EXLM, MOD_NONE,   BP_PERC, MOD_LSFT)
  MK_KEY(BP_BK2_QUOT, BP_QUOT, MOD_NONE,   BP_QUOT, MOD_NONE)
#    endif
#  endif
#endif

#ifdef BEAKL27_LAYER_ENABLE
  // Keys for BEAKL 27 on Qwerty
  /* // altered shifted pairs: dot = .`  comma = ,?   dquot = "! */
  MK_KEY(KC_BK2_DOT, KC_DOT, MOD_NONE,    KC_GRV, MOD_NONE)
  MK_KEY(KC_BK2_COMM, KC_COMM, MOD_NONE,  KC_QUES, MOD_NONE)
  MK_KEY(KC_BK2_EXLM, KC_EXLM, MOD_NONE,   KC_DQUO, MOD_NONE)
  MK_KEY(KC_BK2_QUOT, KC_QUOT, MOD_NONE,   KC_QUOT, MOD_NONE)

  MK_KEY(US_BK2_DOT, US_DOT, MOD_NONE,    US_GRV, MOD_NONE)
  MK_KEY(US_BK2_COMM, US_COMM, MOD_NONE,  US_QUES, MOD_NONE)
  MK_KEY(US_BK2_EXLM, US_EXLM, MOD_NONE,   US_DQUO, MOD_NONE)
  MK_KEY(US_BK2_QUOT, US_QUOT, MOD_NONE,   US_QUOT, MOD_NONE)
#endif


// shifted pairs: dot = .` comma = ,~  colon = :;

#if defined(HD_NEU_LAYER_ENABLE) ||        \
    defined(HD_NEU_NARROW_LAYER_ENABLE) || \
    defined(HD_GOLD_LAYER_ENABLE) ||       \
    defined(HD_SILVER_LAYER_ENABLE) ||     \
    defined(HD_BRONZE_LAYER_ENABLE) ||     \
    defined(HD_PLATINUM_LAYER_ENABLE) ||   \
    defined(HD_REF_LAYER_ENABLE)

// hands down alterations.
/* alt shifts   ;: .& /\* '? "! ,| -+ */
// for en qwerty
  MK_KEY(KC_HD_DQUO, KC_QUOT, MOD_LSFT, KC_1,     MOD_LSFT) // "!
  MK_KEY(KC_HD_QUOT, KC_QUOT, MOD_NONE, KC_SLSH,  MOD_LSFT) // '?

  MK_KEY(KC_HD_DOT,  KC_DOT,  MOD_NONE, KC_7,     MOD_LSFT) // .&
  MK_KEY(KC_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN,     MOD_LSFT) // ;:
  MK_KEY(KC_HD_COMM, KC_COMM, MOD_NONE, KC_BSLS,  MOD_LSFT) // ,|
  MK_KEY(KC_HD_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
  MK_KEY(KC_HD_SLSH, KC_SLSH, MOD_NONE, KC_8,     MOD_LSFT) // /*

  // for us international
  MK_KEY(US_HD_DQUO, US_QUOT, MOD_LSFT, US_1,     MOD_LSFT)
  MK_KEY(US_HD_QUOT, US_QUOT, MOD_NONE, KC_SLSH,  MOD_LSFT)

  MK_KEY(US_HD_DOT,  US_DOT,  MOD_NONE, US_7,     MOD_LSFT)
  MK_KEY(US_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN,  MOD_LSFT) // ;:
  MK_KEY(US_HD_COMM, US_COMM, MOD_NONE, US_BSLS,  MOD_LSFT)
  MK_KEY(US_HD_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT)
  MK_KEY(US_HD_SLSH, US_SLSH, MOD_NONE, US_8,     MOD_LSFT)

// for bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
  MK_KEY(BP_HD_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE)
  MK_KEY(BP_HD_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
  MK_KEY(BP_HD_SCLN, BP_SCLN, MOD_NONE, BP_COLN, MOD_NONE) // ;:

  MK_KEY(BP_HD_DOT,  BP_DOT,  MOD_NONE, BP_AMPR, MOD_NONE)
  MK_KEY(BP_HD_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE)
  MK_KEY(BP_HD_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE)
  MK_KEY(BP_HD_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE)
#endif

#endif


/* alt shifts   ;: .& /\* '? "! ,| -+  */
#ifdef HD_DASH_LAYER_ENABLE
// DASH and Elan have these reversed from the metals.
/* //alt shift keys. "? '! */
  MK_KEY(KC_HD_D_DQUO, KC_DQUO, MOD_NONE, KC_SLSH, MOD_LSFT) // "?
  MK_KEY(KC_HD_D_QUOT, KC_QUOT, MOD_NONE, KC_1,    MOD_LSFT) // '!

  MK_KEY(KC_HD_D_DOT,  KC_DOT,  MOD_NONE, KC_7,     MOD_LSFT) // .&
  MK_KEY(KC_HD_D_COMM, KC_COMM, MOD_NONE, KC_BSLS,  MOD_LSFT) // ,|
  MK_KEY(KC_HD_D_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
  MK_KEY(KC_HD_D_SLSH, KC_SLSH, MOD_NONE, KC_8,     MOD_LSFT) // /*

  // for us international
  MK_KEY(US_HD_D_DQUO, US_QUOT, MOD_LSFT, KC_SLSH,  MOD_LSFT)
  MK_KEY(US_HD_D_QUOT, US_QUOT, MOD_NONE, US_1,     MOD_LSFT)

  MK_KEY(US_HD_D_DOT,  US_DOT,  MOD_NONE, US_7,     MOD_LSFT)
  MK_KEY(US_HD_D_COMM, US_COMM, MOD_NONE, US_BSLS,  MOD_LSFT)
  MK_KEY(US_HD_D_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT)
  MK_KEY(US_HD_D_SLSH, US_SLSH, MOD_NONE, US_8,     MOD_LSFT)

// for bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
  MK_KEY(BP_HD_D_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE)
  MK_KEY(BP_HD_D_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)

  MK_KEY(BP_HD_D_DOT,  BP_DOT,  MOD_NONE, BP_AMPR, MOD_NONE)
  MK_KEY(BP_HD_D_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE)
  MK_KEY(BP_HD_D_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE)
  MK_KEY(BP_HD_D_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE)
#endif

#endif

#ifdef HD_ELAN_LAYER_ENABLE
// Elan has alt shift of comma and dot on the thumb.
// en
  MK_KEY(KC_HD_E_DQUO, KC_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
  MK_KEY(KC_HD_E_QUOT, KC_QUOT, MOD_NONE, KC_1, MOD_LSFT)
// the rest is the same
  MK_KEY(KC_HD_E_MINS,    KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
  MK_KEY(KC_HD_E_SLSH,    KC_SLSH, MOD_NONE, KC_8,     MOD_LSFT) // /*
// until .: and ,;
  MK_KEY(KC_HD_E_DOT,   KC_DOT,  MOD_NONE, KC_SCLN, MOD_LSFT) // .:
  MK_SKEY(KC_HD_E_COMM, KC_COMM, KC_SCLN) // ,;
/* (< {[ */
  MK_KEY(KC_HD_E_LPRN, KC_LPRN, MOD_NONE, KC_COMM, MOD_LSFT)
  MK_KEY(KC_HD_E_LCBR, KC_LCBR, MOD_NONE, KC_LBRC, MOD_NONE )

// US-intl
  MK_KEY(US_HD_E_DQUO, US_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
  MK_KEY(US_HD_E_QUOT, US_QUOT, MOD_NONE, US_1, MOD_LSFT)
// the rest is the same
  MK_KEY(US_HD_E_MINS,    US_MINS, MOD_NONE, US_EQL, MOD_LSFT) // -+
  MK_KEY(US_HD_E_SLSH,    US_SLSH, MOD_NONE, US_8,     MOD_LSFT) // /*
// until .: and ,;
  MK_KEY(US_HD_E_DOT,   KC_DOT,  MOD_NONE, US_SCLN, MOD_LSFT) // .:
  MK_SKEY(US_HD_E_COMM, US_COMM, US_SCLN) // ,;
/* (< {[ */
  MK_KEY(US_HD_E_LPRN, US_LPRN, MOD_NONE, US_COMM, MOD_LSFT)
  MK_KEY(US_HD_E_LCBR, US_LCBR, MOD_NONE, US_LBRC, MOD_NONE )

// bepo
#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
  MK_KEY(BP_HD_E_DQUO, BP_DQUO, MOD_NONE, BP_SLSH, MOD_NONE)
  MK_KEY(BP_HD_E_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
// the rest is the same
  MK_KEY(BP_HD_E_MINS,    BP_MINS, MOD_NONE,   BP_EQL, MOD_NONE) // -+
  MK_KEY(BP_HD_E_SLSH,    BP_SLSH, MOD_NONE,   BP_ASTR,  MOD_NONE) // /*
// until .: and ,;
  MK_KEY(BP_HD_E_DOT,   KC_DOT,  MOD_NONE, BP_SCLN, MOD_LSFT) // .:
  MK_SKEY(BP_HD_E_COMM, BP_COMM, BP_SCLN) // ,;
/* (< {[ */
  MK_KEY(BP_HD_E_LPRN, BP_LPRN, MOD_NONE, BP_COMM, MOD_LSFT)
  MK_KEY(BP_HD_E_LCBR, BP_LCBR, MOD_NONE, BP_LBRC, MOD_NONE )
#endif
#endif