# Easy AVR USB Keyboard Firmware Keymapper
# Copyright (C) 2013-2016 David Howland
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program.  If not, see <http://www.gnu.org/licenses/>.
"""Keyboard definition for the Planet 6 custom keyboard."""

import easykeymap.templates.ATmega32U4_16MHz_TKL as firmware

from easykeymap.ioports import *
from easykeymap.helper import make_matrix_config

description = "Planet 6"
unique_id = "PLANET6_001"
cfg_name = "planet6"

teensy = True
hw_boot_key = True

display_height = int(6*4)
display_width = int(25*4)

num_rows = 8
num_cols = 12

strobe_cols = False
strobe_low = True

matrix_hardware, matrix_strobe, matrix_sense = make_matrix_config(
    strobe_cols=strobe_cols,
    strobe_low=strobe_low,
    rows=[D1, D2, D3, D7, C6, F0],
    cols=[B6, F7, F6, F5, F4, F1, B0, B1, B2, B3, B7, D0],
    device=firmware.device
)

num_leds = 2
num_ind = 2
num_bl_enab = 2

led_definition = [
    ('Caps Lock', 'Caps Lock'),
    ('Power', 'USB Normal')
]

led_hardware = [
#       Port    Pin    Direction
    ( REF_PORTC, 7, LED_DRIVER_PULLUP ), # pin C7
    ( REF_PORTB, 4, LED_DRIVER_PULLUP )  # pin B4
]

backlighting = False

bl_modes = [
    ( 1, 1 ),
    ( 0, 0 )
]

KMAC_key = None


keyboard_definition = [
    [(12, None, '0'),
     ((4, 4), (0, 3), 'HID_KEYBOARD_SC_CAPS_LOCK'),
     ((4, 4), (0, 4), 'HID_KEYBOARD_SC_ESCAPE'),
     (13, None, '0'),
     ((4, 4), (0, 5), 'HID_KEYBOARD_SC_TAB'),
     (13, None, '0'),
     ((4, 4), (0, 7), 'HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE'),
     ((4, 4), (0, 8), 'HID_KEYBOARD_SC_EQUAL_AND_PLUS')],

    [(4, None, '0'),
     ((4, 4), (0, 1), 'HID_KEYBOARD_SC_2_AND_AT'),
     ((4, 4), (0, 2), 'HID_KEYBOARD_SC_3_AND_HASHMARK'),
     ((4, 4), (1, 3), 'HID_KEYBOARD_SC_4_AND_DOLLAR'),
     ((4, 4), (1, 4), 'HID_KEYBOARD_SC_5_AND_PERCENTAGE'),

     (8, None, '0'),
     ((4, 4), (1, 5), 'HID_KEYBOARD_SC_LEFT_ALT'),
     (6, None, '0'),
     ((4, 4), (0, 6), 'HID_KEYBOARD_SC_CAPS_LOCK'),
     (8, None, '0'),

     ((4, 4), (1, 7), 'HID_KEYBOARD_SC_6_AND_CARET'),
     ((4, 4), (1, 8), 'HID_KEYBOARD_SC_7_AND_AND_AMPERSAND'),
     ((4, 4), (0, 9), 'HID_KEYBOARD_SC_8_AND_ASTERISK'),
     ((4, 4), (0, 10), 'HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS')],

    [
     ((4, 4), (0, 0), 'HID_KEYBOARD_SC_1_AND_EXCLAMATION'),
     ((4, 4), (1, 1), 'HID_KEYBOARD_SC_W'),
     ((4, 4), (1, 2), 'HID_KEYBOARD_SC_E'),
     ((4, 4), (2, 3), 'HID_KEYBOARD_SC_R'),
     ((4, 4), (2, 4), 'HID_KEYBOARD_SC_T'),

     (4, None, '0'),
     ((4, 4), (2, 5), 'HID_KEYBOARD_SC_LEFT_GUI'),
     (14, None, '0'),
     ((4, 4), (1, 6), '0'),
     (4, None, '0'),

     ((4, 4), (2, 7), 'HID_KEYBOARD_SC_Y'),
     ((4, 4), (2, 8), 'HID_KEYBOARD_SC_U'),
     ((4, 4), (1, 9), 'HID_KEYBOARD_SC_I'),
     ((4, 4), (1, 10), 'HID_KEYBOARD_SC_O'),
     ((4, 4), (0, 11), 'HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS')],

    [((4, 4), (1, 0), 'HID_KEYBOARD_SC_Q'),
     ((4, 4), (2, 1), 'HID_KEYBOARD_SC_S'),
     ((4, 4), (2, 2), 'HID_KEYBOARD_SC_D'),
     ((4, 4), (3, 3), 'HID_KEYBOARD_SC_F'),
     ((4, 4), (3, 4), 'HID_KEYBOARD_SC_G'),

     (2, None, '0'),
     ((4, 4), (3, 5), '0'),
     (18, None, '0'),
     ((4, 4), (2, 6), 'HID_KEYBOARD_SC_RIGHT_SHIFT'),
     (2, None, '0'),

     ((4, 4), (3, 7), 'HID_KEYBOARD_SC_H'),
     ((4, 4), (3, 8), 'HID_KEYBOARD_SC_J'),
     ((4, 4), (2, 9), 'HID_KEYBOARD_SC_K'),
     ((4, 4), (2, 10), 'HID_KEYBOARD_SC_L'),
     ((4, 4), (1, 11), 'HID_KEYBOARD_SC_P')],

    [((4, 4), (2, 0), 'HID_KEYBOARD_SC_A'),
     ((4, 4), (3, 1), 'HID_KEYBOARD_SC_X'),
     ((4, 4), (3, 2), 'HID_KEYBOARD_SC_C'),
     ((4, 4), (4, 3), 'HID_KEYBOARD_SC_V'),
     ((4, 4), (4, 4), 'HID_KEYBOARD_SC_B'),

     (4, None, '0'),
     ((4, 4), (4, 5), '0'),
     (14, None, '0'),
     ((4, 4), (3, 6), 'HID_KEYBOARD_SC_ESCAPE'),
     (4, None, '0'),

     ((4, 4), (4, 7), 'HID_KEYBOARD_SC_N'),
     ((4, 4), (4, 8), 'HID_KEYBOARD_SC_M'),
     ((4, 4), (3, 9), 'HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN'),
     ((4, 4), (3, 10), 'HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN'),
     ((4, 4), (2, 11), 'HID_KEYBOARD_SC_SEMICOLON_AND_COLON')],

    [((4, 4), (3, 0), 'HID_KEYBOARD_SC_Z'),
     ((4, 4), (4, 1), '0'),
     ((4, 4), (4, 2), '0'),
     ((5, 4), (5, 2), 'HID_KEYBOARD_SC_LEFT_SHIFT'),
     ((5, 4), (5, 3), 'HID_KEYBOARD_SC_BACKSPACE'),
     (16, None, '0'),
     ((4, 4), (4, 6), 'HID_KEYBOARD_SC_ENTER'),
     (6, None, '0'),
     ((5, 4), (5, 8), 'HID_KEYBOARD_SC_SPACE'),
     ((5, 4), (5, 9), 'HID_KEYBOARD_SC_RIGHT_SHIFT'),
     ((4, 4), (4, 9), 'HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE'),
     ((4, 4), (4, 10), '0'),
     ((4, 4), (3, 11), 'HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK')], 

    [(22, None, '0'),
     ((5, -5), (5, 4), 'HID_KEYBOARD_SC_TAB'),
     (16, None, '0'),
     ((5, -5), (5, 7), 'HID_KEYBOARD_SC_ENTER')]
]

alt_layouts = {}
