[standalone keyboard] keys not remapping properly

As the title suggests I’m having trouble remapping keys with the stock FW. I’m on a US keyset and layout, and wanted to move defaults from:

delete to backslash, backslash to right_shift, right_shift to delete.

the new delete and backslash locations working properly, but what should now be right_shift (just to the right of left_shift) is still acting as the delete key.

is there a problem with my matrix.h file (pasted below) or may something else be happening here?

/*
  MNT Reform 2.0 Keyboard Firmware
  See keyboard.c for Copyright
  SPDX-License-Identifier: MIT
*/

#include "keyboard.h"

// Every line of `matrix` is a row of the keyboard, starting from the top.
// Check keyboard.h for the definitions of the default rows.
uint8_t matrix[KBD_MATRIX_SZ] = {
  MATRIX_DEFAULT_ROW_1,
  MATRIX_DEFAULT_ROW_2,

  // Custom row 3
  KEY_TAB,
  KEY_Q,
  KEY_W,
  KEY_E,
  KEY_R,
  KEY_T,
  KEY_Y,
  KEY_U,
  KEY_I,
  KEY_O,
  KEY_P,
  KEY_OPENING_BRACKET_AND_OPENING_BRACE,
  KEY_CLOSING_BRACKET_AND_CLOSING_BRACE,
  KEY_DELETE,

  // Custom row 4
  HID_KEYBOARD_SC_LEFT_CONTROL,
  KEY_A,
  KEY_A,
  KEY_S,
  KEY_D,
  KEY_F,
  KEY_G,
  KEY_H,
  KEY_J,
  KEY_K,
  KEY_L,
  KEY_SEMICOLON_AND_COLON,
  KEY_APOSTROPHE_AND_QUOTE,
  KEY_ENTER,

  // Custom row 5
  HID_KEYBOARD_SC_LEFT_SHIFT,
  HID_KEYBOARD_SC_RIGHT_SHIFT,
  KEY_Z,
  KEY_X,
  KEY_C,
  KEY_V,
  KEY_B,
  KEY_N,
  KEY_M,
  HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN,
  HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN,
  KEY_SLASH_AND_QUESTION_MARK,
  HID_KEYBOARD_SC_UP_ARROW,
  KEY_BACKSLASH_AND_PIPE,

  // Custom row 6
  HID_KEYBOARD_SC_LEFT_CONTROL,
  HID_KEYBOARD_SC_LEFT_GUI,
  HID_KEYBOARD_SC_EXECUTE,
  KEY_SPACE,
  HID_KEYBOARD_SC_LEFT_ALT,
  HID_KEYBOARD_SC_RIGHT_ALT,
  KEY_SPACE,
  HID_KEYBOARD_SC_APPLICATION,
  HID_KEYBOARD_SC_RIGHT_CONTROL,
  HID_KEYBOARD_SC_LEFT_ARROW,
  HID_KEYBOARD_SC_DOWN_ARROW,
  HID_KEYBOARD_SC_RIGHT_ARROW,

  // Marker for layout editor (FIXME)
  KBD_EDITOR_MARKER
};

// When holding down HYPER
uint8_t matrix_fn[KBD_MATRIX_SZ] = {
  // Media keys on Hyper + F7-F12
  KEY_ESCAPE,
  KEY_F1,
  KEY_F2,
  KEY_F3,
  KEY_F4,
  KEY_F5,
  KEY_F6,
  HID_KEYBOARD_SC_MEDIA_BACKWARD,
  HID_KEYBOARD_SC_MEDIA_PLAY,
  HID_KEYBOARD_SC_MEDIA_FORWARD,
  HID_KEYBOARD_SC_MEDIA_MUTE,
  HID_KEYBOARD_SC_MEDIA_VOLUME_DOWN,
  HID_KEYBOARD_SC_MEDIA_VOLUME_UP,
  KEY_CIRCLE,

  MATRIX_DEFAULT_ROW_2,

  // Custom row 3
  KEY_TAB,
  KEY_Q,
  KEY_W,
  KEY_E,
  KEY_R,
  KEY_T,
  KEY_Y,
  KEY_U,
  KEY_I,
  KEY_O,
  KEY_P,
  KEY_OPENING_BRACKET_AND_OPENING_BRACE,
  KEY_CLOSING_BRACKET_AND_CLOSING_BRACE,
  KEY_DELETE,

  // Custom row 4
  HID_KEYBOARD_SC_LEFT_CONTROL,
  KEY_A,
  KEY_A,
  KEY_S,
  KEY_D,
  KEY_F,
  KEY_G,
  KEY_H,
  KEY_J,
  KEY_K,
  KEY_L,
  KEY_SEMICOLON_AND_COLON,
  KEY_APOSTROPHE_AND_QUOTE,
  KEY_ENTER,

  // Custom row 5
  HID_KEYBOARD_SC_LEFT_SHIFT,
  HID_KEYBOARD_SC_RIGHT_SHIFT,
  KEY_Z,
  KEY_X,
  KEY_C,
  KEY_V,
  KEY_B,
  KEY_N,
  KEY_M,
  HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN,
  HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN,
  KEY_SLASH_AND_QUESTION_MARK,
  HID_KEYBOARD_SC_PAGE_UP,
  KEY_BACKSLASH_AND_PIPE,

  // Custom row 6
  HID_KEYBOARD_SC_LEFT_CONTROL,
  HID_KEYBOARD_SC_LEFT_GUI,
  HID_KEYBOARD_SC_EXECUTE,
  KEY_SPACE,
  HID_KEYBOARD_SC_LEFT_ALT,
  HID_KEYBOARD_SC_RIGHT_ALT,
  KEY_SPACE,
  HID_KEYBOARD_SC_APPLICATION,
  HID_KEYBOARD_SC_RIGHT_CONTROL,
  HID_KEYBOARD_SC_HOME,
  HID_KEYBOARD_SC_PAGE_DOWN,
  HID_KEYBOARD_SC_END
};

