summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/amjpad/amjpad.h17
-rw-r--r--keyboards/amjpad/keymaps/max/keymap.c102
2 files changed, 118 insertions, 1 deletions
diff --git a/keyboards/amjpad/amjpad.h b/keyboards/amjpad/amjpad.h
index b9b4d3686a..ffba1c9b94 100644
--- a/keyboards/amjpad/amjpad.h
+++ b/keyboards/amjpad/amjpad.h
@@ -39,7 +39,22 @@
{k40, k41, k42, k43}, \
{k50, XXX, k52, XXX} \
}
-
+#define MAXKEYMAP( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53\
+) \
+{ \
+ {k00, k01, k02, k03}, \
+ {k10, k11, k12, k13}, \
+ {k20, k21, k22, k23}, \
+ {k30, k31, k32, k33}, \
+ {k40, k41, k42, k43}, \
+ {k50, k51, k52, k53} \
+}
void matrix_init_user(void);
void matrix_scan_user(void);
diff --git a/keyboards/amjpad/keymaps/max/keymap.c b/keyboards/amjpad/keymaps/max/keymap.c
new file mode 100644
index 0000000000..926a494a90
--- /dev/null
+++ b/keyboards/amjpad/keymaps/max/keymap.c
@@ -0,0 +1,102 @@
+#include "amjpad.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+#endif
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+
+#define _______ KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,-------------------.
+ * |Esc |Setp| - | = |
+ * |----|----|----|----|
+ * | F1 | F2 | F3 | F4 |
+ * |----|----|----|----|
+ * | 7 | 8 | 9 | - |
+ * |----|----|----|----|
+ * | 4 | 5 | 6 | LF |
+ * |----|----|----|----|
+ * | 1 | 2 | 3 | \ |
+ * |----|----|----|----|
+ * |Left|Down| Up |Rght|
+ * `-------------------'
+ */
+
+[_BL] = MAXKEYMAP(
+
+ KC_ESC, KC_TAB, KC_MINS,KC_EQL, \
+ KC_F1, KC_F2, KC_F3, KC_F4, \
+ KC_P7, KC_P8, KC_P9, KC_PMNS, \
+ KC_P4, KC_P5, KC_P6, KC_PENT, \
+ KC_P1, KC_P2, KC_P3, KC_BSLS, \
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,-------------------.
+ * |Esc |TAB |BS | = |
+ * |----|----|----|----|
+ * | NL | / | * | - |
+ * |----|----|----|----|
+ * | 7 | 8 | 9 | |
+ * |----|----|----|RST |
+ * | 4 | 5 | 6 | |
+ * |----|----|----|----|
+ * | 1 | 2 | 3 | |
+ * |----|----|----| En |
+ * | 0 |./FN| |
+ * `-------------------'
+ */
+[_FL] = MAXKEYMAP(
+
+ KC_ESC,KC_TAB,KC_BSPC,KC_PEQL, \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
+ KC_P7, KC_P8, KC_P9, RESET, \
+ KC_P4, KC_P5, KC_P6, KC_PENT, \
+ KC_P1, KC_P2, KC_P3, KC_PENT, \
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT),
+};
+
+enum function_id {
+ SHIFT_ESC,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(SHIFT_ESC),
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ static uint8_t shift_esc_shift_mask;
+ switch (id) {
+ case SHIFT_ESC:
+ shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (shift_esc_shift_mask) {
+ add_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ add_key(KC_ESC);
+ send_keyboard_report();
+ }
+ } else {
+ if (shift_esc_shift_mask) {
+ del_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ESC);
+ send_keyboard_report();
+ }
+ }
+ break;
+ }
+}