/*
 * Copyright (c) 2020 The ZMK Contributors
 *
 * SPDX-License-Identifier: MIT
 */

#include <dt-bindings/zmk/matrix-transform.h>

/ {
	chosen {
		zmk,kscan = &kscan0;
		zmk,matrix_transform = &default_transform;
	};

	kscan0: kscan {
		compatible = "zmk,kscan-gpio-matrix";
		label = "KSCAN";

		diode-direction = "col2row";
		row-gpios
			= <&gpio0 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio0 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio1 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio0 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			, <&gpio0 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
			;
		col-gpios
			= <&gpio0 19 GPIO_ACTIVE_HIGH>
			, <&gpio0 20 GPIO_ACTIVE_HIGH>
			, <&gpio0 21 GPIO_ACTIVE_HIGH>
			, <&gpio0 22 GPIO_ACTIVE_HIGH>
			, <&gpio0 23 GPIO_ACTIVE_HIGH>
			, <&gpio0 24 GPIO_ACTIVE_HIGH>
			, <&gpio0 25 GPIO_ACTIVE_HIGH>
			, <&gpio0 26 GPIO_ACTIVE_HIGH>
			;
	};

	default_transform: keymap_transform_0 {
		compatible = "zmk,matrix-transform";
		columns = <8>;
		rows = <8>;
// | MX1  | MX2  | MX3  | MX4  | MX5  | MX6  | MX7  | MX8  | MX9  | MX10 | MX11 | MX12 | MX13 |    MX14     |
// |   MX15   | MX16 | MX17 | MX18 | MX19 | MX20 | MX21 | MX22 | MX23 | MX24 | MX25 | MX26 | MX27 |  MX28   |
// |    MX29    | MX30 | MX31 | MX32 | MX33 | MX34 | MX35 | MX36 | MX37 | MX38 | MX39 | MX40 |     MX41     |
// |     MX42      | MX43 | MX44 | MX45 | MX46 | MX47 | MX48 | MX49 | MX50 | MX51 | MX52 |       MX53       |
// |  MX54  |  MX55  |  MX56  |                  MX57                   |  MX58  |  MX59  |  MX60  |  MX61  |
        map = <
RC(0,0)  RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4)     RC(1,5)
RC(3,3)    RC(3,2) RC(3,1) RC(3,0) RC(2,7) RC(2,6) RC(2,5) RC(2,4) RC(2,3) RC(2,2) RC(2,1) RC(2,0) RC(1,7)   RC(1,6)
RC(3,4)     RC(3,5) RC(3,6) RC(3,7) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,7)          RC(5,0)
RC(6,4)       RC(6,3) RC(6,2) RC(6,1) RC(6,0) RC(5,7) RC(5,6) RC(5,5) RC(5,4) RC(5,3) RC(5,2)                RC(5,1)
RC(6,5)    RC(6,6)   RC(6,7)                     RC(7,0)                    RC(7,1)    RC(7,2)    RC(7,3)    RC(7,4)
        >;
	};

	bt_unpair_combo: bt_unpair_combo {
		compatible = "zmk,bt-unpair-combo";
		key-positions = <0 53>;
	};

};