// Second layer (toggled by HYPER+CIRCLE)
uint8_t matrix_fn_toggled[KBD_MATRIX_SZ] = {
  // Custom top row
  KEY_ESCAPE,
  KEY_F1,
  KEY_F2,
  KEY_F3,
  KEY_F4,
  KEY_F5,
  KEY_F6,
  HID_KEYBOARD_SC_MEDIA_BACKWARD,
  HID_KEYBOARD_SC_MEDIA_PLAY,
  HID_KEYBOARD_SC_MEDIA_FORWARD,
  HID_KEYBOARD_SC_MEDIA_MUTE,
  HID_KEYBOARD_SC_MEDIA_VOLUME_DOWN,
  HID_KEYBOARD_SC_MEDIA_VOLUME_UP,
  KEY_CIRCLE,

  MATRIX_DEFAULT_ROW_2,

  // Custom row 3
  KEY_TAB,
  KEY_Q,
  KEY_W,
  KEY_E,
  KEY_R,
  KEY_T,
  KEY_Y,
  KEY_U,
  KEY_I,
  KEY_O,
  KEY_P,
  KEY_OPENING_BRACKET_AND_OPENING_BRACE,
  KEY_CLOSING_BRACKET_AND_CLOSING_BRACE,
  KEY_DELETE,

    // Custom row 4
  HID_KEYBOARD_SC_LEFT_CONTROL,
  KEY_A,
  KEY_A,
  KEY_S,
  KEY_D,
  KEY_F,
  KEY_G,
  KEY_H,
  KEY_J,
  KEY_K,
  KEY_L,
  KEY_SEMICOLON_AND_COLON,
  KEY_APOSTROPHE_AND_QUOTE,
  KEY_ENTER,

  // Custom row 5
  HID_KEYBOARD_SC_LEFT_SHIFT,
  HID_KEYBOARD_SC_RIGHT_SHIFT,
  KEY_Z,
  KEY_X,
  KEY_C,
  KEY_V,
  KEY_B,
  KEY_N,
  KEY_M,
  HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN,
  HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN,
  KEY_SLASH_AND_QUESTION_MARK,
  HID_KEYBOARD_SC_PAGE_UP,
  KEY_BACKSLASH_AND_PIPE,

  // Custom row 6
  HID_KEYBOARD_SC_LEFT_CONTROL,
  HID_KEYBOARD_SC_LEFT_GUI,
  HID_KEYBOARD_SC_EXECUTE,
  KEY_SPACE,
  HID_KEYBOARD_SC_LEFT_ALT,
  HID_KEYBOARD_SC_RIGHT_ALT,
  KEY_SPACE,
  HID_KEYBOARD_SC_APPLICATION,
  HID_KEYBOARD_SC_RIGHT_CONTROL,
  HID_KEYBOARD_SC_HOME,
  HID_KEYBOARD_SC_PAGE_DOWN,
  HID_KEYBOARD_SC_END
};

I’ve found what was happening here.

lines 289-196 of keyboard.c hardcode some key values depending on which variant your keyboard is. mine had KBD_VARIANT_QWERTY_US defined in constants.h so my delete key was hardcoded.