#include "chocopad.h"

#define _BASE 0
#define _FN1 1
#define _FN2 2

#define KC_L1 LT(1, KC_P0)
#define KC_L2 LT(2, KC_SPC)
#define KC_MAC1 ADMIN
#define KC_MAC2 SMSPC
#define KC_M192 M192
#define KC_M255 M255

enum custom_keycodes {
  NUMPAD = SAFE_RANGE,
  ADMIN,
  SMSPC,
  M192,
  M255
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [_BASE] = LAYOUT_ortho_4x4(
    KC_P7,   KC_P8,   KC_P9,   KC_BSPC,
    KC_P4,   KC_P5,   KC_P6,   KC_TAB ,
    KC_P1,   KC_P2,   KC_P3,   KC_PENT,
    KC_L1,   KC_L2,   KC_PDOT, KC_PSLS
  ),

  [_FN1] = LAYOUT_ortho_4x4(
    KC_ESC,  KC_MAC1, KC_MAC2, KC_DEL ,
    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT,
    KC_M192, KC_M255, XXXXXXX, XXXXXXX,
    _______, XXXXXXX, _______, XXXXXXX
  ),

  [_FN2] = LAYOUT_ortho_4x4(
    RESET,   XXXXXXX, XXXXXXX, XXXXXXX,
    RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
    RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
    BL_STEP, _______, XXXXXXX, XXXXXXX
  )

};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
    case ADMIN:
      if (record->event.pressed) {
	SEND_STRING("Administrator");
      }
      return false;
      break;
    case SMSPC:
      if (record->event.pressed) {
	SEND_STRING("Simspace1!");
      }
      return false;
      break;
    case M192:
      if (record->event.pressed) {
	SEND_STRING("192.168.");
      }
      return false;
      break;
    case M255:
      if (record->event.pressed) {
	SEND_STRING("255");
      }
      return false;
      break;
  }
  return true;
};