├── Kicad Files ├── iyada_top │ ├── fp-info-cache │ ├── iyada_top.zip │ ├── iyada_top.kicad_prl │ ├── iyada_top │ │ ├── iyada_top-job.gbrjob │ │ ├── iyada_top-Edge_Cuts.gbr │ │ ├── iyada_top-PTH.drl │ │ ├── iyada_top-NPTH.drl │ │ └── iyada_top-F_Paste.gbr │ └── iyada_top.kicad_pro ├── iyada_bottom │ ├── iyada_bottom.zip │ ├── iyada_bottom │ │ ├── iyada_bottom-NPTH.drl │ │ ├── iyada_bottom-Edge_Cuts.gbr │ │ ├── iyada_bottom-job.gbrjob │ │ ├── iyada_bottom-PTH.drl │ │ ├── iyada_bottom-F_Paste.gbr │ │ └── iyada_bottom-B_Paste.gbr │ ├── iyada_bottom.kicad_prl │ └── iyada_bottom.kicad_pro └── README.md ├── photos ├── iyada_pcb.jpg └── iyada_main.jpg ├── 3D Print Files ├── Iyada - Cirque Holder.stl ├── Iyada - Encoder Knob - EC11.stl └── Iyada - Encoder Knob - EC12.stl ├── kiraibuilds └── iyada │ ├── graphics │ └── default │ │ ├── game_graphic.h │ │ ├── main_graphic.h │ │ ├── mouse_graphic.h │ │ ├── iyada_frame_0.h │ │ ├── iyada_frame_1.h │ │ ├── iyada_frame_2.h │ │ ├── plover_graphic.h │ │ ├── symbol_graphic.h │ │ ├── game_graphic.c │ │ ├── main_graphic.c │ │ ├── iyada_frame_2.c │ │ ├── mouse_graphic.c │ │ ├── plover_graphic.c │ │ ├── symbol_graphic.c │ │ ├── iyada_frame_0.c │ │ ├── iyada_frame_1.c │ │ └── default_oled.c │ ├── keymaps │ ├── joystick │ │ ├── layers.h │ │ ├── rules.mk │ │ └── keymap.c │ ├── steno │ │ ├── layers.h │ │ ├── rules.mk │ │ └── keymap.c │ ├── default │ │ ├── layers.h │ │ ├── rules.mk │ │ ├── keymap.c │ │ └── readme.md │ └── advanced │ │ ├── layers.h │ │ ├── rules.mk │ │ ├── combos.def │ │ ├── keymap.c │ │ └── tap_dance_map.c │ ├── rev1 │ ├── keyboard.json │ ├── custom_keycodes.c │ ├── tap_defs.c │ ├── config.h │ ├── settings.h │ ├── rgb_defaults.c │ └── cirque_defaults.c │ ├── iyada.h │ ├── halconf.h │ ├── iyada.c │ ├── rules.mk │ ├── mcuconf.h │ ├── info.json │ └── readme.md └── README.md /Kicad Files/iyada_top/fp-info-cache: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /photos/iyada_pcb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/photos/iyada_pcb.jpg -------------------------------------------------------------------------------- /photos/iyada_main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/photos/iyada_main.jpg -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/Kicad Files/iyada_top/iyada_top.zip -------------------------------------------------------------------------------- /3D Print Files/Iyada - Cirque Holder.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/3D Print Files/Iyada - Cirque Holder.stl -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/Kicad Files/iyada_bottom/iyada_bottom.zip -------------------------------------------------------------------------------- /3D Print Files/Iyada - Encoder Knob - EC11.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/3D Print Files/Iyada - Encoder Knob - EC11.stl -------------------------------------------------------------------------------- /3D Print Files/Iyada - Encoder Knob - EC12.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gargum/Iyada/HEAD/3D Print Files/Iyada - Encoder Knob - EC12.stl -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/game_graphic.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "game_graphic.c" 3 | 4 | extern const uint16_t game_logo_length; 5 | extern const char game_logo[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/main_graphic.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "main_graphic.c" 3 | 4 | extern const uint16_t main_logo_length; 5 | extern const char main_logo[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/mouse_graphic.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "mouse_graphic.c" 3 | 4 | extern const uint16_t mouse_logo_length; 5 | extern const char mouse_logo[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/iyada_frame_0.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "iyada_frame_0.c" 3 | 4 | extern const uint16_t iyada_logo_0_length; 5 | extern const char iyada_logo_0[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/iyada_frame_1.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "iyada_frame_1.c" 3 | 4 | extern const uint16_t iyada_logo_1_length; 5 | extern const char iyada_logo_1[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/iyada_frame_2.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "iyada_frame_2.c" 3 | 4 | extern const uint16_t iyada_logo_2_length; 5 | extern const char iyada_logo_2[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/plover_graphic.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "plover_graphic.c" 3 | 4 | extern const uint16_t plover_logo_length; 5 | extern const char plover_logo[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/symbol_graphic.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "symbol_graphic.c" 3 | 4 | extern const uint16_t symbol_logo_length; 5 | extern const char symbol_logo[512]; 6 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/joystick/layers.h: -------------------------------------------------------------------------------- 1 | //This file exists for the sake of convenience, specifically in order to make creating user-generated keymaps with a large number of layers less difficult. 2 | 3 | #include QMK_KEYBOARD_H 4 | 5 | // Keymap Layer Declarations 6 | // 7 | #define _GAMES 0 8 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/steno/layers.h: -------------------------------------------------------------------------------- 1 | //This file exists for the sake of convenience, specifically in order to make creating user-generated keymaps with a large number of layers less difficult. 2 | 3 | #include QMK_KEYBOARD_H 4 | 5 | // Keymap Layer Declarations 6 | // 7 | #define _STENO 0 8 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/keyboard.json: -------------------------------------------------------------------------------- 1 | { 2 | "keyboard_name": "Iyada", 3 | "usb": { 4 | "pid": "0x0001" 5 | }, 6 | "features": { 7 | "bootmagic": true, 8 | "mousekey": true, 9 | "extrakey": true, 10 | "nkro": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/default/layers.h: -------------------------------------------------------------------------------- 1 | //This file exists for the sake of convenience, specifically in order to make creating user-generated keymaps with a large number of layers less difficult. 2 | 3 | #include QMK_KEYBOARD_H 4 | 5 | // Keymap Layer Declarations 6 | // 7 | #define _QWE 0 8 | #define _SYM 1 9 | #define _MOU 2 10 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/advanced/layers.h: -------------------------------------------------------------------------------- 1 | //This file exists for the sake of convenience, specifically in order to make creating user-generated keymaps with multiple layers less difficult. 2 | 3 | #include QMK_KEYBOARD_H 4 | 5 | // Keymap Layer Declarations 6 | // 7 | #define _QWERTY 0 8 | #define _SYMBOL 1 9 | #define _MOUSE 2 10 | #define _GAMES 3 11 | #define _STENO 4 12 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/iyada.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file exists to make code in keymap.c files cleaner and more readable. 3 | * The file may also be used to allow users to create and define a custom LED matrix or RGB matrix for the Iyada using a non-standard style of LED. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include "quantum.h" 9 | #include 10 | #include 11 | 12 | void init_iyada(void); 13 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/halconf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file exists to configure features of HAL/ChibiOS, like expanded serial buffer sizes and PWM audio. 3 | */ 4 | #pragma once 5 | 6 | #define HAL_USE_USB TRUE 7 | #define USB_USE_WAIT TRUE 8 | #define HAL_USE_SERIAL_USB TRUE 9 | #define SERIAL_BUFFERS_SIZE 128 10 | #define SERIAL_USB_BUFFERS_SIZE 256 11 | #define HAL_USE_PAL TRUE 12 | #define PAL_USE_CALLBACKS TRUE 13 | #define PAL_USE_WAIT TRUE 14 | #define HAL_USE_I2C TRUE 15 | #define HAL_USE_SPI TRUE 16 | #define SPI_USE_WAIT TRUE 17 | #define SPI_SELECT_MODE SPI_SELECT_MODE_PAD 18 | #define HAL_USE_PWM TRUE 19 | 20 | #include_next 21 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom/iyada_bottom-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 8.0.4+1} date 2024-08-17T00:02:31-0400 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2024-08-17T00:02:31-04:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.4+1 6 | ; #@! TF.FileFunction,NonPlated,1,2,NPTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 10 | T1C0.0354 11 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 12 | T2C0.0866 13 | % 14 | G90 15 | G05 16 | T1 17 | X3.2197Y-5.1209 18 | X3.2197Y-5.1209 19 | X3.4874Y-5.1209 20 | X3.4874Y-5.1209 21 | X3.8496Y-5.1209 22 | X3.8496Y-5.1209 23 | X4.1173Y-5.1209 24 | X4.1173Y-5.1209 25 | X4.4795Y-5.1209 26 | X4.4795Y-5.1209 27 | X4.7472Y-5.1209 28 | X4.7472Y-5.1209 29 | T2 30 | X2.8463Y-2.7159 31 | X2.878Y-5.0697 32 | X4.2783Y-1.8492 33 | X4.3602Y-3.3669 34 | X6.6264Y-2.602 35 | X6.6264Y-3.3717 36 | X7.8126Y-1.9594 37 | X8.6823Y-5.715 38 | M30 39 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/iyada.c: -------------------------------------------------------------------------------- 1 | /* 2 | * This file exists to facilitate the use of a speaker shutdown pin, thereby preventing noise when the speaker is not in use. 3 | */ 4 | 5 | #include QMK_KEYBOARD_H 6 | #include 7 | #include 8 | #include 9 | 10 | // Audio shutdown pin - Initialization 11 | #ifdef AUDIO_ENABLE 12 | void keyboard_pre_init_kb(void) { 13 | // ensure pin is set and enabled pre-audio init 14 | setPinOutput(SPEAKER_SHUTDOWN); 15 | writePinHigh(SPEAKER_SHUTDOWN); 16 | keyboard_pre_init_user(); 17 | } 18 | 19 | void keyboard_post_init_kb(void) { 20 | // set pin based on active status 21 | writePin(SPEAKER_SHUTDOWN, audio_is_on()); 22 | keyboard_post_init_user(); 23 | } 24 | 25 | void audio_on_user(void) { 26 | writePinHigh(SPEAKER_SHUTDOWN); 27 | } 28 | 29 | void audio_off_user(void) { 30 | // needs a delay or it runs right after play note. 31 | wait_ms(200); 32 | writePinLow(SPEAKER_SHUTDOWN); 33 | } 34 | #endif 35 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/default/rules.mk: -------------------------------------------------------------------------------- 1 | # Build Options 2 | COMBO_ENABLE = no # Key combos 3 | COMBO_MAP = no 4 | 5 | CUSTOM_CODES = no # Custom keycode toggle 6 | UNICODE_ENABLE = no # Unicode output 7 | WPM_ENABLE = no # Word Per Minute measurement toggle 8 | 9 | TAP_DANCE_ENABLE = no # Tap Dance toggle 10 | TAP_DANCE_MAP = no # Tap Dance definitions file toggle 11 | DYNAMIC_TAPPING_TERM_ENABLE = no # Dynamic tapping term toggle 12 | 13 | AUTOCORRECT_ENABLE = no # Autocorrect toggle 14 | CAPS_WORD_ENABLE = no # Caps word toggle 15 | DYNAMIC_MACRO_ENABLE = no # Dynamic macro toggle 16 | KEY_LOCK_ENABLE = no # Key lock toggle 17 | 18 | STENO_ENABLE = no # Stenotype output 19 | 20 | AUDIO_ENABLE = no # Audio output 21 | MIDI_ENABLE = no # MIDI output 22 | 23 | JOYSTICK_ENABLE = no # Gamepad & Joystick output 24 | JOYSTICK_DRIVER = digital # Gamepad & Joystick driver 25 | 26 | HAPTIC_ENABLE = no # Haptic feedback toggle 27 | HAPTIC_DRIVER = drv2605l # Haptic feedback driver 28 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/steno/rules.mk: -------------------------------------------------------------------------------- 1 | # Build Options 2 | COMBO_ENABLE = no # Key combos 3 | COMBO_MAP = no 4 | 5 | CUSTOM_CODES = no # Custom keycode toggle 6 | UNICODE_ENABLE = no # Unicode output 7 | WPM_ENABLE = no # Word Per Minute measurement toggle 8 | 9 | TAP_DANCE_ENABLE = no # Tap Dance toggle 10 | TAP_DANCE_MAP = no # Tap Dance definitions file toggle 11 | DYNAMIC_TAPPING_TERM_ENABLE = no # Dynamic tapping term toggle 12 | 13 | AUTOCORRECT_ENABLE = no # Autocorrect toggle 14 | CAPS_WORD_ENABLE = no # Caps word toggle 15 | DYNAMIC_MACRO_ENABLE = no # Dynamic macro toggle 16 | KEY_LOCK_ENABLE = no # Key lock toggle 17 | 18 | STENO_ENABLE = yes # Stenotype output 19 | 20 | AUDIO_ENABLE = no # Audio output 21 | MIDI_ENABLE = no # MIDI output 22 | 23 | JOYSTICK_ENABLE = no # Gamepad & Joystick output 24 | JOYSTICK_DRIVER = digital # Gamepad & Joystick driver 25 | 26 | HAPTIC_ENABLE = no # Haptic feedback toggle 27 | HAPTIC_DRIVER = drv2605l # Haptic feedback driver 28 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/joystick/rules.mk: -------------------------------------------------------------------------------- 1 | # Build Options 2 | COMBO_ENABLE = no # Key combos 3 | COMBO_MAP = no 4 | 5 | CUSTOM_CODES = yes # Custom keycode toggle 6 | UNICODE_ENABLE = no # Unicode output 7 | WPM_ENABLE = no # Word Per Minute measurement toggle 8 | 9 | TAP_DANCE_ENABLE = no # Tap Dance toggle 10 | TAP_DANCE_MAP = no # Tap Dance definitions file toggle 11 | DYNAMIC_TAPPING_TERM_ENABLE = no # Dynamic tapping term toggle 12 | 13 | AUTOCORRECT_ENABLE = no # Autocorrect toggle 14 | CAPS_WORD_ENABLE = no # Caps word toggle 15 | DYNAMIC_MACRO_ENABLE = no # Dynamic macro toggle 16 | KEY_LOCK_ENABLE = no # Key lock toggle 17 | 18 | STENO_ENABLE = no # Stenotype output 19 | 20 | AUDIO_ENABLE = no # Audio output 21 | MIDI_ENABLE = no # MIDI output 22 | 23 | JOYSTICK_ENABLE = yes # Gamepad & Joystick output 24 | JOYSTICK_DRIVER = digital # Gamepad & Joystick driver 25 | 26 | HAPTIC_ENABLE = yes # Haptic feedback toggle 27 | HAPTIC_DRIVER = drv2605l # Haptic feedback driver 28 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/advanced/rules.mk: -------------------------------------------------------------------------------- 1 | # Build Options 2 | COMBO_ENABLE = yes # Key combo toggle 3 | COMBO_MAP = yes 4 | 5 | CUSTOM_CODES = yes # Custom keycode toggle 6 | UNICODE_ENABLE = no # Unicode output 7 | WPM_ENABLE = no # Word Per Minute measurement toggle 8 | 9 | TAP_DANCE_ENABLE = yes # Tap Dance toggle 10 | TAP_DANCE_MAP = yes # Tap Dance definitions file toggle 11 | DYNAMIC_TAPPING_TERM_ENABLE = yes # Dynamic tapping term toggle 12 | 13 | AUTOCORRECT_ENABLE = yes # Autocorrect toggle 14 | CAPS_WORD_ENABLE = yes # Caps word toggle 15 | DYNAMIC_MACRO_ENABLE = no # Dynamic macro toggle 16 | KEY_LOCK_ENABLE = no # Key lock toggle 17 | 18 | STENO_ENABLE = yes # Stenotype output 19 | 20 | AUDIO_ENABLE = yes # Audio output 21 | MIDI_ENABLE = no # MIDI output 22 | 23 | JOYSTICK_ENABLE = yes # Gamepad & Joystick output 24 | JOYSTICK_DRIVER = digital # Gamepad & Joystick driver 25 | 26 | HAPTIC_ENABLE = yes # Haptic feedback toggle 27 | HAPTIC_DRIVER = drv2605l # Haptic feedback driver 28 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/advanced/combos.def: -------------------------------------------------------------------------------- 1 | #include QMK_KEYBOARD_H 2 | 3 | // Key Combo Definitions - General 4 | // 5 | // name result chord keys 6 | COMB(CO_END, KC_END, GUI_QUO, SC_RCPC) 7 | COMB(CO_HOME, KC_HOME, GUI_DEL, SC_LCPO) 8 | COMB(CO_PSCR, KC_PSCR, KC_MUTE, KC_MPLY) 9 | COMB(CO_SCRL, KC_SCRL, KC_MUTE, KC_WBAK) 10 | COMB(CO_NUML, KC_NUM, KC_MPLY, KC_WFWD) 11 | COMB(CO_INSR, KC_INS, KC_WBAK, KC_WFWD) 12 | COMB(CO_PGUP, KC_PGUP, KC_EQL, KC_RBRC) 13 | COMB(CO_PGDN, KC_PGDN, KC_MINS, KC_LBRC) 14 | COMB(CO_EH_L, EH_LEFT, KC_MINS, KC_WBAK) 15 | COMB(CO_EH_R, EH_RGHT, KC_EQL, KC_WFWD) 16 | COMB(CO_M_B3, KC_BTN3, KC_BTN1, KC_UP) 17 | 18 | #ifdef JOYSTICK_ENABLE 19 | // Key Combo Definitions - Joystick 20 | // 21 | // name result chord keys 22 | COMB(CO_GA_L, TT_GAM, TT_MOU, TT_SYM) 23 | #endif 24 | 25 | #ifdef STENO_ENABLE 26 | // Key Combo Definitions - Stenography 27 | // 28 | // name result chord keys 29 | COMB(CO_ST_R, TT_STE, KC_LSFT, TT_MOU, TT_SYM) 30 | COMB(CO_ST_X, TT_STE, STN_N1, STN_NC) 31 | COMB(CO_ST_P, STN_PWR, STN_RES1, STN_RES2) 32 | #endif 33 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/joystick/keymap.c: -------------------------------------------------------------------------------- 1 | #include "rev1/settings.h" 2 | 3 | // Keyboard layout 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 5 | [_GAMES] = LAYOUT_54( 6 | GC_HOM, KC_NO, GC_L3, GC_L2, GC_L1, GC_L3, GC_SEL, GC_STA, GC_R3, GC_R1, GC_R2, GC_R3, KC_NO, GC_HOM, 7 | KC_NO, GC_L1, GC_L2, GC_R2, GC_R1, GC_DPU, KC_NO, KC_NO, GC_DPD, GC_CRO, GC_CIR, GC_SQU, GC_TRI, KC_NO, 8 | KC_NO, HF_PREV, HF_COND, HF_TOGG, KC_NO, GC_DPL, GC_DPR, KC_NO, HF_RST, HF_CONU, HF_NEXT, KC_NO, 9 | GC_SEL, GC_SEL, GC_STA, GC_STA, 10 | 11 | KC_TRNS, KC_SYRQ, KC_CNCL, KC_TRNS, 12 | GC_L1, GC_L2, GC_L3, GC_R3, GC_R2, GC_R1 13 | ) 14 | }; 15 | 16 | // Encoder functions 17 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { 18 | // Layer - Left Rotary Encoder - Left Scroll Encoder - Right Scroll Encoder - Right Rotary Encoder 19 | [_GAMES] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(GC_DPD, GC_DPU), ENCODER_CCW_CW(GC_DPL, GC_DPR), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } 20 | }; 21 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/steno/keymap.c: -------------------------------------------------------------------------------- 1 | #include "rev1/settings.h" 2 | 3 | // Keyboard layout 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 5 | [_STENO] = LAYOUT_54( 6 | STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_RES1, STN_RES2, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, 7 | STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_FN, STN_FN, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, 8 | STN_FN, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, 9 | STN_ST2, STN_ST1, STN_ST3, STN_ST4, 10 | 11 | KC_NO, STN_RES1, STN_RES2, KC_NO, 12 | STN_A, STN_O, STN_ST1, STN_ST3, STN_E, STN_U 13 | ) 14 | }; 15 | 16 | // Encoder functions 17 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { 18 | // Layer - Left Rotary Encoder - Left Scroll Encoder - Right Scroll Encoder - Right Rotary Encoder 19 | [_STENO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) } 20 | }; 21 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/custom_keycodes.c: -------------------------------------------------------------------------------- 1 | // Remember, never put sensitive information like a password into this file! 2 | 3 | #include "layers.h" 4 | 5 | //Layer shift button keycodes - Used to make keymap.c files look tidier 6 | #define TT_QWE TT(_QWERTY) 7 | #define TT_SYM TT(_SYMBOL) 8 | #define TT_MOU TT(_MOUSE) 9 | #define TT_GAM TT(_GAMES) 10 | #define TT_STE TT(_STENO) 11 | 12 | //Button combination keycodes - Used for the sake of convenience 13 | #define GUI_DEL GUI_T(KC_DEL) 14 | #define GUI_QUO RGUI_T(KC_QUOT) 15 | #define KC_TABL LCTL(KC_PGUP) 16 | #define KC_TABR LCTL(KC_PGDN) 17 | 18 | //Tap Dance trigger keycodes - Used to save space in keymap.c files 19 | #define TD_ESC TD(ESC_DANCE) 20 | #define TD_GRV TD(GRV_DANCE) 21 | #define TD_BCK TD(BCK_DANCE) 22 | #define TD_QWE TD(QWE_DANCE) 23 | #define TD_SYM TD(SYM_DANCE) 24 | #define TD_MOU TD(MOU_DANCE) 25 | #define TD_GAM TD(GAM_DANCE) 26 | #define TD_STE TD(STE_DANCE) 27 | 28 | //Joystick button keycodes - Simplified, more easily understood namings 29 | #define GC_SQU JS_0 30 | #define GC_CRO JS_1 31 | #define GC_CIR JS_2 32 | #define GC_TRI JS_3 33 | #define GC_L1 JS_4 34 | #define GC_L2 JS_5 35 | #define GC_L3 JS_6 36 | #define GC_R1 JS_7 37 | #define GC_R2 JS_8 38 | #define GC_R3 JS_9 39 | #define GC_STA JS_10 40 | #define GC_SEL JS_11 41 | #define GC_HOM JS_12 42 | #define GC_DPU JS_13 43 | #define GC_DPD JS_14 44 | #define GC_DPL JS_15 45 | #define GC_DPR JS_16 46 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "All Layers", 5 | "auto_track_width": false, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 1.0, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 1.0 16 | }, 17 | "selection_filter": { 18 | "dimensions": true, 19 | "footprints": true, 20 | "graphics": true, 21 | "keepouts": true, 22 | "lockedItems": false, 23 | "otherItems": true, 24 | "pads": true, 25 | "text": true, 26 | "tracks": true, 27 | "vias": true, 28 | "zones": true 29 | }, 30 | "visible_items": [ 31 | 0, 32 | 1, 33 | 2, 34 | 3, 35 | 4, 36 | 5, 37 | 8, 38 | 9, 39 | 10, 40 | 11, 41 | 12, 42 | 13, 43 | 15, 44 | 16, 45 | 17, 46 | 18, 47 | 19, 48 | 20, 49 | 21, 50 | 22, 51 | 23, 52 | 24, 53 | 25, 54 | 26, 55 | 27, 56 | 28, 57 | 29, 58 | 30, 59 | 32, 60 | 33, 61 | 34, 62 | 35, 63 | 36, 64 | 39, 65 | 40 66 | ], 67 | "visible_layers": "fffffff_ffffffff", 68 | "zone_display_mode": 0 69 | }, 70 | "git": { 71 | "repo_password": "", 72 | "repo_type": "", 73 | "repo_username": "", 74 | "ssh_key": "" 75 | }, 76 | "meta": { 77 | "filename": "iyada_flip.kicad_prl", 78 | "version": 3 79 | }, 80 | "project": { 81 | "files": [] 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "All Layers", 5 | "auto_track_width": false, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 1.0, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 1.0 16 | }, 17 | "selection_filter": { 18 | "dimensions": true, 19 | "footprints": true, 20 | "graphics": true, 21 | "keepouts": true, 22 | "lockedItems": false, 23 | "otherItems": true, 24 | "pads": true, 25 | "text": true, 26 | "tracks": true, 27 | "vias": true, 28 | "zones": true 29 | }, 30 | "visible_items": [ 31 | 0, 32 | 1, 33 | 2, 34 | 3, 35 | 4, 36 | 5, 37 | 8, 38 | 9, 39 | 10, 40 | 11, 41 | 12, 42 | 13, 43 | 15, 44 | 16, 45 | 17, 46 | 18, 47 | 19, 48 | 20, 49 | 21, 50 | 22, 51 | 23, 52 | 24, 53 | 25, 54 | 26, 55 | 27, 56 | 28, 57 | 29, 58 | 30, 59 | 32, 60 | 33, 61 | 34, 62 | 35, 63 | 36, 64 | 39, 65 | 40 66 | ], 67 | "visible_layers": "fffffff_ffffffff", 68 | "zone_display_mode": 0 69 | }, 70 | "git": { 71 | "repo_password": "", 72 | "repo_type": "", 73 | "repo_username": "", 74 | "ssh_key": "" 75 | }, 76 | "meta": { 77 | "filename": "iyada_baseplate.kicad_prl", 78 | "version": 3 79 | }, 80 | "project": { 81 | "files": [] 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/tap_defs.c: -------------------------------------------------------------------------------- 1 | // This file is used to define all of the subtypes of tap available for use in user-defined Tap Dances 2 | // This file exists to make the process of creating and customizing Tap Dances more user-friendly. 3 | 4 | // Enumerating the different types of button press (single tap, double tap, etc) 5 | typedef enum presses { 6 | TD_NONE, 7 | TD_UNKNOWN, 8 | TD_SINGLE_TAP, 9 | TD_SINGLE_HOLD, 10 | TD_DOUBLE_TAP, 11 | TD_DOUBLE_HOLD, 12 | TD_DOUBLE_SINGLE_TAP, 13 | TD_TRIPLE_TAP, 14 | TD_TRIPLE_HOLD, 15 | TD_TRIPLE_SINGLE_TAP 16 | } td_state_t; 17 | 18 | // Creating a system to detect keydown and keyup events 19 | typedef struct { 20 | bool is_press_action; 21 | td_state_t state; 22 | } td_tap_t; 23 | 24 | // Tap dance function declarations - Current Dance 25 | td_state_t current_dance (tap_dance_state_t *state); 26 | 27 | // Converting the subtype of tap event that has been detected into a number 28 | td_state_t current_dance(tap_dance_state_t *state) { 29 | if (state->count == 1) { 30 | if (state->interrupted || !state->pressed) return TD_SINGLE_TAP; 31 | else return TD_SINGLE_HOLD; 32 | } else if (state->count == 2) { 33 | if (state->interrupted) return TD_DOUBLE_SINGLE_TAP; 34 | else if (state->pressed) return TD_DOUBLE_HOLD; 35 | else return TD_DOUBLE_TAP; 36 | } 37 | if (state->count == 3) { 38 | if (state->interrupted) return TD_TRIPLE_SINGLE_TAP; 39 | else if (state->pressed) return TD_TRIPLE_HOLD; 40 | else return TD_TRIPLE_TAP; 41 | } else return TD_UNKNOWN; 42 | } 43 | 44 | //initialise an instance of 'tap' for the tap dances. 45 | static td_tap_t tap_state = { 46 | .is_press_action = true, 47 | .state = TD_NONE 48 | }; 49 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rules.mk: -------------------------------------------------------------------------------- 1 | # This file exists to configure the behaviour of the Iyada across all versions, keymaps, etc. 2 | 3 | # Microcontroller selection 4 | MCU = RP2040 # Selecting the Microcontroller used for the Iyada 5 | 6 | # Bootloader selection 7 | BOOTLOADER = rp2040 # Selecting the appropriate bootloader for the above Microcontroller 8 | 9 | # Default path 10 | DEFAULT_FOLDER = kiraibuilds/iyada/rev1 # Selecting the default subtype of Iyada to make if none are selected 11 | 12 | # Build Options 13 | SPLIT_KEYBOARD = yes # Confirming that this is a split keyboard 14 | SERIAL_DRIVER = vendor 15 | LTO_ENABLE = yes # Link Time Optimization - This helps the firmware take up less space 16 | OS_DETECTION_ENABLE = yes # Automatically change how much power the Iyada draws depending on the OS 17 | 18 | # Layer options 19 | LAYER_MAP = yes # Layer definitions file toggle 20 | 21 | # Rotary encoder options 22 | ENCODER_ENABLE = yes # Rotary encoder toggle 23 | ENCODER_MAP_ENABLE = yes # Encoder map toggle 24 | EC12_LEFT = yes # Low-profile Rotary toggles 25 | EC12_RIGHT = yes # Select yes when using EC12 Rotary encoders and no when using EC11 Rotary encoders 26 | 27 | # Per-key RGB lighting 28 | RGBLIGHT_ENABLE = yes # Per-key LED toggle 29 | BACKLIGHT_ENABLE = no # Backlight toggle 30 | SLEEP_LED_ENABLE = yes # LEDs inactive when computer is sleeping 31 | 32 | # OLED screens 33 | OLED_ENABLE = yes # OLED display toggle 34 | OLED_DEFAULT_GRAPHICS = yes # Allowing the user to choose whether to use the graphics that come with the Iyada, or to use their own 35 | 36 | # Dual Cirque Pinnacle Trackpads 37 | POINTING_DEVICE_ENABLE = yes # Cirque input toggle 38 | POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c # Cirque input driver 39 | -------------------------------------------------------------------------------- /Kicad Files/README.md: -------------------------------------------------------------------------------- 1 | # Iyada PCB 2 | 3 | ![Iyada](https://raw.githubusercontent.com/gargum/Iyada/main/photos/iyada_pcb.jpg) 4 | 5 | *The Iyada comes in four parts - Top Left, Bottom Left, Top Right, and Bottom Right* 6 | 7 | All PCBs used are reversible. This means a bottom PCB will function as both a bottom left and as a bottom right half, while a top PCB will function as both a top left and top right half. 8 | 9 | ## PCB Fabrication 10 | 11 | The iyada_top and iyada_bottom directories each contain a .zip file, iyada_top.zip and iyada_bottom.zip respectively. 12 | 13 | To fabricate the Iyada, simply take these .zip files, go to a website such as [JLCPCB](jlcpcb.com/) or [PCBWay](pcbway.com/), and upload them when prompted to provide a gerber file. 14 | 15 | ## Features 16 | 17 | * **Reversible PCBs**: As previously mentioned, all PCBs are reversible, so only the top PCB functions as the top half of both sides, and the bottom PCB functions as the bottom half of both sides. 18 | * **Simultaneous Choc & MX Hotswap Support**: Each key simultaneously accomodates Choc and MX hotswaps. This is to allow every key to accept a low-profile Choc switch, or a standard MX switch, without the need to resolder anything or reflash any firmware. 19 | * **Two Rotary Encoders**: Each top PCB has a reversible slot for either an EC11 or EC12 rotary encoder, complete with intact click functionality! 20 | * **Two Scroll Encoders**: Each top PCB has a reversible slot for a EVQWGD001 scroll encoder, also complete with intact click functionality! 21 | * **Support for Multiple Sizes of LED**: The bottom PCB is designed to accomodate WS2812 RGB LEDs in multiple sizes, including WS2812 RGB LEDs cut from RGB LED strips! 22 | * **TP4056 Slot**: Features like large LEDs and haptic feedback can take quite a lot of power. That's why the bottom PCB has a dedicated slot for a TP4056, which is used to safely provide more than enough additional electricity! 23 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/game_graphic.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM game_logo[512] = { 2 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,248, 28, 14, 6, 6,254,254, 6, 6, 14, 28,248,240, 0, 0,134,134,134,134,134,134,134,134,134,134,206,238,254,182, 0, 0,224,240,248, 60, 30, 14, 14, 14, 14, 30, 60,120,240,224, 0, 0,240,248, 28, 14, 6, 6, 6, 6, 6, 6, 14, 28,248,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 63,112, 96, 0, 0, 63,127, 96, 96,112, 56, 31, 15, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,115, 59, 31, 13, 0, 0,103,111,127,120,112,112,112,112,112,112,120, 60, 31, 15, 0, 0, 15, 31, 56,112, 96, 96,126,126, 0, 96,112, 56, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t game_logo_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/main_graphic.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM main_logo[512] = { 2 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 60,252,252,236, 0, 0,128,192,192,192,192,192,192,192,128, 0,128,192,192,128, 0, 0,224,240,248, 60, 28, 28, 28, 28, 28, 60,120,240,224,192, 0, 0,140,140,140,140,140,140,140,140,140,140,220,252,252,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 60, 31, 15, 7, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 1, 0, 1, 3, 3, 1, 0, 0, 59, 31, 15, 30, 28, 28, 28, 28, 28, 28, 30, 15, 7, 3, 0, 0, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 59, 63, 31, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t main_logo_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/iyada_frame_2.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM iyada_logo_2[512] = { 2 | 0, 0, 0, 0,120, 52,104,232,160, 0, 0, 0, 64, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 64,104, 0, 0, 0,104,104, 52,104,160,104,104,208, 0, 0, 0,250, 0, 0, 0, 52, 0, 0, 0,160, 14,160, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 52,160,208,120, 0,248, 8,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 0,248, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7,232, 14, 0, 0, 0,250, 52, 0, 0, 0,250,208, 0, 0, 0, 0,255, 8, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 7, 7,208, 0, 0, 0,250, 0, 0, 0,104, 0, 0, 0,224, 0, 0,128, 0, 0, 0,208, 64, 0, 0, 0,104, 0, 0, 0,160, 13, 6, 6,160, 0, 1, 0, 0, 0,255, 0,255, 0, 64, 0, 0, 0,160,128, 26, 64, 64, 0, 0, 0, 64, 64, 64, 0,127, 0,255, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 1,240, 0, 0, 0,127,240, 0, 0, 0, 7, 15, 0, 0, 0, 0, 63,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 31,192,224,224, 0, 0, 0, 0,127, 0, 0, 0, 30, 0, 0, 0, 7, 0, 0, 6, 0, 0, 0, 0, 3, 0, 0, 0, 30, 0, 0, 0,129,240,224,224, 1,128,128, 0, 0, 0,255,255,251, 13, 3, 0, 0, 0, 1, 6, 0, 3, 3, 0, 0, 0, 3, 3, 3, 0,255,252,255, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 30, 15, 30, 31, 31, 0, 0, 0, 3, 60, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 60, 31, 0, 0, 0, 30, 30, 15, 30, 56, 30, 31, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 31, 0, 7, 3, 3, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 7, 7, 30, 30, 0, 31, 31, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 63, 31, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t iyada_logo_2_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/mouse_graphic.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM mouse_logo[512] = { 2 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,240,248, 60, 28, 28,252,252,252, 28, 60,248,240,224, 0, 0,224,240, 56, 28, 12, 0,224,240, 56, 28, 28, 56,240,224, 0, 0,240,248,252, 60, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0,224,240,248,124, 60, 28, 28, 28, 28, 60,124,248,240,224, 0, 0,140,140,140,140,140,140,140,140,140,140,220,252,252,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 15, 31, 60, 56, 0, 63, 63, 63, 56, 60, 31, 15, 7, 0, 0, 7, 15, 28, 56, 56, 28, 15, 3, 0, 48, 56, 28, 15, 7, 0, 0, 15, 31, 63, 60, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 7, 15, 31, 62, 60, 56, 56, 56, 56, 60, 62, 31, 15, 7, 0, 0, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 59, 63, 31, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t mouse_logo_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/plover_graphic.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM plover_logo[512] = { 2 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 60,252,252,204, 0, 0,224,240,248, 60, 28, 28,252,252,252, 28, 60,248,240,224, 0, 0,128,192,224,224,112,112,112, 56, 56, 56, 56, 28, 28, 28, 0, 0,224,240,248, 60, 28, 28, 28, 28, 28, 28, 60,248,240,224, 0, 0,128,128,192,192,192,192,192,192,192,224,224,224,240,240, 0, 0, 12, 28, 28, 28,220,252, 60, 28, 28, 28, 60,124,236,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 56, 63, 31, 15, 0, 0, 7, 15, 31, 56, 0, 0, 63, 63, 63, 56, 60, 31, 15, 7, 0, 0, 1, 3, 7, 7, 14, 14, 14, 28, 28, 28, 28, 56, 56, 56, 0, 0, 7, 15, 31, 60, 56, 56, 56, 56, 56, 56, 60, 31, 15, 7, 0, 0, 15, 15, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 15, 31, 56, 48, 48, 48, 48, 56, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t plover_logo_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/symbol_graphic.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM symbol_logo[512] = { 2 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,192,192,192,192,192,192,224,224,224,240,240, 0, 0,224,240,248, 60, 28, 28, 28, 28, 28, 28, 60,248,240,224, 0, 0,236,252,124, 60, 28, 28, 28, 60,124,236,204, 12, 12, 12, 0, 0,140,140,140,140,140,140,140,140,140,140,220,252,252,180, 0, 0,192,128, 0, 0, 0, 0,240,248, 60, 28, 28, 28, 28, 12, 0, 0,224,240,248, 28, 12, 0,240,248, 60, 28, 60,248,240,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 1, 1, 0, 0, 7, 15, 31, 60, 56, 56, 56, 56, 56, 56, 60, 31, 15, 7, 0, 0, 7, 15, 28, 56, 48, 48, 48, 56, 28, 15, 7, 0, 0, 0, 0, 0, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 59, 63, 31, 13, 0, 0, 1, 3, 7, 14, 28, 56, 63, 63, 60, 56, 56, 56, 56, 48, 0, 0, 7, 15, 31, 56, 48, 56, 31, 15, 0, 0, 48, 63, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t symbol_logo_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/iyada_frame_0.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM iyada_logo_0[512] = { 2 | 0, 0, 0, 0,120,104,104,232,208,208,160,160, 64, 64,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 8,232,232,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,232,232,232,248, 0,120,104,104,232,208,208,160,160, 64, 64,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 64,160,160,208,120, 0,248, 8,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 8,248, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 7, 7, 14,254,253,253,250, 26, 52, 52,104,232,208,208,224,224, 0,255, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 1, 1, 3, 3, 7, 7, 14,254,253,253,250, 26, 52, 52,104,232,208,208,224, 0,192, 64, 64, 64, 64, 64, 64,160,160,208,104,104, 52, 26, 26, 13, 6, 6, 3, 1, 1, 0, 0, 0,255, 0,127, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,127, 0,255, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,192,224,224,240,255,255,255,127,120, 60, 60, 30, 31, 15, 15, 7, 7, 0,127,255,255,255,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,255,255,255,127, 0, 0, 0, 0, 0,128,128,192,192,224,224,240,255,255,255,127,120, 60, 60, 30, 31, 15, 15, 7, 0, 3, 3, 3, 3, 3, 3, 3, 7, 7, 15, 30, 30, 60,120,120,240,224,224,192,128,128, 0, 0, 0,255,255,255, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,255,255,255, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 30, 30, 30, 31, 15, 15, 7, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 15, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 15, 7, 3, 1, 0, 0, 0, 30, 30, 30, 31, 15, 15, 7, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15, 30, 0, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 31, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t iyada_logo_0_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/iyada_frame_1.c: -------------------------------------------------------------------------------- 1 | const char PROGMEM iyada_logo_1[512] = { 2 | 0, 0, 0, 0,120, 52,104,232,160,208,144, 0, 64, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 0,232, 0,104, 64,104, 0,104,208,104,104, 52,104,160,104,104,208,208,232, 0,250,248, 0,120, 52, 0,232,208,160, 14,160, 64, 64, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 52,160,208,120, 0,248, 8,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 0,248, 0, 0, 0, 0, 3 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, 0, 7,232, 14,254, 0,253,250, 52,104, 0,104,250,208,208,192,240, 0,255, 8,255, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,255, 0,255,255, 0, 0, 0, 0, 0, 1, 3, 0, 3, 7, 7,208,254, 0,253,250,104, 0, 52,104,232, 0,160,224, 0,192,128, 64, 0, 64,208, 64,160,128,208,104,104, 0, 26,160, 13, 6, 6,160, 0, 1, 0, 0, 0,255, 0,255, 0, 64, 64, 0, 64,160,128, 26, 64, 64, 64, 0, 64, 64, 64, 64, 0,127, 0,255, 0, 0, 0, 0, 4 | 0, 0, 0, 0, 0, 0, 0, 0, 0,128,224, 0,224, 1,240,255, 0,255,127,240,120, 0, 30, 7, 15, 15, 15, 3, 0, 63,128,255, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,255, 0, 63,127, 0, 0, 0, 0, 0,128, 0, 31,192,224,224, 0,255, 0,255,127,224, 0, 60, 30, 31, 0, 31, 7, 0, 3, 6, 3, 0, 3, 0, 3, 7, 30, 15, 30, 30, 0,120,129,240,224,224, 1,128,128, 0, 0, 0,255,255,251, 13, 3, 3, 0, 3, 1, 6, 0, 3, 3, 3,208, 3, 3, 3, 3, 0,255,252,255, 0, 0, 0, 0, 5 | 0, 0, 0, 0, 30, 15, 30, 31, 31, 15, 3, 0, 3,124, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 1, 0, 7,124, 31, 0, 30, 60, 30, 30, 15, 30,120, 30, 31, 15, 15, 3, 0, 0, 0, 0, 30, 15, 0, 31, 15, 31, 0, 7, 3, 3, 62, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 7, 7, 30, 30, 0, 31, 31,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,127, 31, 0, 0, 0, 0, 6 | }; 7 | 8 | const uint16_t iyada_logo_1_length = 512; 9 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is used to configure the default behaviours of the Iyada when given features like RGB and Audio are enabled. 3 | */ 4 | 5 | #pragma once 6 | 7 | // for split keyboard initialization 8 | #define EE_HANDS 9 | #define SPLIT_LAYOUT 10 | #define SPLIT_USB_DETECT 11 | #define SPLIT_USB_TIMEOUT 2000 12 | #define SPLIT_USB_TIMEOUT_POLL 10 13 | #define SPLIT_ACTIVITY_ENABLE 14 | #define SPLIT_TRANSPORT_MIRROR 15 | #define SPLIT_LAYER_STATE_ENABLE 16 | #define SPLIT_MODS_ENABLE 17 | #define SPLIT_OLED_ENABLE 18 | #define SPLIT_HAPTIC_ENABLE 19 | #define SPLIT_POINTING_ENABLE 20 | #define SPLIT_LED_STATE_ENABLE 21 | #define SPLIT_WATCHDOG_ENABLE 22 | #define SPLIT_WATCHDOG_TIMEOUT 3000 23 | 24 | // Tap Dance default behaviour settings 25 | #ifdef TAP_DANCE_ENABLE 26 | #undef TAPPING_TERM 27 | #undef TAPPING_TOGGLE 28 | #define TAPPING_TERM 150 29 | #define TAPPING_TOGGLE 1 30 | #endif 31 | 32 | // Pointer (Cirque Pinnacle) initialization settings 33 | #ifdef POINTING_DEVICE_ENABLE 34 | #define MOUSE_EXTENDED_REPORT 35 | #define POINTING_DEVICE_COMBINED 36 | #define POINTING_DEVICE_TASK_THROTTLE_MS 10 37 | #define CIRQUE_PINNACLE_DIAMETER_MM 40 38 | #define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE 39 | #define CIRQUE_PINNACLE_ATTENUATION EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X 40 | #define CIRQUE_PINNACLE_TIMEOUT 20 41 | #define CIRQUE_PINNACLE_TAP_ENABLE 42 | #define CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE 43 | #endif 44 | 45 | // RGB initialization settings 46 | #ifdef RGBLIGHT_ENABLE 47 | #define RGBLIGHT_LED_COUNT 30 48 | #define RGBLED_SPLIT { 15, 15 } 49 | #define RGBLIGHT_EFFECT_BREATHING 50 | #define RGBLIGHT_LIMIT_VAL 165 51 | #define RGBLIGHT_DEFAULT_VAL 130 52 | #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING 53 | #define RGBLIGHT_DEFAULT_SPD 3 54 | #endif 55 | 56 | // Haptic feedback initialization settings 57 | #ifdef HAPTIC_ENABLE 58 | #define DRV2605L_FB_ERM_LRA 0 59 | #define DRV2605L_FB_BRAKEFACTOR 6 60 | #define DRV2605L_FB_LOOPGAIN 3 61 | #define DRV2605L_RATED_VOLTAGE 2.7 62 | #define DRV2605L_V_PEAK 5.1 63 | // Haptic feedback behaviour settings - Vibrations 64 | #define DRV2605L_GREETING 82 65 | #define DRV2605L_DEFAULT_MODE 7 66 | #define NO_HAPTIC_ALPHA 67 | #define NO_HAPTIC_PUNCTUATION 68 | #define NO_HAPTIC_LOCKKEYS 69 | #define NO_HAPTIC_NAV 70 | #define NO_HAPTIC_NUMERIC 71 | #endif 72 | 73 | // Audio settings - Sound settings 74 | #ifdef AUDIO_ENABLE 75 | #define AUDIO_CLICKY 76 | #define AUDIO_CLICKY_FREQ_DEFAULT 250 77 | #define AUDIO_CLICKY_FREQ_MIN 100 78 | #define AUDIO_CLICKY_FREQ_MAX 400 79 | #endif 80 | 81 | // Joystick settings - Axis definitions 82 | #ifdef JOYSTICK_ENABLE 83 | #define JOYSTICK_AXIS_COUNT 4 84 | #define JOYSTICK_BUTTON_COUNT 17 85 | #endif 86 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom/iyada_bottom-Edge_Cuts.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.4+1*% 2 | %TF.CreationDate,2024-08-17T00:02:36-04:00*% 3 | %TF.ProjectId,iyada_baseplate,69796164-615f-4626-9173-65706c617465,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 8.0.4+1) date 2024-08-17 00:02:36* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.050000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X166333875Y-42935611D02* 19 | X112959000Y-42935000D01* 20 | X201000000Y-142010000D02* 21 | X220504186Y-147771463D01* 22 | X112582612Y-42971834D02* 23 | X71847000Y-48512000D01* 24 | X231081998Y-105484289D02* 25 | G75* 26 | G02* 27 | X230675021Y-104840000I306502J644289D01* 28 | G01* 29 | X226130000Y-136700000D02* 30 | X231406244Y-119039401D01* 31 | X229396000Y-46767000D02* 32 | X209231388Y-46768834D01* 33 | X231406244Y-119039401D02* 34 | X231386417Y-106067046D01* 35 | X117530000Y-131950000D02* 36 | X182090000Y-138200000D01* 37 | X69738583Y-125487046D02* 38 | G75* 39 | G02* 40 | X70145574Y-124842743I713417J46D01* 41 | G01* 42 | X230661537Y-92340000D02* 43 | G75* 44 | G02* 45 | X231068535Y-91695711I713463J0D01* 46 | G01* 47 | X70033002Y-111115711D02* 48 | G75* 49 | G02* 50 | X70439979Y-111760000I-306502J-644289D01* 51 | G01* 52 | X226130000Y-136700000D02* 53 | X222876304Y-146230991D01* 54 | X182090000Y-138200000D02* 55 | X201000000Y-142010000D01* 56 | X222876304Y-146230991D02* 57 | G75* 58 | G02* 59 | X220504179Y-147771498I-1956304J415791D01* 60 | G01* 61 | X70445000Y-114260000D02* 62 | X70450000Y-124260000D01* 63 | X69847000Y-50512000D02* 64 | G75* 65 | G02* 66 | X71847000Y-48512000I2000000J0D01* 67 | G01* 68 | X230665000Y-92340000D02* 69 | X230670000Y-94840000D01* 70 | X69728583Y-110532954D02* 71 | X69847000Y-50512000D01* 72 | X231081998Y-105484290D02* 73 | G75* 74 | G02* 75 | X231386372Y-106067046I-405598J-582710D01* 76 | G01* 77 | X112582612Y-42971834D02* 78 | G75* 79 | G02* 80 | X112959000Y-42934994I359888J-1735766D01* 81 | G01* 82 | X229396000Y-46767000D02* 83 | G75* 84 | G02* 85 | X231396000Y-48767000I0J-2000000D01* 86 | G01* 87 | X71722286Y-131888214D02* 88 | G75* 89 | G02* 90 | X69722286Y-129888214I14J2000014D01* 91 | G01* 92 | X209231388Y-46768834D02* 93 | X166710263Y-42972445D01* 94 | X70440000Y-111760000D02* 95 | X70445000Y-114260000D01* 96 | X71722286Y-131888214D02* 97 | X117530000Y-131950000D01* 98 | X70450000Y-124260000D02* 99 | G75* 100 | G02* 101 | X70145581Y-124842756I-710000J0D01* 102 | G01* 103 | X230675000Y-104840000D02* 104 | X230670000Y-94840000D01* 105 | X69738583Y-125487046D02* 106 | X69722286Y-129888214D01* 107 | X231372954Y-91112954D02* 108 | X231396000Y-48767000D01* 109 | X70033002Y-111115710D02* 110 | G75* 111 | G02* 112 | X69728628Y-110532954I405598J582710D01* 113 | G01* 114 | X231372954Y-91112954D02* 115 | G75* 116 | G02* 117 | X231068545Y-91695725I-709954J-46D01* 118 | G01* 119 | X166333875Y-42935611D02* 120 | G75* 121 | G02* 122 | X166710263Y-42972446I16525J-1772589D01* 123 | G01* 124 | M02* 125 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/default/keymap.c: -------------------------------------------------------------------------------- 1 | #include "rev1/settings.h" 2 | 3 | // Keyboard layout 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 5 | [_QWE] = LAYOUT_54( 6 | KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, 7 | KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 8 | SC_LCPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RCPC, 9 | KC_DOWN, KC_LEFT, KC_RGHT, KC_UP, 10 | 11 | KC_WBAK, KC_MUTE, KC_MPLY, KC_WFWD, 12 | KC_SPC, KC_BSPC, TO(_SYM), TO(_MOU), KC_ENT, KC_LSFT 13 | ), 14 | 15 | [_SYM] = LAYOUT_54( 16 | KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_GRV, 17 | KC_LGUI, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RGUI, 18 | KC_LALT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_DOT, KC_QUES, KC_RALT, 19 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 20 | 21 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 22 | KC_TRNS, KC_TRNS, TO(_QWE), TO(_MOU), KC_TRNS, KC_TRNS 23 | ), 24 | 25 | [_MOU] = LAYOUT_54( 26 | EH_LEFT, RGB_VAD, KC_BTN2, KC_UP, KC_BTN1, KC_ACL0, EH_RGHT, EH_LEFT, KC_ACL0, KC_BTN1, KC_UP, KC_BTN2, RGB_VAI, EH_RGHT, 27 | KC_HOME, RGB_TOG, KC_LEFT, KC_DOWN, KC_RGHT, KC_ACL1, KC_PSCR, KC_INS, KC_ACL1, KC_LEFT, KC_DOWN, KC_RGHT, AU_TOGG, KC_END, 28 | KC_PGDN, HF_PREV, HF_COND, HF_TOGG, RGB_SAD, KC_ACL2, KC_ACL2, RGB_SAI, HF_RST, HF_CONU, HF_NEXT, KC_PGUP, 29 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 30 | 31 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 32 | KC_TRNS, KC_TRNS, TO(_SYM), TO(_QWE), KC_TRNS, KC_TRNS 33 | ) 34 | }; 35 | 36 | // Encoder functions 37 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { 38 | // Layer - Left Rotary Encoder - Left Scroll Encoder - Right Scroll Encoder - Right Rotary Encoder 39 | [_QWE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, 40 | [_SYM] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, 41 | [_MOU] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) } 42 | }; 43 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top/iyada_top-job.gbrjob: -------------------------------------------------------------------------------- 1 | { 2 | "Header": { 3 | "GenerationSoftware": { 4 | "Vendor": "KiCad", 5 | "Application": "Pcbnew", 6 | "Version": "8.0.3+1" 7 | }, 8 | "CreationDate": "2024-08-06T22:55:28-04:00" 9 | }, 10 | "GeneralSpecs": { 11 | "ProjectId": { 12 | "Name": "iyada_flip", 13 | "GUID": "69796164-615f-4666-9c69-702e6b696361", 14 | "Revision": "rev?" 15 | }, 16 | "Size": { 17 | "X": 161.7339, 18 | "Y": 104.9302 19 | }, 20 | "LayerNumber": 2, 21 | "BoardThickness": 1.6, 22 | "Finish": "None" 23 | }, 24 | "DesignRules": [ 25 | { 26 | "Layers": "Outer", 27 | "PadToPad": 0.2, 28 | "PadToTrack": 0.2, 29 | "TrackToTrack": 0.2, 30 | "MinLineWidth": 0.18 31 | } 32 | ], 33 | "FilesAttributes": [ 34 | { 35 | "Path": "iyada_flip-F_Cu.gbr", 36 | "FileFunction": "Copper,L1,Top", 37 | "FilePolarity": "Positive" 38 | }, 39 | { 40 | "Path": "iyada_flip-B_Cu.gbr", 41 | "FileFunction": "Copper,L2,Bot", 42 | "FilePolarity": "Positive" 43 | }, 44 | { 45 | "Path": "iyada_flip-F_Paste.gbr", 46 | "FileFunction": "SolderPaste,Top", 47 | "FilePolarity": "Positive" 48 | }, 49 | { 50 | "Path": "iyada_flip-B_Paste.gbr", 51 | "FileFunction": "SolderPaste,Bot", 52 | "FilePolarity": "Positive" 53 | }, 54 | { 55 | "Path": "iyada_flip-F_Silkscreen.gbr", 56 | "FileFunction": "Legend,Top", 57 | "FilePolarity": "Positive" 58 | }, 59 | { 60 | "Path": "iyada_flip-B_Silkscreen.gbr", 61 | "FileFunction": "Legend,Bot", 62 | "FilePolarity": "Positive" 63 | }, 64 | { 65 | "Path": "iyada_flip-F_Mask.gbr", 66 | "FileFunction": "SolderMask,Top", 67 | "FilePolarity": "Negative" 68 | }, 69 | { 70 | "Path": "iyada_flip-B_Mask.gbr", 71 | "FileFunction": "SolderMask,Bot", 72 | "FilePolarity": "Negative" 73 | }, 74 | { 75 | "Path": "iyada_flip-Edge_Cuts.gbr", 76 | "FileFunction": "Profile", 77 | "FilePolarity": "Positive" 78 | } 79 | ], 80 | "MaterialStackup": [ 81 | { 82 | "Type": "Legend", 83 | "Name": "Top Silk Screen" 84 | }, 85 | { 86 | "Type": "SolderPaste", 87 | "Name": "Top Solder Paste" 88 | }, 89 | { 90 | "Type": "SolderMask", 91 | "Thickness": 0.01, 92 | "Name": "Top Solder Mask" 93 | }, 94 | { 95 | "Type": "Copper", 96 | "Thickness": 0.035, 97 | "Name": "F.Cu" 98 | }, 99 | { 100 | "Type": "Dielectric", 101 | "Thickness": 1.51, 102 | "Material": "FR4", 103 | "Name": "F.Cu/B.Cu", 104 | "Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)" 105 | }, 106 | { 107 | "Type": "Copper", 108 | "Thickness": 0.035, 109 | "Name": "B.Cu" 110 | }, 111 | { 112 | "Type": "SolderMask", 113 | "Thickness": 0.01, 114 | "Name": "Bottom Solder Mask" 115 | }, 116 | { 117 | "Type": "SolderPaste", 118 | "Name": "Bottom Solder Paste" 119 | }, 120 | { 121 | "Type": "Legend", 122 | "Name": "Bottom Silk Screen" 123 | } 124 | ] 125 | } 126 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom/iyada_bottom-job.gbrjob: -------------------------------------------------------------------------------- 1 | { 2 | "Header": { 3 | "GenerationSoftware": { 4 | "Vendor": "KiCad", 5 | "Application": "Pcbnew", 6 | "Version": "8.0.4+1" 7 | }, 8 | "CreationDate": "2024-08-17T00:02:36-04:00" 9 | }, 10 | "GeneralSpecs": { 11 | "ProjectId": { 12 | "Name": "iyada_baseplate", 13 | "GUID": "69796164-615f-4626-9173-65706c617465", 14 | "Revision": "rev?" 15 | }, 16 | "Size": { 17 | "X": 161.734, 18 | "Y": 104.9303 19 | }, 20 | "LayerNumber": 2, 21 | "BoardThickness": 1.6, 22 | "Finish": "None" 23 | }, 24 | "DesignRules": [ 25 | { 26 | "Layers": "Outer", 27 | "PadToPad": 0.2, 28 | "PadToTrack": 0.2, 29 | "TrackToTrack": 0.2, 30 | "MinLineWidth": 0.2 31 | } 32 | ], 33 | "FilesAttributes": [ 34 | { 35 | "Path": "iyada_baseplate-F_Cu.gbr", 36 | "FileFunction": "Copper,L1,Top", 37 | "FilePolarity": "Positive" 38 | }, 39 | { 40 | "Path": "iyada_baseplate-B_Cu.gbr", 41 | "FileFunction": "Copper,L2,Bot", 42 | "FilePolarity": "Positive" 43 | }, 44 | { 45 | "Path": "iyada_baseplate-F_Paste.gbr", 46 | "FileFunction": "SolderPaste,Top", 47 | "FilePolarity": "Positive" 48 | }, 49 | { 50 | "Path": "iyada_baseplate-B_Paste.gbr", 51 | "FileFunction": "SolderPaste,Bot", 52 | "FilePolarity": "Positive" 53 | }, 54 | { 55 | "Path": "iyada_baseplate-F_Silkscreen.gbr", 56 | "FileFunction": "Legend,Top", 57 | "FilePolarity": "Positive" 58 | }, 59 | { 60 | "Path": "iyada_baseplate-B_Silkscreen.gbr", 61 | "FileFunction": "Legend,Bot", 62 | "FilePolarity": "Positive" 63 | }, 64 | { 65 | "Path": "iyada_baseplate-F_Mask.gbr", 66 | "FileFunction": "SolderMask,Top", 67 | "FilePolarity": "Negative" 68 | }, 69 | { 70 | "Path": "iyada_baseplate-B_Mask.gbr", 71 | "FileFunction": "SolderMask,Bot", 72 | "FilePolarity": "Negative" 73 | }, 74 | { 75 | "Path": "iyada_baseplate-Edge_Cuts.gbr", 76 | "FileFunction": "Profile", 77 | "FilePolarity": "Positive" 78 | } 79 | ], 80 | "MaterialStackup": [ 81 | { 82 | "Type": "Legend", 83 | "Name": "Top Silk Screen" 84 | }, 85 | { 86 | "Type": "SolderPaste", 87 | "Name": "Top Solder Paste" 88 | }, 89 | { 90 | "Type": "SolderMask", 91 | "Thickness": 0.01, 92 | "Name": "Top Solder Mask" 93 | }, 94 | { 95 | "Type": "Copper", 96 | "Thickness": 0.035, 97 | "Name": "F.Cu" 98 | }, 99 | { 100 | "Type": "Dielectric", 101 | "Thickness": 1.51, 102 | "Material": "FR4", 103 | "Name": "F.Cu/B.Cu", 104 | "Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)" 105 | }, 106 | { 107 | "Type": "Copper", 108 | "Thickness": 0.035, 109 | "Name": "B.Cu" 110 | }, 111 | { 112 | "Type": "SolderMask", 113 | "Thickness": 0.01, 114 | "Name": "Bottom Solder Mask" 115 | }, 116 | { 117 | "Type": "SolderPaste", 118 | "Name": "Bottom Solder Paste" 119 | }, 120 | { 121 | "Type": "Legend", 122 | "Name": "Bottom Silk Screen" 123 | } 124 | ] 125 | } 126 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/settings.h: -------------------------------------------------------------------------------- 1 | //This file exists to allow keymaps to dynamically include or exclude various additional files based on rules.mk settings 2 | 3 | #include QMK_KEYBOARD_H 4 | 5 | //Layer Maps - Allows the user to define their layers in a separate file called layers.h 6 | //Layer Maps are useful if you wish to have various files and features reference one's keymap layers. 7 | #if __has_include( "layers.h" ) && LAYER_MAP == yes 8 | #include "layers.h" 9 | #endif 10 | 11 | #if __has_include( ) && CUSTOM_CODES == yes 12 | #include 13 | #endif 14 | 15 | //Combo Maps - Allows the user to dynamically include or exclude a combos.def file without having to add or remove the associated #include line from keymap.c 16 | #if __has_include( "combos.def" ) && COMBO_MAP == yes 17 | #include "keyboards/gboards/g/keymap_combo.h" 18 | #endif 19 | 20 | //Tap Dance Maps - Allows the user to define Tap Dance functions in a separate file, making them easier to understand and easier to edit as a result. 21 | #if __has_include( "tap_dance_map.c" ) && TAP_DANCE_MAP == yes 22 | #include 23 | #endif 24 | 25 | //LED Layering - Allows the user to define custom layer-dependant behaviours for the RGB LEDs 26 | #if defined(RGBLIGHT_ENABLE) || defined(AUDIO_ENABLE) 27 | #include "kiraibuilds/iyada/rev1/rgb_defaults.c" 28 | #endif 29 | 30 | //Default Configurations - Allows the user to choose whether or not to include default settings like the Cirque joysticks and RGB layering 31 | #if defined(POINTING_DEVICE_ENABLE) 32 | #include "kiraibuilds/iyada/rev1/cirque_defaults.c" 33 | #endif 34 | 35 | #if OLED_DEFAULT_GRAPHICS == yes 36 | #include "iyada/graphics/default/default_oled.c" 37 | #endif 38 | 39 | //OS Detection - This is being used for the dynamic power draw code 40 | #if OS_DETECTION_ENABLE == yes 41 | #include 42 | 43 | /* Dynamic power draw: 44 | * 45 | * When the keyboard boots, it draws little enough power to work across all platforms including iOS. 46 | * When the keyboard detects the Operating System of the system it has been plugged into, it changes its own maximum power draw 47 | * Power draw is left as-is if needed, but is increased as much as possible otherwise 48 | * 49 | * NOTE - Mac OS has been given lower power consumption than Windows and Linux to ensure the Iyada plays nicely with Macbook laptops 50 | */ 51 | bool process_detected_host_os_kb(os_variant_t detected_os) { 52 | if (!process_detected_host_os_user(detected_os)) { 53 | return false; 54 | } 55 | switch (detected_os) { 56 | case OS_UNSURE: 57 | #undef USB_MAX_POWER_CONSUMPTION 58 | #define USB_MAX_POWER_CONSUMPTION USB_CONFIG_POWER_MA(100) 59 | break; 60 | case OS_IOS: 61 | #undef USB_MAX_POWER_CONSUMPTION 62 | #define USB_MAX_POWER_CONSUMPTION USB_CONFIG_POWER_MA(100) 63 | break; 64 | case OS_MACOS: 65 | #undef USB_MAX_POWER_CONSUMPTION 66 | #define USB_MAX_POWER_CONSUMPTION USB_CONFIG_POWER_MA(400) 67 | break; 68 | case OS_WINDOWS: 69 | #undef USB_MAX_POWER_CONSUMPTION 70 | #define USB_MAX_POWER_CONSUMPTION USB_CONFIG_POWER_MA(950) 71 | break; 72 | case OS_LINUX: 73 | #undef USB_MAX_POWER_CONSUMPTION 74 | #define USB_MAX_POWER_CONSUMPTION USB_CONFIG_POWER_MA(950) 75 | break; 76 | } 77 | 78 | return true; 79 | } 80 | #endif 81 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/mcuconf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file exists to configure the RP2040. 3 | * It is also used to turn on features such as increased USB power consumption, and the use of PIO to connect the two halves of the Iyada. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include_next 9 | 10 | // for the bootloader reset behaviour configuration 11 | #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET 12 | #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U 13 | #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 14 | 15 | // for the serial connection between the two keyboard halves 16 | #undef RP_SERIAL_USE_USART0 17 | #define RP_SERIAL_USE_USART0 TRUE 18 | #undef SERIAL_PIO_USE_PIO0 19 | #define SERIAL_PIO_USE_PIO0 TRUE 20 | #undef SERIAL_USART_TX_PIN 21 | #define SERIAL_USART_TX_PIN GP0 22 | #undef SERIAL_USART_RX_PIN 23 | #define SERIAL_USART_RX_PIN GP25 24 | #undef SERIAL_USART_PIN_SWAP 25 | #define SERIAL_USART_PIN_SWAP TRUE 26 | #undef SERIAL_USART_FULL_DUPLEX 27 | #define SERIAL_USART_FULL_DUPLEX TRUE 28 | #undef SELECT_SOFT_SERIAL_SPEED 29 | #define SELECT_SOFT_SERIAL_SPEED 1 30 | #undef SERIAL_USART_TIMEOUT 31 | #define SERIAL_USART_TIMEOUT 20 32 | #undef USB_SUSPEND_WAKEUP_DELAY 33 | #define USB_SUSPEND_WAKEUP_DELAY 200 34 | #undef USB_MAX_POWER_CONSUMPTION 35 | #define USB_MAX_POWER_CONSUMPTION USB_CONFIG_POWER_MA(100) 36 | 37 | // for all I2C peripherals 38 | #undef RP_I2C_USE_I2C1 39 | #define RP_I2C_USE_I2C1 TRUE 40 | #undef I2C1_SDA_PIN 41 | #define I2C1_SDA_PIN GP2 42 | #undef I2C1_SCL_PIN 43 | #define I2C1_SCL_PIN GP3 44 | #undef I2C1_OPMODE 45 | #define I2C1_OPMODE OPMODE_SMBUS_DEVICE 46 | #undef I2C1_DUTY_CYCLE 47 | #define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 48 | #undef I2C1_CLOCK_SPEED 49 | #define I2C1_CLOCK_SPEED 400000 50 | 51 | // for all SPI peripherals 52 | #undef RP_SPI_USE_SPI1 53 | #define RP_SPI_USE_SPI1 TRUE 54 | #undef SPI_SCK_PIN 55 | #define SPI_SCK_PIN GP14 56 | #undef SPI_MISO_PIN 57 | #define SPI_MISO_PIN GP12 58 | #undef SPI_MOSI_PIN 59 | #define SPI_MOSI_PIN GP15 60 | 61 | // for PWM audio playback 62 | #ifdef AUDIO_ENABLE 63 | #undef RP_PWM_USE_PWM0 64 | #define RP_PWM_USE_PWM0 TRUE 65 | #undef AUDIO_PIN 66 | #define AUDIO_PIN GP16 67 | #undef AUDIO_PWM_DRIVER 68 | #define AUDIO_PWM_DRIVER PWMD0 69 | #undef AUDIO_PWM_CHANNEL 70 | #define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A 71 | #undef AUDIO_INIT_DELAY 72 | #define AUDIO_INIT_DELAY 73 | #undef SPEAKER_SHUTDOWN 74 | #define SPEAKER_SHUTDOWN GP19 75 | #endif 76 | 77 | // for all rotary and scroll encoders 78 | #ifdef ENCODER_ENABLE 79 | 80 | #undef ENCODERS_PAD_A 81 | #undef ENCODERS_PAD_B 82 | #undef ENCODER_RESOLUTIONS 83 | #undef ENCODERS_PAD_A_RIGHT 84 | #undef ENCODERS_PAD_B_RIGHT 85 | #undef ENCODER_RESOLUTIONS_RIGHT 86 | 87 | // for selecting between EC11 and EC12 rotary encoders 88 | #if(EC12_LEFT == yes) 89 | #define ENCODERS_PAD_A { GP20, GP23 } 90 | #define ENCODERS_PAD_B { GP22, GP21 } 91 | #define ENCODER_RESOLUTIONS { 4, 4 } 92 | #elif(EC12_LEFT == no) 93 | #define ENCODERS_PAD_A { GP22, GP23 } 94 | #define ENCODERS_PAD_B { GP20, GP21 } 95 | #define ENCODER_RESOLUTIONS { 4, 4 } 96 | #endif 97 | 98 | #if(EC12_RIGHT == yes) 99 | #define ENCODERS_PAD_A_RIGHT { GP23, GP20 } 100 | #define ENCODERS_PAD_B_RIGHT { GP21, GP22 } 101 | #define ENCODER_RESOLUTIONS_RIGHT { 4, 4 } 102 | #elif(EC12_RIGHT == no) 103 | #define ENCODERS_PAD_A_RIGHT { GP23, GP22 } 104 | #define ENCODERS_PAD_B_RIGHT { GP21, GP20 } 105 | #define ENCODER_RESOLUTIONS_RIGHT { 4, 4 } 106 | #endif 107 | 108 | #endif 109 | 110 | // for firmware size reduction 111 | #undef NO_DEBUG 112 | #define NO_DEBUG 113 | #undef NO_PRINT 114 | #define NO_PRINT 115 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "manufacturer": "Kirai", 3 | "maintainer": "Gareth Gummow", 4 | "diode_direction": "COL2ROW", 5 | "processor": "RP2040", 6 | "url": "https://github.com/gargum/Iyada", 7 | "usb": { 8 | "vid": "0x8888", 9 | "device_version": "7.0.0" 10 | }, 11 | "features": { 12 | "command": true, 13 | "console": false, 14 | "swap_hands": false 15 | }, 16 | "qmk": { 17 | "locking": { 18 | "enabled": true, 19 | "resync": true 20 | } 21 | }, 22 | "audio": { 23 | "driver": "pwm_hardware" 24 | }, 25 | "matrix_pins": { 26 | "cols": ["GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP1"], 27 | "rows": ["GP29", "GP28", "GP27", "GP26"] 28 | }, 29 | "ws2812": { 30 | "driver": "vendor", 31 | "pin": "GP11" 32 | }, 33 | "layouts": { 34 | "LAYOUT_54": { 35 | "layout": [ 36 | {"matrix": [0, 0], "x": 0, "y": 0}, 37 | {"matrix": [0, 1], "x": 1, "y": 0}, 38 | {"matrix": [0, 2], "x": 2, "y": 0}, 39 | {"matrix": [0, 3], "x": 3, "y": 0}, 40 | {"matrix": [0, 4], "x": 4, "y": 0}, 41 | {"matrix": [0, 5], "x": 5, "y": 0}, 42 | {"matrix": [0, 6], "x": 6, "y": 0}, 43 | {"matrix": [4, 6], "x": 13, "y": 0}, 44 | {"matrix": [4, 5], "x": 12, "y": 0}, 45 | {"matrix": [4, 4], "x": 11, "y": 0}, 46 | {"matrix": [4, 3], "x": 10, "y": 0}, 47 | {"matrix": [4, 2], "x": 9, "y": 0}, 48 | {"matrix": [4, 1], "x": 8, "y": 0}, 49 | {"matrix": [4, 0], "x": 7, "y": 0}, 50 | 51 | {"matrix": [1, 0], "x": 0, "y": 1}, 52 | {"matrix": [1, 1], "x": 1, "y": 1}, 53 | {"matrix": [1, 2], "x": 2, "y": 1}, 54 | {"matrix": [1, 3], "x": 3, "y": 1}, 55 | {"matrix": [1, 4], "x": 4, "y": 1}, 56 | {"matrix": [1, 5], "x": 5, "y": 1}, 57 | {"matrix": [1, 6], "x": 6, "y": 1}, 58 | {"matrix": [5, 6], "x": 13, "y": 1}, 59 | {"matrix": [5, 5], "x": 12, "y": 1}, 60 | {"matrix": [5, 4], "x": 11, "y": 1}, 61 | {"matrix": [5, 3], "x": 10, "y": 1}, 62 | {"matrix": [5, 2], "x": 9, "y": 1}, 63 | {"matrix": [5, 1], "x": 8, "y": 1}, 64 | {"matrix": [5, 0], "x": 7, "y": 1}, 65 | 66 | {"matrix": [2, 0], "x": 0, "y": 2}, 67 | {"matrix": [2, 1], "x": 1, "y": 2}, 68 | {"matrix": [2, 2], "x": 2, "y": 2}, 69 | {"matrix": [2, 3], "x": 3, "y": 2}, 70 | {"matrix": [2, 4], "x": 4, "y": 2}, 71 | {"matrix": [2, 5], "x": 5, "y": 2}, 72 | {"matrix": [6, 5], "x": 12, "y": 2}, 73 | {"matrix": [6, 4], "x": 11, "y": 2}, 74 | {"matrix": [6, 3], "x": 10, "y": 2}, 75 | {"matrix": [6, 2], "x": 9, "y": 2}, 76 | {"matrix": [6, 1], "x": 8, "y": 2}, 77 | {"matrix": [6, 0], "x": 7, "y": 2}, 78 | 79 | {"matrix": [3, 0], "x": 0, "y": 3}, 80 | {"matrix": [3, 1], "x": 1, "y": 3}, 81 | {"matrix": [7, 1], "x": 1, "y": 4}, 82 | {"matrix": [7, 0], "x": 0, "y": 4}, 83 | 84 | {"matrix": [2, 6], "x": 6, "y": 2}, 85 | {"matrix": [3, 6], "x": 6, "y": 3}, 86 | {"matrix": [7, 6], "x": 6, "y": 4}, 87 | {"matrix": [6, 6], "x": 13, "y": 2}, 88 | 89 | {"matrix": [3, 3], "x": 3, "y": 3}, 90 | {"matrix": [3, 4], "x": 4, "y": 3}, 91 | {"matrix": [3, 5], "x": 5, "y": 3}, 92 | {"matrix": [7, 5], "x": 5, "y": 4}, 93 | {"matrix": [7, 4], "x": 4, "y": 4}, 94 | {"matrix": [7, 3], "x": 3, "y": 4} 95 | ] 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top/iyada_top-Edge_Cuts.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3+1*% 2 | %TF.CreationDate,2024-08-06T22:55:28-04:00*% 3 | %TF.ProjectId,iyada_flip,69796164-615f-4666-9c69-702e6b696361,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 8.0.3+1) date 2024-08-06 22:55:28* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.050000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X167674889Y-44841616D02* 19 | X114300009Y-44841012D01* 20 | X202341005Y-143915999D02* 21 | X221845203Y-149677473D01* 22 | X113923619Y-44877835D02* 23 | X73188008Y-50418015D01* 24 | X227471007Y-138606010D02* 25 | X232747251Y-120945409D01* 26 | X230737010Y-48673009D02* 27 | X210572395Y-48674845D01* 28 | X232747251Y-120945409D02* 29 | X232713965Y-93018961D01* 30 | X118871015Y-133856000D02* 31 | X183431003Y-140105999D01* 32 | X71079586Y-127393057D02* 33 | G75* 34 | G02* 35 | X71486590Y-126748765I713214J157D01* 36 | G01* 37 | X71374013Y-113021705D02* 38 | G75* 39 | G02* 40 | X71781046Y-113666000I-306413J-644295D01* 41 | G01* 42 | X227471007Y-138606010D02* 43 | X224217309Y-148137000D01* 44 | X183431003Y-140105999D02* 45 | X202341005Y-143915999D01* 46 | X224217309Y-148137000D02* 47 | G75* 48 | G02* 49 | X221845212Y-149677433I-1956309J415900D01* 50 | G01* 51 | X71786003Y-123666007D02* 52 | X71791004Y-126165997D01* 53 | X71188001Y-52418007D02* 54 | G75* 55 | G02* 56 | X73188008Y-50418001I1999999J7D01* 57 | G01* 58 | X71069590Y-112438955D02* 59 | X71188001Y-52418007D01* 60 | X113923619Y-44877835D02* 61 | G75* 62 | G02* 63 | X114300009Y-44841021I359681J-1734865D01* 64 | G01* 65 | X230737010Y-48673009D02* 66 | G75* 67 | G02* 68 | X232736991Y-50673000I90J-1999891D01* 69 | G01* 70 | X73063292Y-133794222D02* 71 | G75* 72 | G02* 73 | X71063278Y-131794211I8J2000022D01* 74 | G01* 75 | X210572395Y-48674845D02* 76 | X168051275Y-44878441D01* 77 | X71781006Y-113666000D02* 78 | X71786003Y-123666007D01* 79 | X73063292Y-133794222D02* 80 | X118871015Y-133856000D01* 81 | X71791004Y-126165997D02* 82 | G75* 83 | G02* 84 | X71486583Y-126748755I-709804J-103D01* 85 | G01* 86 | X71079586Y-127393057D02* 87 | X71063303Y-131794211D01* 88 | X232713965Y-93018961D02* 89 | X232737004Y-50673000D01* 90 | X71374013Y-113021718D02* 91 | G75* 92 | G02* 93 | X71069549Y-112438955I405787J582918D01* 94 | G01* 95 | X167674889Y-44841616D02* 96 | G75* 97 | G02* 98 | X168051276Y-44878437I16511J-1773384D01* 99 | G01* 100 | %TO.C,REF\u002A\u002A*% 101 | X205920902Y-121870882D02* 102 | X207681559Y-122245116D01* 103 | X208037379Y-122014049D02* 104 | X210864978Y-108711241D01* 105 | X208517415Y-108212247D02* 106 | X205689825Y-121515061D01* 107 | X210633907Y-108355424D02* 108 | X208873255Y-107981185D01* 109 | X205920902Y-121870882D02* 110 | G75* 111 | G02* 112 | X205689824Y-121515061I62367J293447D01* 113 | G01* 114 | X208037379Y-122014049D02* 115 | G75* 116 | G02* 117 | X207681558Y-122245119I-293444J62373D01* 118 | G01* 119 | X208517415Y-108212247D02* 120 | G75* 121 | G02* 122 | X208873257Y-107981176I293453J-62380D01* 123 | G01* 124 | X210633907Y-108355424D02* 125 | G75* 126 | G02* 127 | X210864978Y-108711241I-62373J-293444D01* 128 | G01* 129 | X189084530Y-118292192D02* 130 | X190845196Y-118666433D01* 131 | X191201017Y-118435368D02* 132 | X194028614Y-105132551D01* 133 | X191681058Y-104633567D02* 134 | X188853456Y-117936371D01* 135 | X193797548Y-104776739D02* 136 | X192036876Y-104402496D01* 137 | X189084530Y-118292192D02* 138 | G75* 139 | G02* 140 | X188853459Y-117936372I62373J293445D01* 141 | G01* 142 | X191201017Y-118435368D02* 143 | G75* 144 | G02* 145 | X190845195Y-118666437I-293448J62380D01* 146 | G01* 147 | X191681058Y-104633567D02* 148 | G75* 149 | G02* 150 | X192036876Y-104402496I293444J-62373D01* 151 | G01* 152 | X193797548Y-104776739D02* 153 | G75* 154 | G02* 155 | X194028612Y-105132551I-62380J-293442D01* 156 | G01* 157 | %TD*% 158 | M02* 159 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/graphics/default/default_oled.c: -------------------------------------------------------------------------------- 1 | // This file exists for the sake of convenience, specifically to make adding and changing OLED graphics more straight-forward. 2 | 3 | #include QMK_KEYBOARD_H 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "keyboard.h" 9 | #include "layers.h" 10 | 11 | #include "iyada_frame_0.h" 12 | #include "iyada_frame_1.h" 13 | #include "iyada_frame_2.h" 14 | #include "main_graphic.h" 15 | #include "symbol_graphic.h" 16 | #include "mouse_graphic.h" 17 | #include "game_graphic.h" 18 | #include "plover_graphic.h" 19 | 20 | #define FRAME_DURATION 333 21 | #define LOGO_INTERVAL 20000 22 | #define GLITCH_INTERVAL 21998 23 | 24 | uint8_t current_frame = 0; 25 | 26 | static void render_logo(void); 27 | static void render_animation(void); 28 | 29 | static void render_logo(void) { 30 | 31 | uint32_t utime = 0; 32 | 33 | if (timer_elapsed(utime) < LOGO_INTERVAL) { 34 | utime = timer_read(); 35 | oled_write_raw_P(iyada_logo_0, iyada_logo_0_length); 36 | } else { 37 | render_animation(); 38 | } 39 | } 40 | 41 | 42 | #if defined(_QWERTY) || defined(_QWE) 43 | static void render_main(void) { 44 | oled_write_raw_P(main_logo, main_logo_length); 45 | } 46 | #endif 47 | 48 | #if defined(_SYMBOL) || defined(_SYM) 49 | static void render_symbol(void) { 50 | oled_write_raw_P(symbol_logo, symbol_logo_length); 51 | } 52 | #endif 53 | 54 | #if defined(_MOUSE) || defined(_MOU) 55 | static void render_mouse(void) { 56 | oled_write_raw_P(mouse_logo, mouse_logo_length); 57 | } 58 | #endif 59 | 60 | #if defined(_GAMES) || defined(_GAM) 61 | static void render_games(void) { 62 | oled_write_raw_P(game_logo, game_logo_length); 63 | } 64 | #endif 65 | 66 | #if defined(_STENO) || defined(_STE) 67 | static void render_steno(void) { 68 | oled_write_raw_P(plover_logo, plover_logo_length); 69 | } 70 | #endif 71 | static void render_animation(void) { 72 | 73 | uint32_t timer = 0; 74 | 75 | static const char* bitmap_allArray[3] = { 76 | iyada_logo_0, 77 | iyada_logo_1, 78 | iyada_logo_2 79 | }; 80 | 81 | uint16_t frame_sizes[3] = { 82 | iyada_logo_0_length, 83 | iyada_logo_1_length, 84 | iyada_logo_2_length 85 | }; 86 | 87 | if (timer_elapsed(timer) > FRAME_DURATION && timer_elapsed(timer) < GLITCH_INTERVAL) { 88 | timer = timer_read(); 89 | current_frame = (current_frame + 1) % (sizeof(bitmap_allArray) / sizeof(bitmap_allArray[0])); 90 | oled_write_raw_P(bitmap_allArray[current_frame], frame_sizes[current_frame]); 91 | } 92 | if (timer_elapsed(timer) > GLITCH_INTERVAL) { 93 | current_frame = 0; 94 | oled_write_raw_P(bitmap_allArray[current_frame], frame_sizes[current_frame]); 95 | } 96 | } 97 | 98 | //Draw to OLED 99 | bool oled_task_user() { 100 | // Set cursor position 101 | oled_set_cursor(0, 0); 102 | 103 | if (is_keyboard_left()) { 104 | // Write current layer to OLED display 105 | switch (get_highest_layer(layer_state)) { 106 | #ifdef _QWERTY 107 | case _QWERTY : 108 | render_main(); 109 | break; 110 | #endif 111 | 112 | #ifdef _SYMBOL 113 | case _SYMBOL : 114 | render_symbol(); 115 | break; 116 | #endif 117 | 118 | #ifdef _MOUSE 119 | case _MOUSE : 120 | render_mouse(); 121 | break; 122 | #endif 123 | 124 | #ifdef _QWE 125 | case _QWE : 126 | render_main(); 127 | break; 128 | #endif 129 | 130 | #ifdef _SYM 131 | case _SYM : 132 | render_symbol(); 133 | break; 134 | #endif 135 | 136 | #ifdef _MOU 137 | case _MOU : 138 | render_mouse(); 139 | break; 140 | #endif 141 | 142 | #ifdef JOYSTICK_ENABLE 143 | 144 | #ifdef _GAMES 145 | case _GAMES : 146 | render_games(); 147 | break; 148 | #endif 149 | 150 | #ifdef _GAM 151 | case _GAM : 152 | render_games(); 153 | break; 154 | #endif 155 | 156 | #endif 157 | 158 | #ifdef STENO_ENABLE 159 | 160 | #ifdef _STENO 161 | case _STENO : 162 | render_steno(); 163 | break; 164 | #endif 165 | 166 | #ifdef _STE 167 | case _STE : 168 | render_steno(); 169 | break; 170 | #endif 171 | 172 | #endif 173 | 174 | } 175 | } else { 176 | render_logo(); 177 | } 178 | return false; 179 | } 180 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/rgb_defaults.c: -------------------------------------------------------------------------------- 1 | #include QMK_KEYBOARD_H 2 | #include "keyboard.h" 3 | 4 | #if __has_include( "layers.h" ) && defined(LAYER_MAP) 5 | #include "layers.h" 6 | #endif 7 | 8 | #ifdef AUDIO_ENABLE 9 | #include "song_list.h" 10 | #endif 11 | 12 | //Audio - Parsing songs already available in QMK itself into their own variables 13 | #ifdef AUDIO_ENABLE 14 | float qwe_song[][2] = SONG(TERMINAL_SOUND); 15 | float sym_song[][2] = SONG(UNICODE_WINDOWS); 16 | float mou_song[][2] = SONG(UNICODE_LINUX); 17 | float gam_song[][2] = SONG(AUDIO_ON_SOUND); 18 | float ste_song[][2] = SONG(QWERTY_SOUND); 19 | #endif 20 | 21 | //Layers - Detecting the current active layer, then responding accordingly 22 | layer_state_t layer_state_set_kb(layer_state_t state) { 23 | switch (get_highest_layer(state)) { 24 | #ifdef _SYMBOL 25 | case _SYMBOL: 26 | rgblight_sethsv(125, 255, 160); /* RGB - TEAL */ 27 | 28 | #ifdef AUDIO_ENABLE 29 | PLAY_SONG(sym_song); 30 | #endif 31 | break; 32 | #endif 33 | #ifdef _SYM 34 | case _SYM: 35 | rgblight_sethsv(125, 255, 160); /* RGB - TEAL */ 36 | 37 | #ifdef AUDIO_ENABLE 38 | PLAY_SONG(sym_song); 39 | #endif 40 | break; 41 | #endif 42 | #ifdef _LOWER 43 | case _LOWER: 44 | rgblight_sethsv(125, 255, 160); /* RGB - TEAL */ 45 | 46 | #ifdef AUDIO_ENABLE 47 | PLAY_SONG(sym_song); 48 | #endif 49 | break; 50 | #endif 51 | #ifdef _MOUSE 52 | case _MOUSE: 53 | rgblight_sethsv(183, 255, 255); /* RGB - PURPLE */ 54 | 55 | #ifdef AUDIO_ENABLE 56 | PLAY_SONG(mou_song); 57 | #endif 58 | break; 59 | #endif 60 | #ifdef _MOU 61 | case _MOU: 62 | rgblight_sethsv(183, 255, 255); /* RGB - PURPLE */ 63 | 64 | #ifdef AUDIO_ENABLE 65 | PLAY_SONG(mou_song); 66 | #endif 67 | break; 68 | #endif 69 | #ifdef _RAISE 70 | case _RAISE: 71 | rgblight_sethsv(183, 255, 255); /* RGB - PURPLE */ 72 | 73 | #ifdef AUDIO_ENABLE 74 | PLAY_SONG(mou_song); 75 | #endif 76 | break; 77 | #endif 78 | #ifdef _GAMES 79 | case _GAMES: 80 | rgblight_sethsv(160, 255, 255); /* RGB - BLUE */ 81 | 82 | #ifdef AUDIO_ENABLE 83 | PLAY_SONG(gam_song); 84 | #endif 85 | break; 86 | #endif 87 | #ifdef _GAM 88 | case _GAM: 89 | rgblight_sethsv(160, 255, 255); /* RGB - BLUE */ 90 | 91 | #ifdef AUDIO_ENABLE 92 | PLAY_SONG(gam_song); 93 | #endif 94 | break; 95 | #endif 96 | #ifdef _ADJUST 97 | case _ADJUST: 98 | rgblight_sethsv(160, 255, 255); /* RGB - BLUE */ 99 | 100 | #ifdef AUDIO_ENABLE 101 | PLAY_SONG(gam_song); 102 | #endif 103 | break; 104 | #endif 105 | #ifdef _STENO 106 | case _STENO: 107 | rgblight_sethsv(85, 255, 255); /* RGB - GREEN */ 108 | 109 | #ifdef AUDIO_ENABLE 110 | PLAY_SONG(ste_song); 111 | #endif 112 | break; 113 | #endif 114 | #ifdef _STE 115 | case _STE: 116 | rgblight_sethsv(85, 255, 255); /* RGB - GREEN */ 117 | 118 | #ifdef AUDIO_ENABLE 119 | PLAY_SONG(ste_song); 120 | #endif 121 | break; 122 | #endif 123 | #ifdef _PLOVER 124 | case _PLOVER: 125 | rgblight_sethsv(85, 255, 255); /* RGB - GREEN */ 126 | 127 | #ifdef AUDIO_ENABLE 128 | PLAY_SONG(ste_song); 129 | #endif 130 | break; 131 | #endif 132 | #ifdef _MAIN 133 | case _MAIN: 134 | rgblight_sethsv(150, 30, 255); /* RGB - AZURE */ 135 | 136 | #ifdef AUDIO_ENABLE 137 | PLAY_SONG(ste_song); 138 | #endif 139 | break; 140 | #endif 141 | #ifdef _QWERTY 142 | case _QWERTY: 143 | rgblight_sethsv(150, 30, 255); /* RGB - AZURE */ 144 | 145 | #ifdef AUDIO_ENABLE 146 | PLAY_SONG(qwe_song); 147 | #endif 148 | break; 149 | #endif 150 | default: // Primary/default layer 151 | rgblight_sethsv(150, 30, 255); /* RGB - AZURE */ 152 | 153 | #ifdef AUDIO_ENABLE 154 | PLAY_SONG(qwe_song); 155 | #endif 156 | break; 157 | } 158 | return state; 159 | } 160 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/advanced/keymap.c: -------------------------------------------------------------------------------- 1 | #include "rev1/settings.h" 2 | 3 | // Keyboard layout 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 5 | [_QWERTY] = LAYOUT_54( 6 | TD_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, TD_GRV, 7 | GUI_DEL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, GUI_QUO, 8 | SC_LCPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RCPC, 9 | KC_DOWN, KC_LEFT, KC_RGHT, KC_UP, 10 | 11 | KC_WBAK, KC_MUTE, KC_MPLY, KC_WFWD, 12 | KC_SPC, TD_BCK, TT_SYM, TT_MOU, KC_ENT, KC_LSFT 13 | ), 14 | 15 | [_SYMBOL] = LAYOUT_54( 16 | KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, 17 | KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, 18 | KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_DOT, KC_QUES, KC_TRNS, 19 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 20 | 21 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 22 | KC_TRNS, KC_TRNS, KC_TRNS, TD_MOU, KC_TRNS, KC_TRNS 23 | ), 24 | 25 | [_MOUSE] = LAYOUT_54( 26 | KC_TRNS, RGB_VAD, CW_TOGG, KC_MS_U, AS_TOGG, DM_REC1, DT_UP, DT_DOWN, KC_ACL0, KC_BTN1, KC_UP, KC_BTN2, RGB_VAI, KC_TRNS, 27 | KC_TRNS, RGB_TOG, KC_MS_L, KC_MS_D, KC_MS_R, DM_RSTP, KC_TRNS, KC_TRNS, KC_ACL1, KC_LEFT, KC_DOWN, KC_RGHT, AU_TOGG, KC_TRNS, 28 | KC_TRNS, HF_PREV, HF_COND, HF_TOGG, AC_ON, DM_PLY1, KC_ACL2, AC_OFF, HF_RST, HF_CONU, HF_NEXT, KC_TRNS, 29 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 30 | 31 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 32 | KC_TRNS, KC_TRNS, TD_SYM, TD_QWE, KC_TRNS, KC_TRNS 33 | ), 34 | 35 | [_GAMES] = LAYOUT_54( 36 | GC_HOM, KC_NO, GC_L3, GC_L2, GC_L1, GC_L3, GC_SEL, GC_STA, GC_R3, GC_R1, GC_R2, GC_R3, KC_NO, TT_GAM, 37 | KC_NO, GC_L1, GC_L2, GC_R2, GC_R1, GC_DPU, KC_NO, KC_NO, GC_DPD, GC_CRO, GC_CIR, GC_SQU, GC_TRI, KC_NO, 38 | KC_NO, HF_PREV, HF_COND, HF_TOGG, KC_NO, GC_DPL, GC_DPR, KC_NO, HF_RST, HF_CONU, HF_NEXT, KC_NO, 39 | GC_SEL, GC_SEL, GC_STA, GC_STA, 40 | 41 | KC_TRNS, KC_SYRQ, KC_CNCL, KC_TRNS, 42 | GC_L1, GC_L2, GC_L3, GC_R3, GC_R2, GC_R1 43 | ), 44 | 45 | [_STENO] = LAYOUT_54( 46 | STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_RES1, STN_RES2, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, 47 | STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_FN, STN_FN, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, 48 | STN_FN, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, 49 | STN_ST2, STN_ST1, STN_ST3, STN_ST4, 50 | 51 | KC_NO, STN_RES1, STN_RES2, KC_NO, 52 | STN_A, STN_O, STN_ST1, STN_ST3, STN_E, STN_U 53 | ) 54 | }; 55 | 56 | // Encoders - Behaviour settings 57 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { 58 | // Layer - Left Rotary Encoder - Left Scroll Encoder - Right Scroll Encoder - Right Rotary Encoder 59 | [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_TABL, KC_TABR) }, 60 | [_SYMBOL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_TABL, KC_TABR) }, 61 | [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_TABL, KC_TABR) }, 62 | [_GAMES] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(GC_DPU, GC_DPD), ENCODER_CCW_CW(GC_DPL, GC_DPR), ENCODER_CCW_CW(KC_TABL, KC_TABR) }, 63 | [_STENO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_TABL, KC_TABR) }, 64 | }; 65 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/default/readme.md: -------------------------------------------------------------------------------- 1 | # Default Iyada Layout - Introduction 2 | 3 | The default layout is designed to be as simple and accessible as 4 | possible for as many people as possible. 5 | 6 | While this keymap does utilise layers and Space Cadet, it does not 7 | utilise any other advanced feature of QMK including Combos, Tap Dance, 8 | Custom Keycodes, Autocorrect, Autoshift, etc. 9 | 10 | # Default Iyada Layout - Diagrams 11 | 12 | 13 | 14 | 15 | MAIN LAYER 16 | 17 | ,---,---,---,---,---,---, ,---,---,---,---,---,---, 18 | |DEL| Q | W | E | R | T |---, ,---| Y | U | I | O | P | \ | 19 | '---'---'---'---'---'---| [ | | ] |---'---'---'---'---'---' 20 | |TAB| A | S | D | F | G '---' '---' H | J | K | L | ; | ' | 21 | '---'---'---'---'---'---| - | | = |---'---'---'---'---'---' 22 | |CTL| Z | X | C | V | B '---' '---' N | M | , | . | / |CTL| 23 | '---'---'---'---'---'---' '---'---'---'---'---'---' 24 | | V | < | | > | ^ | 25 | '---'---' ,---,---,---, ,---,---,---, '---'---' 26 | |SPC|BCK|LSY| |LMO|ENT|SFT| 27 | '---'---'---' '---'---'---' 28 | 29 | 30 | SYMBOL LAYER 31 | 32 | ,---,---,---,---,---,---, ,---,---,---,---,---,---, 33 | |ESC|F1 |F2 |F3 |F4 |F5 |---, ,---|F8 |F9 |F10|F11|F12| ` | 34 | '---'---'---'---'---'---|F6 | |F7 |---'---'---'---'---'---' 35 | |GUI| 1 | 2 | 3 | 4 | 5 '---' '---' 6 | 7 | 8 | 9 | 0 |GUI| 36 | '---'---'---'---'---'---| - | | = |---'---'---'---'---'---' 37 | |ALT| ! | @ | # | $ | % '---' '---' ^ | & | * | . | ? |ALT| 38 | '---'---'---'---'---'---' '---'---'---'---'---'---' 39 | | V | < | | > | ^ | 40 | '---'---' ,---,---,---, ,---,---,---, '---'---' 41 | |SPC|BCK|LQW| |LMO|ENT|SFT| 42 | '---'---'---' '---'---'---' 43 | 44 | 45 | MOUSE LAYER 46 | 47 | ,---,---,---,---,---,---, ,---,---,---,---,---,---, 48 | |EHL|LBD|MS2| ^ |MS1|AC0|---, ,---|AC0|MS1| ^ |MS2|LBI|EHR| 49 | '---'---'---'---'---'---|EHR| |EHL|---'---'---'---'---'---' 50 | |HOM|RGB| < | V | > |AC1'---' '---'AC1| < | V | > |AUD|END| 51 | '---'---'---'---'---'---|PSC| |INS|---'---'---'---'---'---' 52 | |PGD|PRV|HDN|HTG|LSD|AC2'---' '---'AC2|LSI|HRS|HUP|NXT|PGU| 53 | '---'---'---'---'---'---' '---'---'---'---'---'---' 54 | | V | < | | > | ^ | 55 | '---'---' ,---,---,---, ,---,---,---, '---'---' 56 | |SPC|BCK|LSY| |LQW|ENT|SFT| 57 | '---'---'---' '---'---'---' 58 | 59 | 60 | 61 | ,---, - Tap (Right Side): Right parenthesis - ) 62 | |CTL| - Hold (Right Side): Right Control key 63 | '---' 64 | 65 | ,---, - Tap (Left Side): Left parenthesis - ( 66 | |CTL| - Hold (Left Side): Left Control key 67 | '---' 68 | 69 | ,---, 70 | |PSC| - Tap or Hold: Print Screen key 71 | '---' 72 | 73 | ,---, 74 | |HOM| - Tap or Hold: Home key 75 | '---' 76 | 77 | ,---, 78 | |END| - Tap or Hold: End key 79 | '---' 80 | 81 | ,---, 82 | |LSY| - Tap or Hold: Symbol Layer Toggle 83 | '---' 84 | 85 | ,---, 86 | |LMO| - Tap or Hold: Mouse Layer Toggle 87 | '---' 88 | 89 | ,---, 90 | |LQW| - Tap or Hold: Main/QWERTY Layer Toggle 91 | '---' 92 | 93 | ,---, 94 | |AC0| - Tap or Hold: Cirque Mouse Cursor Acceleration - Low 95 | '---' 96 | 97 | ,---, 98 | |AC1| - Tap or Hold: Cirque Mouse Cursor Acceleration - Medium 99 | '---' 100 | 101 | ,---, 102 | |AC2| - Tap or Hold: Cirque Mouse Cursor Acceleration - High 103 | '---' 104 | 105 | ,---, 106 | |EHL| - Tap or Hold: Declare the Half that's Currently Plugged in to be the Left Half 107 | '---' 108 | 109 | ,---, 110 | |EHR| - Tap or Hold: Declare the Half that's Currently Plugged in to be the Right Half 111 | '---' 112 | 113 | ,---, 114 | |RGB| - Tap or Hold: RGB LED Toggle 115 | '---' 116 | 117 | ,---, 118 | |AUD| - Tap or Hold: Audio Toggle 119 | '---' 120 | 121 | ,---, 122 | |LBD| - Tap or Hold: RGB LED Brightness - Decrease 123 | '---' 124 | 125 | ,---, 126 | |LBI| - Tap or Hold: RGB LED Brightness - Increase 127 | '---' 128 | 129 | ,---, 130 | |LSD| - Tap or Hold: RGB LED Saturation - Decrease 131 | '---' 132 | 133 | ,---, 134 | |LSI| - Tap or Hold: RGB LED Saturation - Increase 135 | '---' 136 | 137 | ,---, 138 | |PRV| - Tap or Hold: Haptic feedback modules - Previous waveform 139 | '---' 140 | 141 | ,---, 142 | |HDN| - Tap or Hold: Haptic feedback modules - Decrease strength 143 | '---' 144 | 145 | ,---, 146 | |HTG| - Tap or Hold: Haptic feedback modules - Toggle on/off 147 | '---' 148 | 149 | ,---, 150 | |HRS| - Tap or Hold: Haptic feedback modules - Reset waveform and strength to default 151 | '---' 152 | 153 | ,---, 154 | |HUP| - Tap or Hold: Haptic feedback modules - Increase strength 155 | '---' 156 | 157 | ,---, 158 | |NXT| - Tap or Hold: Haptic feedback modules - Next waveform 159 | '---' 160 | 161 | 162 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom/iyada_bottom-PTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 8.0.4+1} date 2024-08-17T00:02:31-0400 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2024-08-17T00:02:31-04:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.4+1 6 | ; #@! TF.FileFunction,Plated,1,2,PTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,Plated,PTH,ViaDrill 10 | T1C0.0118 11 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 12 | T2C0.0390 13 | % 14 | G90 15 | G05 16 | T1 17 | X2.9003Y-4.6255 18 | X2.9128Y-4.4636 19 | X2.9242Y-4.7232 20 | X3.0394Y-4.9083 21 | X3.26Y-2.813 22 | X3.3368Y-2.7758 23 | X3.3594Y-2.9839 24 | X3.3865Y-4.8942 25 | X3.452Y-4.8884 26 | X3.6336Y-2.3536 27 | X3.6921Y-2.1067 28 | X3.7079Y-3.1917 29 | X3.8024Y-2.2305 30 | X3.805Y-3.1275 31 | X3.8095Y-2.9974 32 | X3.8486Y-2.2923 33 | X3.8486Y-3.8278 34 | X3.8561Y-2.0522 35 | X3.889Y-2.54 36 | X3.8917Y-2.185 37 | X3.8917Y-3.7205 38 | X3.8984Y-2.0774 39 | X3.8984Y-3.6128 40 | X3.9014Y-3.1655 41 | X3.9032Y-3.0604 42 | X3.9071Y-2.3998 43 | X3.9071Y-3.9352 44 | X3.9124Y-2.9742 45 | X3.9203Y-2.2114 46 | X3.9203Y-3.7469 47 | X3.9305Y-2.2941 48 | X3.9305Y-3.8295 49 | X3.958Y-2.985 50 | X3.9587Y-2.3693 51 | X3.9587Y-3.9047 52 | X3.9861Y-3.0602 53 | X3.987Y-4.0754 54 | X3.9963Y-3.1428 55 | X4.0041Y-3.5594 56 | X4.0042Y-2.38 57 | X4.0042Y-3.9155 58 | X4.0095Y-2.9545 59 | X4.0134Y-2.2939 60 | X4.0134Y-3.8293 61 | X4.0152Y-2.1887 62 | X4.0152Y-3.7242 63 | X4.0156Y-5.1228 64 | X4.0182Y-3.2769 65 | X4.0249Y-3.1692 66 | X4.0276Y-2.8143 67 | X4.0605Y-3.3021 68 | X4.068Y-3.0619 69 | X4.0819Y-4.8801 70 | X4.1075Y-3.8909 71 | X4.108Y-2.3567 72 | X4.1091Y-3.089 73 | X4.3612Y-2.2809 74 | X4.4439Y-3.7232 75 | X4.4528Y-3.0843 76 | X4.515Y-4.9319 77 | X4.5735Y-3.0486 78 | X4.5752Y-2.2004 79 | X4.5752Y-3.7297 80 | X4.578Y-4.9157 81 | X4.5804Y-2.9181 82 | X4.6163Y-2.2136 83 | X4.6163Y-3.7488 84 | X4.6238Y-1.9734 85 | X4.6567Y-2.4612 86 | X4.6567Y-3.9965 87 | X4.6594Y-2.1063 88 | X4.6594Y-3.6415 89 | X4.6661Y-1.9986 90 | X4.6661Y-3.5339 91 | X4.6691Y-3.0868 92 | X4.6691Y-3.0868 93 | X4.6709Y-2.9816 94 | X4.6709Y-2.9816 95 | X4.6748Y-2.321 96 | X4.6748Y-3.8563 97 | X4.6801Y-2.8955 98 | X4.6801Y-2.8955 99 | X4.688Y-2.1327 100 | X4.688Y-3.6679 101 | X4.6982Y-2.2154 102 | X4.6982Y-3.7506 103 | X4.7257Y-2.9062 104 | X4.7257Y-2.9062 105 | X4.7264Y-2.2906 106 | X4.7264Y-3.8258 107 | X4.7538Y-2.9814 108 | X4.7538Y-2.9814 109 | X4.7621Y-4.862 110 | X4.7641Y-3.0641 111 | X4.7641Y-3.0641 112 | X4.7719Y-3.4805 113 | X4.7719Y-2.3013 114 | X4.7719Y-3.8365 115 | X4.7772Y-2.8757 116 | X4.7772Y-2.8757 117 | X4.7811Y-2.2152 118 | X4.7811Y-3.7504 119 | X4.7829Y-2.11 120 | X4.7829Y-3.6452 121 | X4.7859Y-3.1981 122 | X4.7859Y-3.1981 123 | X4.7926Y-3.0905 124 | X4.7926Y-3.0905 125 | X4.7954Y-2.7356 126 | X4.7954Y-2.7356 127 | X4.8282Y-3.2233 128 | X4.8282Y-3.2233 129 | X4.8357Y-2.9832 130 | X4.8357Y-2.9832 131 | X4.8756Y-2.277 132 | X4.8763Y-3.8126 133 | X4.8769Y-3.0016 134 | X4.8787Y-2.1471 135 | X5.0667Y-3.813 136 | X5.1967Y-2.9856 137 | X5.2045Y-2.0931 138 | X5.341Y-2.9305 139 | X5.3429Y-2.0766 140 | X5.3429Y-3.611 141 | X5.3443Y-2.8011 142 | X5.384Y-2.0955 143 | X5.3841Y-3.6309 144 | X5.3915Y-1.8553 145 | X5.3915Y-3.3907 146 | X5.4244Y-2.3431 147 | X5.4244Y-3.8785 148 | X5.4271Y-1.9882 149 | X5.4272Y-3.5236 150 | X5.4338Y-1.8805 151 | X5.4339Y-3.4159 152 | X5.4369Y-2.9687 153 | X5.4387Y-2.8635 154 | X5.4425Y-2.2029 155 | X5.4425Y-3.7384 156 | X5.4478Y-2.7774 157 | X5.4557Y-2.0146 158 | X5.4557Y-3.55 159 | X5.4659Y-2.0972 160 | X5.4659Y-3.6327 161 | X5.4934Y-2.7881 162 | X5.4941Y-2.1724 163 | X5.4941Y-3.7079 164 | X5.5215Y-2.8633 165 | X5.5318Y-2.946 166 | X5.5396Y-2.1832 167 | X5.5397Y-3.7186 168 | X5.5449Y-2.7576 169 | X5.5488Y-2.097 170 | X5.5488Y-3.6325 171 | X5.5506Y-1.9919 172 | X5.5506Y-3.5273 173 | X5.5536Y-3.08 174 | X5.5603Y-2.9724 175 | X5.5631Y-2.6174 176 | X5.5959Y-3.1052 177 | X5.6034Y-2.8651 178 | X5.6427Y-2.1589 179 | X5.6431Y-3.6945 180 | X5.6446Y-2.9094 181 | X5.6458Y-3.5664 182 | X5.6468Y-2.0298 183 | X5.8986Y-3.6404 184 | X5.901Y-2.0939 185 | X6.0254Y-3.0465 186 | X6.1067Y-3.0467 187 | X6.1104Y-2.1913 188 | X6.1106Y-3.7368 189 | X6.1122Y-2.9185 190 | X6.1516Y-2.2134 191 | X6.1518Y-3.749 192 | X6.1591Y-1.9732 193 | X6.1593Y-3.5089 194 | X6.1919Y-2.461 195 | X6.1921Y-3.9967 196 | X6.1947Y-2.1061 197 | X6.1949Y-3.6417 198 | X6.2014Y-1.9984 199 | X6.2016Y-3.5341 200 | X6.2046Y-3.0868 201 | X6.2064Y-2.9816 202 | X6.2101Y-2.3208 203 | X6.2103Y-3.8565 204 | X6.2155Y-2.8955 205 | X6.2232Y-2.1325 206 | X6.2234Y-3.6681 207 | X6.2335Y-2.2152 208 | X6.2337Y-3.7508 209 | X6.2611Y-2.9062 210 | X6.2616Y-2.2904 211 | X6.2618Y-3.826 212 | X6.2893Y-2.9814 213 | X6.2995Y-3.0641 214 | X6.3072Y-2.3011 215 | X6.3074Y-3.8367 216 | X6.3127Y-2.8757 217 | X6.3163Y-2.215 218 | X6.3165Y-3.7506 219 | X6.3181Y-2.1098 220 | X6.3183Y-3.6454 221 | X6.3213Y-3.1981 222 | X6.328Y-3.0905 223 | X6.3308Y-2.7356 224 | X6.3637Y-3.2233 225 | X6.3711Y-2.9832 226 | X6.4108Y-2.2766 227 | X6.4123Y-3.0089 228 | X6.4133Y-3.8156 229 | X6.4139Y-2.1473 230 | X6.4141Y-3.6831 231 | X6.4545Y-3.261 232 | X6.6069Y-3.1081 233 | X6.6921Y-2.2018 234 | X6.6988Y-3.7957 235 | X6.8764Y-3.1671 236 | X6.8783Y-2.301 237 | X6.8783Y-3.8486 238 | X6.8796Y-3.0389 239 | X6.9195Y-2.3317 240 | X6.9195Y-3.8673 241 | X6.927Y-2.0915 242 | X6.927Y-3.6272 243 | X6.9598Y-2.5793 244 | X6.9598Y-4.115 245 | X6.9626Y-2.2244 246 | X6.9626Y-3.76 247 | X6.9693Y-2.1167 248 | X6.9693Y-3.6524 249 | X6.9723Y-3.2049 250 | X6.9741Y-3.0997 251 | X6.978Y-2.4392 252 | X6.978Y-3.9748 253 | X6.9832Y-3.0136 254 | X6.9911Y-2.2508 255 | X6.9911Y-3.7864 256 | X7.0014Y-2.3335 257 | X7.0014Y-3.8691 258 | X7.0288Y-3.0243 259 | X7.0295Y-2.4087 260 | X7.0295Y-3.9443 261 | X7.057Y-3.0995 262 | X7.0672Y-3.1822 263 | X7.0751Y-2.4194 264 | X7.0751Y-3.955 265 | X7.0804Y-2.9938 266 | X7.0843Y-2.3333 267 | X7.0843Y-3.8689 268 | X7.0861Y-2.2281 269 | X7.0861Y-3.7637 270 | X7.0891Y-3.3163 271 | X7.0957Y-3.2086 272 | X7.0985Y-2.8537 273 | X7.1314Y-3.3415 274 | X7.1389Y-3.1013 275 | X7.1752Y-3.9284 276 | X7.18Y-3.1531 277 | X7.1815Y-2.2654 278 | X7.1824Y-3.802 279 | X7.3659Y-3.9278 280 | T2 281 | X3.1882Y-3.0804 282 | X3.1882Y-3.3804 283 | X3.3063Y-3.0791 284 | X3.3063Y-3.3791 285 | X3.4244Y-3.0804 286 | X3.4244Y-3.3804 287 | X3.5425Y-3.0804 288 | X3.5425Y-3.3804 289 | X4.4621Y-4.7272 290 | X4.7621Y-4.7272 291 | M30 292 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top/iyada_top-PTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 8.0.3+1} date 2024-08-06T22:55:25-0400 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2024-08-06T22:55:25-04:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3+1 6 | ; #@! TF.FileFunction,Plated,1,2,PTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,Plated,PTH,ViaDrill 10 | T1C0.0118 11 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 12 | T2C0.0354 13 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 14 | T3C0.0390 15 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 16 | T4C0.0394 17 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 18 | T5C0.0433 19 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 20 | T6C0.0591 21 | % 22 | G90 23 | G05 24 | T1 25 | X2.9731Y-2.3854 26 | X2.9731Y-3.1472 27 | X2.9731Y-3.9336 28 | X2.9959Y-4.7173 29 | X2.9973Y-4.7929 30 | X3.0028Y-4.6429 31 | X3.02Y-4.85 32 | X3.0336Y-4.9288 33 | X3.2095Y-4.6761 34 | X3.2368Y-2.6853 35 | X3.2406Y-4.2186 36 | X3.2433Y-3.8006 37 | X3.2443Y-3.4509 38 | X3.2443Y-2.2648 39 | X3.2451Y-3.0329 40 | X3.3654Y-3.8835 41 | X3.3678Y-3.1156 42 | X3.4158Y-2.3473 43 | X3.4776Y-4.9845 44 | X3.478Y-4.5682 45 | X3.5137Y-3.1452 46 | X3.5137Y-3.9277 47 | X3.5139Y-2.417 48 | X3.5612Y-4.1285 49 | X3.5637Y-3.3576 50 | X3.5643Y-2.6078 51 | X3.6091Y-4.652 52 | X3.7406Y-3.1025 53 | X3.7406Y-2.3259 54 | X3.7408Y-3.872 55 | X3.7499Y-4.68 56 | X3.799Y-4.8909 57 | X3.977Y-4.6371 58 | X4.0093Y-2.6432 59 | X4.0096Y-4.1806 60 | X4.0097Y-3.7607 61 | X4.0115Y-2.2258 62 | X4.0118Y-3.4117 63 | X4.0126Y-2.9931 64 | X4.1493Y-2.3109 65 | X4.1528Y-3.8479 66 | X4.1611Y-3.0776 67 | X4.2459Y-4.9452 68 | X4.2467Y-4.5288 69 | X4.2814Y-3.8708 70 | X4.2814Y-2.3694 71 | X4.2814Y-3.1094 72 | X4.3275Y-3.3198 73 | X4.3277Y-4.0856 74 | X4.3315Y-2.5565 75 | X4.3859Y-4.6148 76 | X4.5085Y-3.7929 77 | X4.5085Y-2.2531 78 | X4.5087Y-3.0242 79 | X4.5176Y-4.6407 80 | X4.5695Y-4.8521 81 | X4.7776Y-2.568 82 | X4.7787Y-3.3351 83 | X4.7788Y-3.6819 84 | X4.779Y-2.9144 85 | X4.7791Y-4.1019 86 | X4.7792Y-2.1471 87 | X4.9209Y-3.7674 88 | X4.9209Y-2.2304 89 | X4.927Y-3.0004 90 | X5.0489Y-3.0291 91 | X5.0491Y-3.7879 92 | X5.0493Y-2.2924 93 | X5.0984Y-3.2403 94 | X5.0988Y-4.0082 95 | X5.1033Y-2.4842 96 | X5.276Y-3.6716 97 | X5.2762Y-2.1352 98 | X5.2762Y-2.907 99 | X5.5443Y-3.2129 100 | X5.5463Y-2.7963 101 | X5.5465Y-3.5638 102 | X5.5469Y-2.0284 103 | X5.5472Y-2.4464 104 | X5.5476Y-3.9812 105 | X5.6038Y-4.5516 106 | X5.6235Y-4.7845 107 | X5.6713Y-3.6447 108 | X5.6853Y-2.1134 109 | X5.6931Y-2.8811 110 | X5.8171Y-2.921 111 | X5.8174Y-3.6771 112 | X5.8178Y-2.1635 113 | X5.863Y-3.8915 114 | X5.8651Y-3.121 115 | X5.8715Y-2.347 116 | X6.0439Y-3.0303 117 | X6.0439Y-3.7909 118 | X6.0439Y-2.2568 119 | X6.311Y-4.0987 120 | X6.3128Y-3.3314 121 | X6.3132Y-3.6819 122 | X6.3142Y-2.5704 123 | X6.3144Y-2.9148 124 | X6.3158Y-2.1465 125 | X6.4461Y-3.768 126 | X6.4481Y-2.9993 127 | X6.4508Y-2.2331 128 | X6.5846Y-3.8106 129 | X6.5846Y-2.2901 130 | X6.5848Y-3.0304 131 | X6.6291Y-4.9518 132 | X6.6321Y-3.238 133 | X6.6354Y-4.009 134 | X6.6391Y-2.463 135 | X6.7052Y-4.47 136 | X6.7396Y-4.4694 137 | X6.8062Y-4.4381 138 | X6.8117Y-3.9184 139 | X6.8117Y-3.1474 140 | X6.8117Y-2.3669 141 | X6.8178Y-4.5019 142 | X6.8628Y-5.2875 143 | X6.9094Y-4.8749 144 | X7.0504Y-4.9697 145 | X7.0619Y-2.6493 146 | X7.0797Y-4.217 147 | X7.0802Y-3.7998 148 | X7.0831Y-3.4509 149 | X7.0833Y-3.0329 150 | X7.0853Y-2.2652 151 | X7.1669Y-5.0057 152 | X7.1921Y-5.2313 153 | X7.2256Y-2.3514 154 | X7.2262Y-3.1199 155 | X7.2323Y-3.8851 156 | X7.3521Y-3.9121 157 | X7.3523Y-2.3739 158 | X7.3523Y-3.1714 159 | X7.3964Y-2.6343 160 | X7.3994Y-3.3572 161 | X7.4013Y-4.1281 162 | X7.4314Y-5.0536 163 | X7.5792Y-2.7629 164 | X7.5794Y-3.5249 165 | X7.5961Y-2.1906 166 | X7.6294Y-5.4093 167 | X7.7158Y-5.0042 168 | X7.7418Y-2.1865 169 | X7.8137Y-3.8328 170 | X7.8364Y-5.1099 171 | X7.8502Y-3.0653 172 | X7.8512Y-2.6489 173 | X7.8522Y-3.4162 174 | X7.9595Y-5.3873 175 | X7.9597Y-5.1685 176 | X7.9825Y-4.4146 177 | X7.9884Y-2.7341 178 | X7.9933Y-3.4977 179 | X8.0016Y-4.3164 180 | X8.0189Y-2.1948 181 | X8.12Y-2.7604 182 | X8.12Y-3.5558 183 | X8.1646Y-2.1962 184 | X8.1671Y-2.9734 185 | X8.1673Y-3.7409 186 | X8.2076Y-3.1489 187 | X8.2088Y-2.4395 188 | X8.2133Y-2.5499 189 | X8.2184Y-2.5026 190 | X8.2221Y-5.2257 191 | X8.379Y-5.609 192 | X8.3966Y-3.9458 193 | X8.4697Y-3.8846 194 | X8.513Y-5.2157 195 | X8.6311Y-5.3407 196 | X8.637Y-3.2669 197 | X8.6473Y-4.3869 198 | X8.6481Y-3.685 199 | X8.6593Y-4.8126 200 | X8.6594Y-2.8936 201 | X8.6643Y-3.5844 202 | X8.6797Y-3.6472 203 | X8.713Y-5.6216 204 | X8.7333Y-5.4019 205 | X8.7598Y-4.1059 206 | X8.8434Y-2.2414 207 | X8.9164Y-2.6651 208 | X8.9174Y-2.5627 209 | X8.918Y-2.7711 210 | X8.9582Y-3.5664 211 | X8.9649Y-3.6641 212 | X8.9903Y-4.4565 213 | X9.077Y-3.528 214 | T2 215 | X7.625Y-4.543 216 | X7.6458Y-4.4452 217 | X7.6598Y-4.1475 218 | X7.6666Y-4.3474 219 | X7.6874Y-4.2496 220 | X7.731Y-4.1627 221 | X8.0578Y-4.635 222 | X8.0785Y-4.5372 223 | X8.0993Y-4.4394 224 | X8.1156Y-4.2444 225 | X8.1201Y-4.3416 226 | X8.1869Y-4.2596 227 | T3 228 | X3.0934Y-3.5159 229 | X3.0934Y-4.2837 230 | X3.0934Y-2.7482 231 | X3.3296Y-5.0514 232 | X3.3934Y-3.5159 233 | X3.3934Y-4.2837 234 | X3.3934Y-2.7482 235 | X3.6296Y-5.0514 236 | X3.8611Y-3.4766 237 | X3.8611Y-4.2443 238 | X3.8611Y-2.7089 239 | X4.0973Y-5.012 240 | X4.1611Y-3.4766 241 | X4.1611Y-4.2443 242 | X4.1611Y-2.7089 243 | X4.3973Y-5.012 244 | X4.6288Y-2.6301 245 | X4.6288Y-3.3978 246 | X4.6288Y-4.1656 247 | X4.9288Y-2.6301 248 | X4.9288Y-3.3978 249 | X4.9288Y-4.1656 250 | X5.3965Y-2.512 251 | X5.3965Y-4.0474 252 | X5.3965Y-3.2797 253 | X5.6965Y-2.512 254 | X5.6965Y-4.0474 255 | X5.6965Y-3.2797 256 | X6.1643Y-4.1656 257 | X6.1643Y-3.3978 258 | X6.1643Y-2.6301 259 | X6.4643Y-4.1656 260 | X6.4643Y-3.3978 261 | X6.4643Y-2.6301 262 | X6.7095Y-5.3374 263 | X6.932Y-3.5159 264 | X6.932Y-4.2837 265 | X6.932Y-2.7482 266 | X7.0078Y-5.3688 267 | X7.232Y-3.5159 268 | X7.232Y-4.2837 269 | X7.232Y-2.7482 270 | X7.4715Y-5.4425 271 | X7.6997Y-3.1321 272 | X7.6997Y-3.8998 273 | X7.765Y-5.5049 274 | X7.801Y-4.0474 275 | X7.9997Y-3.1321 276 | X7.9997Y-3.8998 277 | X8.0944Y-4.1098 278 | X8.2184Y-5.6267 279 | X8.5037Y-5.7194 280 | X8.9819Y-4.8678 281 | X9.0746Y-4.5825 282 | T4 283 | X8.5316Y-4.8539 284 | X8.708Y-4.311 285 | X8.7188Y-4.9147 286 | X8.8016Y-4.3414 287 | X8.8952Y-4.3718 288 | T5 289 | X5.3775Y-4.8285 290 | X5.3775Y-4.6497 291 | X5.968Y-4.8285 292 | X5.968Y-4.6497 293 | X8.3875Y-2.6163 294 | X8.3875Y-2.7163 295 | X8.3875Y-2.2163 296 | X8.3875Y-2.8163 297 | X8.3875Y-3.1163 298 | X8.3875Y-2.4163 299 | X8.3875Y-2.5163 300 | X8.3875Y-2.1163 301 | X8.3875Y-2.3163 302 | X8.3875Y-3.0163 303 | X8.3875Y-3.2163 304 | X8.3875Y-2.9163 305 | X8.3876Y-2.0163 306 | X8.4876Y-3.2163 307 | X8.4876Y-3.1163 308 | X8.5008Y-2.2947 309 | X8.5392Y-3.3765 310 | X8.5876Y-3.2163 311 | X8.6392Y-3.3765 312 | X8.6876Y-3.2163 313 | X8.6894Y-2.514 314 | X8.6894Y-2.614 315 | X8.6894Y-2.814 316 | X8.6894Y-2.714 317 | X8.7392Y-3.3765 318 | X8.7876Y-3.2163 319 | X8.8392Y-3.3765 320 | X8.8876Y-3.2163 321 | X8.9875Y-2.4163 322 | X8.9875Y-2.1163 323 | X8.9875Y-2.3163 324 | X8.9875Y-3.0163 325 | X8.9875Y-3.2163 326 | X8.9875Y-2.8163 327 | X8.9875Y-2.9163 328 | X8.9875Y-2.2163 329 | X8.9875Y-2.5163 330 | X8.9875Y-3.1163 331 | X8.9875Y-2.6163 332 | X8.9875Y-2.7163 333 | X8.9876Y-2.0163 334 | T2 335 | G00X8.6962Y-3.9456 336 | M15 337 | G01X8.6726Y-3.9456 338 | M16 339 | G05 340 | G00X8.6962Y-3.855 341 | M15 342 | G01X8.6726Y-3.855 343 | M16 344 | G05 345 | G00X8.7395Y-3.7645 346 | M15 347 | G01X8.7159Y-3.7645 348 | M16 349 | G05 350 | G00X8.7395Y-4.0361 351 | M15 352 | G01X8.7159Y-4.0361 353 | M16 354 | G05 355 | G00X8.897Y-3.7645 356 | M15 357 | G01X8.8733Y-3.7645 358 | M16 359 | G05 360 | G00X8.897Y-4.0361 361 | M15 362 | G01X8.8733Y-4.0361 363 | M16 364 | G05 365 | G00X9.0151Y-3.7645 366 | M15 367 | G01X8.9915Y-3.7645 368 | M16 369 | G05 370 | G00X9.0151Y-4.0361 371 | M15 372 | G01X8.9915Y-4.0361 373 | M16 374 | G05 375 | T6 376 | G00X8.5086Y-4.5297 377 | M15 378 | G01X8.4928Y-4.5784 379 | M16 380 | G05 381 | G00X8.928Y-4.666 382 | M15 383 | G01X8.9122Y-4.7147 384 | M16 385 | G05 386 | M30 387 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Iyada 2 | 3 | ![Iyada](https://raw.githubusercontent.com/gargum/Iyada/main/photos/iyada_main.jpg) 4 | 5 | *The Iyada is a keyboard, mouse, space mouse, and a gamepad in one unit* 6 | 7 | * Keyboard Maintainer: [Gareth Gummow](https://github.com/gargum) 8 | * Demonstration: [Iyada Dual Analogue Gameplay](https://imgur.com/gallery/iyada-simple-demos-vVryoOj) 9 | * Recommended Keycaps: [KLP Lamé](https://github.com/braindefender/KLP-Lame-Keycaps) 10 | 11 | This device is powered by QMK Firmware running on two RP2040 Microcontrollers. 12 | 13 | To flash the firmware for it, simply copy the kiraibuilds/iyada directory to the ~/qmk_firmware/keyboards locally on your machine before following one of the make examples included in the appropriate Readme file. 14 | 15 | To learn how to set up QMK locally on your machine, see the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide). 16 | 17 | Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs) 18 | 19 | ## Features 20 | 21 | * **Simultaneous Choc/MX Hotswap Compatibility**: The Iyada is simultaneously MX and Choc hotswap compatible. This means one can use any combination of Choc and MX switches or switch between them without having to reflash the firmware! 22 | * **OLED Screens**: The Iyada is equipped with a 32x128 OLED screenn on each side. The lefthand OLED tells the user which layer is currently active, and the righthand OLED displays a fun, unobtrusive animation! 23 | * **Four Encoders**: The Iyada is equipped with a rotary encoder and a scroll encoder on each side of the keyboard! By default, these are used for the purposes of web navigation and media playback. 24 | * **Dual Pointers**: The Iyada is equipped with a Cirque Pinnacle trackpad on each side! By default, these can be used for mouse cursor movement. However, they are also configured to function as dual analogue sticks in video games! 25 | * **RGB Lighting**: The baseplate of the Iyada comes equipped with LEDs, allowing for RGB animations and simple backlighting should the user so desire! 26 | * **Haptic Feedback**: The Iyada is equipped with a DRV2605L on each half, allowing for haptic feedback that informs the user that a layer shift key has been pressed! 27 | * **Audio Feedback**: The Iyada is equipeed with a small piezoelectric speaker on each side that relies on hardware-driven PWM to produce sound! By default, this allows the user to make the Iyada produce an audible sound whenever a key is pressed. 28 | * **Power Boosting**: The Iyada is equipped with a TP4056 and a lithium polymer battery on each side! This allows one to provide extra power, thereby ensuring features like RGB and Haptics are always working as expected, no matter the configuration! 29 | * **Advanced Autocorrect**: QMK includes the ability to define custom dictionaries for use with the [Autocorrect feature](https://docs.qmk.fm/features/autocorrect). As part of the Iyada project, the largest ever such dictionary has been created, compiled, and added for use with this, or any other piece of hardware that utilises QMK firmware! 30 | * **Dual Analogue Support**: The Iyada natively supports virtual dual analogue sticks. This means, using software such as a video game emulator, one is able to map each Cirque Pinnacle trackpad to its own 31 | separate analogue stick. The first version of full Cirque joystick emulation has already been implemented and is ready for use. Fully polished digital joystick emulation is still production! 32 | 33 | ## Additional Information 34 | 35 | * **Cirque Sizing**: Although 40mm Cirque trackpads are recommended, one may use any size that one so desires. 40mm Cirque trackpads are used only because they are popularly considered to be the most comfortable variety. The only issue associated with using a smaller Cirque is that it may not be possible to attach these Cirques to the Iyada Cirque holders perfectly centred. 36 | * **Cirque Holder**: UV resin is used to attach a Cirque to the Iyada Cirque holder. All 40mm Cirques have been confirmed to be able to attach to the standard Cirque holder regardless of the type of overlay it comes with. To attach a Cirque to the Iyada Cirque holder, it is recommended that one first attaches the Cirque holder to the Iyada top PCB using a heat-set insert and M2.2 screw, then connects the Cirque to the Iyada top PCB, before using something like hot glue or tape to test what position and orientation is most comfortable for use. After one is happy with the position and orientation, and after one is sure the Cirque has been connected to the Iyada top PCB properly, a very small amount of UV resin can then be used to permanently secure the trackpad to its holder. After this, the hot glue or tape may be removed. 37 | * **Curved Overlay**: All features including secondary click functions and scrolling functions work with the curved overlay, however the attenuation in config.h must be set to its maximum value of 1 for this to work consistently. It does still technically work if the attenuation is set to a value of 2, but in testing was reported as being frustrating to use. 38 | * **Cirque Attenuation**: If one is not using the curved overlay, setting the attenuation in config.h to 3 or 4 generally works best. If one does have curved overlays on one's Cirque trackpads, then setting the attenuation to 1 or 2 generally works best. 39 | * **Cirque Positioning**: It is recommended to mount each Cirque trackpad to the keyboard such that it is angled away from the MCU by an angle of between 20 degrees and 40 degrees. Mounting the Cirques perfectly straight tends to make it more difficult for one to use one's thumbs to control mouse pointing. 40 | * **Cirque Conflicts**: It is worth noting that using the Steno and/or Joystick functionality may cause the Cirques to become less accurate, more prone to drifting, and overall more painful to use. 41 | * **Cirque Problems**: If a Cirque trackpad is only partially connected, then the mouse pointer should jitter erratically when one attempts to use it. If SDA or SCL are not connected properly at all, then the Cirque trackpad will only be able to move in the X direction or in the Y direction but not both. If there is jittering in the X direction but not the Y direction, or vice versa, then either SDA or SCL is partially connected while the other is fully connected. If the Cirque drops user input periodically when the attenuation is set to 1, almost like stuttering or lagging, then 5V or GND are not properly connected. If the Cirque does not respond at all despite the correct solder jumpers being closed, then either that half is not receiving sufficient power, or the Cirque is not properly connected. To resolve every single one of these problems, use 3.3V Cirques, reconnect/resolder the Cirques, add the battery/charging accessories, and use either WS2812B-2020 LEDs or no LEDs at all before testing again. In case one simply removes a pad or trace by accident while adding a Cirque trackpad, each half of the keyboard has 3 places where it is possible to solder a Cirque alongside 2 places where an FPC connecter for a Cirque can be added. If none of this works, disconnect any LEDs and try using the Cirque. If it suddenly works fine, the problem was insufficient power. If nothing changes, the problem is the connection between the Cirque and the PCB. 42 | * **Haptic Compatibility**: The Iyada is designed to support all haptic feedback drivers that are compatible with QMK. By default, it is configured to use the DRV2605L, however the Iyada is also natively compatible with solenoid drivers if one would prefer to use that instead. 43 | * **Audio**: The Iyada natively supports the use of piezo speakers for the purposes of audio feedback. Simply hand-wire one's speaker to the appropriately on each half of the Iyada in order to utilise this feature. 44 | * **SPI Peripherals**: The Iyada supports direct control of SPI-based peripherals, including Cirque trackpads that have been configured to communicate via SPI. If one wants to use any such peripheral, simply hand-wire the appropriate connections the corresponding 4 pins located on the bottom of the MCU. 45 | * **Power Draw**: If one uses two 5V Cirque trackpads in tandem with WS2812B-5050 LEDs, the battery and charging accessories are required to provide all components with sufficient power simultaneously. Neglecting to do so when using this configuration will result in the 5V Cirque present on the secondary half of the keyboard to become non-responsive. Even with the additional battery and charging accessories, it is possible that there will still be insufficient power if one is using an Iyada with two 5V Cirque trackpads, WS2812B-5050 LEDs, and additional non-standard peripherals connected via an SPI to I2C bus-bridge such as the SC18IS604. 46 | * **Battery Connections**: The Iyada natively supports the use of a lipo battery on each half to help power more energy-intensive configurations. Simply solder the battery wires to the TP4056 units on each half, and position the battery so as to not block any of the Iyada's LEDs. 47 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "apply_defaults_to_fp_fields": false, 7 | "apply_defaults_to_fp_shapes": false, 8 | "apply_defaults_to_fp_text": false, 9 | "board_outline_line_width": 0.05, 10 | "copper_line_width": 0.2, 11 | "copper_text_italic": false, 12 | "copper_text_size_h": 1.5, 13 | "copper_text_size_v": 1.5, 14 | "copper_text_thickness": 0.3, 15 | "copper_text_upright": false, 16 | "courtyard_line_width": 0.05, 17 | "dimension_precision": 4, 18 | "dimension_units": 3, 19 | "dimensions": { 20 | "arrow_length": 1270000, 21 | "extension_offset": 500000, 22 | "keep_text_aligned": true, 23 | "suppress_zeroes": false, 24 | "text_position": 0, 25 | "units_format": 1 26 | }, 27 | "fab_line_width": 0.1, 28 | "fab_text_italic": false, 29 | "fab_text_size_h": 1.0, 30 | "fab_text_size_v": 1.0, 31 | "fab_text_thickness": 0.15, 32 | "fab_text_upright": false, 33 | "other_line_width": 0.1, 34 | "other_text_italic": false, 35 | "other_text_size_h": 1.0, 36 | "other_text_size_v": 1.0, 37 | "other_text_thickness": 0.15, 38 | "other_text_upright": false, 39 | "pads": { 40 | "drill": 0.9, 41 | "height": 2.1, 42 | "width": 1.5 43 | }, 44 | "silk_line_width": 0.1, 45 | "silk_text_italic": false, 46 | "silk_text_size_h": 1.0, 47 | "silk_text_size_v": 1.0, 48 | "silk_text_thickness": 0.1, 49 | "silk_text_upright": false, 50 | "zones": { 51 | "min_clearance": 0.5 52 | } 53 | }, 54 | "diff_pair_dimensions": [], 55 | "drc_exclusions": [], 56 | "meta": { 57 | "version": 2 58 | }, 59 | "rule_severities": { 60 | "annular_width": "error", 61 | "clearance": "error", 62 | "connection_width": "warning", 63 | "copper_edge_clearance": "error", 64 | "copper_sliver": "warning", 65 | "courtyards_overlap": "error", 66 | "diff_pair_gap_out_of_range": "error", 67 | "diff_pair_uncoupled_length_too_long": "error", 68 | "drill_out_of_range": "error", 69 | "duplicate_footprints": "warning", 70 | "extra_footprint": "warning", 71 | "footprint": "error", 72 | "footprint_symbol_mismatch": "warning", 73 | "footprint_type_mismatch": "ignore", 74 | "hole_clearance": "error", 75 | "hole_near_hole": "error", 76 | "holes_co_located": "warning", 77 | "invalid_outline": "error", 78 | "isolated_copper": "warning", 79 | "item_on_disabled_layer": "error", 80 | "items_not_allowed": "error", 81 | "length_out_of_range": "error", 82 | "lib_footprint_issues": "warning", 83 | "lib_footprint_mismatch": "warning", 84 | "malformed_courtyard": "error", 85 | "microvia_drill_out_of_range": "error", 86 | "missing_courtyard": "ignore", 87 | "missing_footprint": "warning", 88 | "net_conflict": "warning", 89 | "npth_inside_courtyard": "ignore", 90 | "padstack": "warning", 91 | "pth_inside_courtyard": "ignore", 92 | "shorting_items": "error", 93 | "silk_edge_clearance": "warning", 94 | "silk_over_copper": "warning", 95 | "silk_overlap": "warning", 96 | "skew_out_of_range": "error", 97 | "solder_mask_bridge": "error", 98 | "starved_thermal": "error", 99 | "text_height": "warning", 100 | "text_thickness": "warning", 101 | "through_hole_pad_without_hole": "error", 102 | "too_many_vias": "error", 103 | "track_dangling": "warning", 104 | "track_width": "error", 105 | "tracks_crossing": "error", 106 | "unconnected_items": "error", 107 | "unresolved_variable": "error", 108 | "via_dangling": "warning", 109 | "zones_intersect": "error" 110 | }, 111 | "rules": { 112 | "max_error": 0.005, 113 | "min_clearance": 0.0, 114 | "min_connection": 0.0, 115 | "min_copper_edge_clearance": 0.5, 116 | "min_hole_clearance": 0.25, 117 | "min_hole_to_hole": 0.25, 118 | "min_microvia_diameter": 0.2, 119 | "min_microvia_drill": 0.1, 120 | "min_resolved_spokes": 2, 121 | "min_silk_clearance": 0.0, 122 | "min_text_height": 0.8, 123 | "min_text_thickness": 0.08, 124 | "min_through_hole_diameter": 0.3, 125 | "min_track_width": 0.0, 126 | "min_via_annular_width": 0.1, 127 | "min_via_diameter": 0.5, 128 | "solder_mask_to_copper_clearance": 0.0, 129 | "use_height_for_length_calcs": true 130 | }, 131 | "teardrop_options": [ 132 | { 133 | "td_onpadsmd": true, 134 | "td_onroundshapesonly": false, 135 | "td_ontrackend": false, 136 | "td_onviapad": true 137 | } 138 | ], 139 | "teardrop_parameters": [ 140 | { 141 | "td_allow_use_two_tracks": true, 142 | "td_curve_segcount": 0, 143 | "td_height_ratio": 1.0, 144 | "td_length_ratio": 0.5, 145 | "td_maxheight": 2.0, 146 | "td_maxlen": 1.0, 147 | "td_on_pad_in_zone": false, 148 | "td_target_name": "td_round_shape", 149 | "td_width_to_size_filter_ratio": 0.9 150 | }, 151 | { 152 | "td_allow_use_two_tracks": true, 153 | "td_curve_segcount": 0, 154 | "td_height_ratio": 1.0, 155 | "td_length_ratio": 0.5, 156 | "td_maxheight": 2.0, 157 | "td_maxlen": 1.0, 158 | "td_on_pad_in_zone": false, 159 | "td_target_name": "td_rect_shape", 160 | "td_width_to_size_filter_ratio": 0.9 161 | }, 162 | { 163 | "td_allow_use_two_tracks": true, 164 | "td_curve_segcount": 0, 165 | "td_height_ratio": 1.0, 166 | "td_length_ratio": 0.5, 167 | "td_maxheight": 2.0, 168 | "td_maxlen": 1.0, 169 | "td_on_pad_in_zone": false, 170 | "td_target_name": "td_track_end", 171 | "td_width_to_size_filter_ratio": 0.9 172 | } 173 | ], 174 | "track_widths": [], 175 | "tuning_pattern_settings": { 176 | "diff_pair_defaults": { 177 | "corner_radius_percentage": 80, 178 | "corner_style": 1, 179 | "max_amplitude": 1.0, 180 | "min_amplitude": 0.2, 181 | "single_sided": false, 182 | "spacing": 1.0 183 | }, 184 | "diff_pair_skew_defaults": { 185 | "corner_radius_percentage": 80, 186 | "corner_style": 1, 187 | "max_amplitude": 1.0, 188 | "min_amplitude": 0.2, 189 | "single_sided": false, 190 | "spacing": 0.6 191 | }, 192 | "single_track_defaults": { 193 | "corner_radius_percentage": 80, 194 | "corner_style": 1, 195 | "max_amplitude": 1.0, 196 | "min_amplitude": 0.2, 197 | "single_sided": false, 198 | "spacing": 0.6 199 | } 200 | }, 201 | "via_dimensions": [], 202 | "zones_allow_external_fillets": false 203 | }, 204 | "ipc2581": { 205 | "dist": "", 206 | "distpn": "", 207 | "internal_id": "", 208 | "mfg": "", 209 | "mpn": "" 210 | }, 211 | "layer_presets": [], 212 | "viewports": [] 213 | }, 214 | "boards": [], 215 | "cvpcb": { 216 | "equivalence_files": [] 217 | }, 218 | "libraries": { 219 | "pinned_footprint_libs": [], 220 | "pinned_symbol_libs": [] 221 | }, 222 | "meta": { 223 | "filename": "iyada_flip.kicad_pro", 224 | "version": 1 225 | }, 226 | "net_settings": { 227 | "classes": [ 228 | { 229 | "bus_width": 12, 230 | "clearance": 0.2, 231 | "diff_pair_gap": 0.25, 232 | "diff_pair_via_gap": 0.25, 233 | "diff_pair_width": 0.2, 234 | "line_style": 0, 235 | "microvia_diameter": 0.3, 236 | "microvia_drill": 0.1, 237 | "name": "Default", 238 | "pcb_color": "rgba(0, 0, 0, 0.000)", 239 | "schematic_color": "rgba(0, 0, 0, 0.000)", 240 | "track_width": 0.18, 241 | "via_diameter": 0.6, 242 | "via_drill": 0.3, 243 | "wire_width": 6 244 | } 245 | ], 246 | "meta": { 247 | "version": 3 248 | }, 249 | "net_colors": null, 250 | "netclass_assignments": null, 251 | "netclass_patterns": [] 252 | }, 253 | "pcbnew": { 254 | "last_paths": { 255 | "gencad": "", 256 | "idf": "", 257 | "netlist": "", 258 | "plot": "Iyada_Flip/", 259 | "pos_files": "", 260 | "specctra_dsn": "", 261 | "step": "", 262 | "svg": "", 263 | "vrml": "" 264 | }, 265 | "page_layout_descr_file": "" 266 | }, 267 | "schematic": { 268 | "legacy_lib_dir": "", 269 | "legacy_lib_list": [] 270 | }, 271 | "sheets": [], 272 | "text_variables": {} 273 | } 274 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "apply_defaults_to_fp_fields": false, 7 | "apply_defaults_to_fp_shapes": false, 8 | "apply_defaults_to_fp_text": false, 9 | "board_outline_line_width": 0.05, 10 | "copper_line_width": 0.2, 11 | "copper_text_italic": false, 12 | "copper_text_size_h": 1.5, 13 | "copper_text_size_v": 1.5, 14 | "copper_text_thickness": 0.3, 15 | "copper_text_upright": false, 16 | "courtyard_line_width": 0.05, 17 | "dimension_precision": 4, 18 | "dimension_units": 3, 19 | "dimensions": { 20 | "arrow_length": 1270000, 21 | "extension_offset": 500000, 22 | "keep_text_aligned": true, 23 | "suppress_zeroes": false, 24 | "text_position": 0, 25 | "units_format": 1 26 | }, 27 | "fab_line_width": 0.1, 28 | "fab_text_italic": false, 29 | "fab_text_size_h": 1.0, 30 | "fab_text_size_v": 1.0, 31 | "fab_text_thickness": 0.15, 32 | "fab_text_upright": false, 33 | "other_line_width": 0.1, 34 | "other_text_italic": false, 35 | "other_text_size_h": 1.0, 36 | "other_text_size_v": 1.0, 37 | "other_text_thickness": 0.15, 38 | "other_text_upright": false, 39 | "pads": { 40 | "drill": 0.0, 41 | "height": 1.0, 42 | "width": 1.0 43 | }, 44 | "silk_line_width": 0.1, 45 | "silk_text_italic": false, 46 | "silk_text_size_h": 1.0, 47 | "silk_text_size_v": 1.0, 48 | "silk_text_thickness": 0.1, 49 | "silk_text_upright": false, 50 | "zones": { 51 | "min_clearance": 0.5 52 | } 53 | }, 54 | "diff_pair_dimensions": [], 55 | "drc_exclusions": [], 56 | "meta": { 57 | "version": 2 58 | }, 59 | "rule_severities": { 60 | "annular_width": "error", 61 | "clearance": "error", 62 | "connection_width": "warning", 63 | "copper_edge_clearance": "error", 64 | "copper_sliver": "warning", 65 | "courtyards_overlap": "error", 66 | "diff_pair_gap_out_of_range": "error", 67 | "diff_pair_uncoupled_length_too_long": "error", 68 | "drill_out_of_range": "error", 69 | "duplicate_footprints": "warning", 70 | "extra_footprint": "warning", 71 | "footprint": "error", 72 | "footprint_symbol_mismatch": "warning", 73 | "footprint_type_mismatch": "ignore", 74 | "hole_clearance": "error", 75 | "hole_near_hole": "error", 76 | "holes_co_located": "warning", 77 | "invalid_outline": "error", 78 | "isolated_copper": "warning", 79 | "item_on_disabled_layer": "error", 80 | "items_not_allowed": "error", 81 | "length_out_of_range": "error", 82 | "lib_footprint_issues": "warning", 83 | "lib_footprint_mismatch": "warning", 84 | "malformed_courtyard": "error", 85 | "microvia_drill_out_of_range": "error", 86 | "missing_courtyard": "ignore", 87 | "missing_footprint": "warning", 88 | "net_conflict": "warning", 89 | "npth_inside_courtyard": "ignore", 90 | "padstack": "warning", 91 | "pth_inside_courtyard": "ignore", 92 | "shorting_items": "error", 93 | "silk_edge_clearance": "warning", 94 | "silk_over_copper": "warning", 95 | "silk_overlap": "warning", 96 | "skew_out_of_range": "error", 97 | "solder_mask_bridge": "error", 98 | "starved_thermal": "error", 99 | "text_height": "warning", 100 | "text_thickness": "warning", 101 | "through_hole_pad_without_hole": "error", 102 | "too_many_vias": "error", 103 | "track_dangling": "warning", 104 | "track_width": "error", 105 | "tracks_crossing": "error", 106 | "unconnected_items": "error", 107 | "unresolved_variable": "error", 108 | "via_dangling": "warning", 109 | "zones_intersect": "error" 110 | }, 111 | "rules": { 112 | "max_error": 0.005, 113 | "min_clearance": 0.0, 114 | "min_connection": 0.0, 115 | "min_copper_edge_clearance": 0.5, 116 | "min_hole_clearance": 0.25, 117 | "min_hole_to_hole": 0.25, 118 | "min_microvia_diameter": 0.2, 119 | "min_microvia_drill": 0.1, 120 | "min_resolved_spokes": 2, 121 | "min_silk_clearance": 0.0, 122 | "min_text_height": 0.8, 123 | "min_text_thickness": 0.08, 124 | "min_through_hole_diameter": 0.3, 125 | "min_track_width": 0.0, 126 | "min_via_annular_width": 0.1, 127 | "min_via_diameter": 0.5, 128 | "solder_mask_to_copper_clearance": 0.0, 129 | "use_height_for_length_calcs": true 130 | }, 131 | "teardrop_options": [ 132 | { 133 | "td_onpadsmd": true, 134 | "td_onroundshapesonly": false, 135 | "td_ontrackend": false, 136 | "td_onviapad": true 137 | } 138 | ], 139 | "teardrop_parameters": [ 140 | { 141 | "td_allow_use_two_tracks": true, 142 | "td_curve_segcount": 0, 143 | "td_height_ratio": 1.0, 144 | "td_length_ratio": 0.5, 145 | "td_maxheight": 2.0, 146 | "td_maxlen": 1.0, 147 | "td_on_pad_in_zone": false, 148 | "td_target_name": "td_round_shape", 149 | "td_width_to_size_filter_ratio": 0.9 150 | }, 151 | { 152 | "td_allow_use_two_tracks": true, 153 | "td_curve_segcount": 0, 154 | "td_height_ratio": 1.0, 155 | "td_length_ratio": 0.5, 156 | "td_maxheight": 2.0, 157 | "td_maxlen": 1.0, 158 | "td_on_pad_in_zone": false, 159 | "td_target_name": "td_rect_shape", 160 | "td_width_to_size_filter_ratio": 0.9 161 | }, 162 | { 163 | "td_allow_use_two_tracks": true, 164 | "td_curve_segcount": 0, 165 | "td_height_ratio": 1.0, 166 | "td_length_ratio": 0.5, 167 | "td_maxheight": 2.0, 168 | "td_maxlen": 1.0, 169 | "td_on_pad_in_zone": false, 170 | "td_target_name": "td_track_end", 171 | "td_width_to_size_filter_ratio": 0.9 172 | } 173 | ], 174 | "track_widths": [], 175 | "tuning_pattern_settings": { 176 | "diff_pair_defaults": { 177 | "corner_radius_percentage": 80, 178 | "corner_style": 1, 179 | "max_amplitude": 1.0, 180 | "min_amplitude": 0.2, 181 | "single_sided": false, 182 | "spacing": 1.0 183 | }, 184 | "diff_pair_skew_defaults": { 185 | "corner_radius_percentage": 80, 186 | "corner_style": 1, 187 | "max_amplitude": 1.0, 188 | "min_amplitude": 0.2, 189 | "single_sided": false, 190 | "spacing": 0.6 191 | }, 192 | "single_track_defaults": { 193 | "corner_radius_percentage": 80, 194 | "corner_style": 1, 195 | "max_amplitude": 1.0, 196 | "min_amplitude": 0.2, 197 | "single_sided": false, 198 | "spacing": 0.6 199 | } 200 | }, 201 | "via_dimensions": [], 202 | "zones_allow_external_fillets": false 203 | }, 204 | "ipc2581": { 205 | "dist": "", 206 | "distpn": "", 207 | "internal_id": "", 208 | "mfg": "", 209 | "mpn": "" 210 | }, 211 | "layer_presets": [], 212 | "viewports": [] 213 | }, 214 | "boards": [], 215 | "cvpcb": { 216 | "equivalence_files": [] 217 | }, 218 | "libraries": { 219 | "pinned_footprint_libs": [], 220 | "pinned_symbol_libs": [] 221 | }, 222 | "meta": { 223 | "filename": "iyada_baseplate.kicad_pro", 224 | "version": 1 225 | }, 226 | "net_settings": { 227 | "classes": [ 228 | { 229 | "bus_width": 12, 230 | "clearance": 0.2, 231 | "diff_pair_gap": 0.25, 232 | "diff_pair_via_gap": 0.25, 233 | "diff_pair_width": 0.2, 234 | "line_style": 0, 235 | "microvia_diameter": 0.3, 236 | "microvia_drill": 0.1, 237 | "name": "Default", 238 | "pcb_color": "rgba(0, 0, 0, 0.000)", 239 | "schematic_color": "rgba(0, 0, 0, 0.000)", 240 | "track_width": 0.2, 241 | "via_diameter": 0.6, 242 | "via_drill": 0.3, 243 | "wire_width": 6 244 | } 245 | ], 246 | "meta": { 247 | "version": 3 248 | }, 249 | "net_colors": null, 250 | "netclass_assignments": null, 251 | "netclass_patterns": [] 252 | }, 253 | "pcbnew": { 254 | "last_paths": { 255 | "gencad": "", 256 | "idf": "", 257 | "netlist": "", 258 | "plot": "Baseplate/", 259 | "pos_files": "", 260 | "specctra_dsn": "", 261 | "step": "", 262 | "svg": "", 263 | "vrml": "" 264 | }, 265 | "page_layout_descr_file": "" 266 | }, 267 | "schematic": { 268 | "legacy_lib_dir": "", 269 | "legacy_lib_list": [] 270 | }, 271 | "sheets": [], 272 | "text_variables": {} 273 | } 274 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/keymaps/advanced/tap_dance_map.c: -------------------------------------------------------------------------------- 1 | // This file exists to make custom tap dances easier to define, edit, and understand. 2 | // 3 | // The available tap types are TD__TAP, TD__HOLD, and TD__SINGLE_TAP. 4 | // The available values are SINGLE, DOUBLE and TRIPLE. 5 | // 6 | // This means any user-defined Tap Dance Map may map a maximum of 8 separate functions to a single key, excluding TD_NONE and/or TD_UNKNOWN. 7 | 8 | #include "rev1/tap_defs.c" 9 | 10 | #if __has_include( "layers.h" ) && LAYER_MAP == yes 11 | #include "layers.h" 12 | #endif 13 | 14 | // Enumerating the existing tap dances 15 | enum { 16 | ESC_DANCE, 17 | GRV_DANCE, 18 | BCK_DANCE, 19 | QWE_DANCE, 20 | SYM_DANCE, 21 | MOU_DANCE, 22 | GAM_DANCE, 23 | STE_DANCE, 24 | }; 25 | 26 | // Tap dance function declarations 27 | // ESC_DANCE 28 | void esc_keydown (tap_dance_state_t *state, void *user_data); 29 | void esc_keyup (tap_dance_state_t *state, void *user_data); 30 | 31 | // GRV_DANCE 32 | void grv_keydown (tap_dance_state_t *state, void *user_data); 33 | void grv_keyup (tap_dance_state_t *state, void *user_data); 34 | 35 | // BCK_DANCE 36 | void bck_keydown (tap_dance_state_t *state, void *user_data); 37 | void bck_keyup (tap_dance_state_t *state, void *user_data); 38 | 39 | // QWE_DANCE 40 | void qwe_keydown (tap_dance_state_t *state, void *user_data); 41 | void qwe_keyup (tap_dance_state_t *state, void *user_data); 42 | 43 | // SYM_DANCE 44 | void sym_keydown (tap_dance_state_t *state, void *user_data); 45 | void sym_keyup (tap_dance_state_t *state, void *user_data); 46 | 47 | // MOU_DANCE 48 | void mou_keydown (tap_dance_state_t *state, void *user_data); 49 | void mou_keyup (tap_dance_state_t *state, void *user_data); 50 | 51 | // GAM_DANCE 52 | void gam_keydown (tap_dance_state_t *state, void *user_data); 53 | void gam_keyup (tap_dance_state_t *state, void *user_data); 54 | 55 | // STE_DANCE 56 | void ste_keydown (tap_dance_state_t *state, void *user_data); 57 | void ste_keyup (tap_dance_state_t *state, void *user_data); 58 | 59 | // Tap dance functions 60 | void esc_keydown (tap_dance_state_t *state, void *user_data) { 61 | tap_state.state = current_dance(state); 62 | switch (tap_state.state) { 63 | case TD_SINGLE_TAP: register_code(KC_TAB); break; 64 | case TD_SINGLE_HOLD: register_code(KC_LALT); break; 65 | case TD_DOUBLE_TAP: register_code(KC_ESC); break; 66 | case TD_NONE: break; 67 | case TD_UNKNOWN: break; 68 | default: break; 69 | } 70 | }; 71 | 72 | void esc_keyup (tap_dance_state_t *state, void *user_data) { 73 | switch (tap_state.state) { 74 | case TD_SINGLE_TAP: unregister_code(KC_TAB); break; 75 | case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; 76 | case TD_DOUBLE_TAP: unregister_code(KC_ESC); break; 77 | case TD_NONE: break; 78 | case TD_UNKNOWN: break; 79 | default: break; 80 | } 81 | tap_state.state = TD_NONE; 82 | } 83 | 84 | void grv_keydown (tap_dance_state_t *state, void *user_data) { 85 | tap_state.state = current_dance(state); 86 | switch (tap_state.state) { 87 | case TD_SINGLE_TAP: register_code(KC_BSLS); break; 88 | case TD_SINGLE_HOLD: register_code(KC_RALT); break; 89 | case TD_DOUBLE_TAP: register_code(KC_GRV); break; 90 | case TD_NONE: break; 91 | case TD_UNKNOWN: break; 92 | default: break; 93 | } 94 | }; 95 | 96 | void grv_keyup (tap_dance_state_t *state, void *user_data) { 97 | switch (tap_state.state) { 98 | case TD_SINGLE_TAP: unregister_code16(KC_BSLS); break; 99 | case TD_SINGLE_HOLD: unregister_mods(KC_RALT); break; 100 | case TD_DOUBLE_TAP: unregister_code(KC_GRV); break; 101 | case TD_NONE: break; 102 | case TD_UNKNOWN: break; 103 | default: break; 104 | } 105 | tap_state.state = TD_NONE; 106 | } 107 | 108 | void bck_keydown (tap_dance_state_t *state, void *user_data) { 109 | tap_state.state = current_dance(state); 110 | switch (tap_state.state) { 111 | case TD_SINGLE_TAP: register_code(KC_BSPC); break; 112 | case TD_SINGLE_HOLD: register_code(KC_LCTL); register_code(KC_BSPC); break; 113 | case TD_DOUBLE_TAP: register_code(KC_BSPC); unregister_code(KC_BSPC); register_code(KC_BSPC); break; 114 | case TD_DOUBLE_SINGLE_TAP: register_code(KC_BSPC); unregister_code(KC_BSPC); register_code(KC_BSPC); break; 115 | case TD_NONE: break; 116 | case TD_UNKNOWN: break; 117 | default: break; 118 | } 119 | }; 120 | 121 | void bck_keyup (tap_dance_state_t *state, void *user_data) { 122 | switch (tap_state.state) { 123 | case TD_SINGLE_TAP: unregister_code(KC_BSPC); break; 124 | case TD_SINGLE_HOLD: unregister_code(KC_LCTL); unregister_code(KC_BSPC); break; 125 | case TD_DOUBLE_TAP: unregister_code(KC_BSPC); break; 126 | case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_BSPC); break; 127 | case TD_NONE: break; 128 | case TD_UNKNOWN: break; 129 | default: break; 130 | } 131 | tap_state.state = TD_NONE; 132 | } 133 | 134 | void qwe_keydown (tap_dance_state_t *state, void *user_data) { 135 | tap_state.state = current_dance(state); 136 | switch (tap_state.state) { 137 | case TD_SINGLE_TAP: layer_move(_QWERTY); break; 138 | case TD_SINGLE_HOLD: layer_move(_QWERTY); break; 139 | case TD_DOUBLE_TAP: layer_move(_QWERTY); break; 140 | case TD_NONE: break; 141 | case TD_UNKNOWN: break; 142 | default: break; 143 | } 144 | }; 145 | 146 | void qwe_keyup (tap_dance_state_t *state, void *user_data) { 147 | switch (tap_state.state) { 148 | case TD_SINGLE_TAP: break; 149 | case TD_SINGLE_HOLD: layer_move(_MOUSE); break; 150 | case TD_DOUBLE_TAP: break; 151 | case TD_NONE: break; 152 | case TD_UNKNOWN: break; 153 | default: break; 154 | } 155 | tap_state.state = TD_NONE; 156 | } 157 | 158 | void sym_keydown (tap_dance_state_t *state, void *user_data) { 159 | tap_state.state = current_dance(state); 160 | switch (tap_state.state) { 161 | case TD_SINGLE_TAP: layer_move(_SYMBOL); break; 162 | case TD_SINGLE_HOLD: layer_move(_SYMBOL); break; 163 | case TD_DOUBLE_TAP: layer_move(_SYMBOL); break; 164 | case TD_NONE: break; 165 | case TD_UNKNOWN: break; 166 | default: break; 167 | } 168 | }; 169 | 170 | void sym_keyup (tap_dance_state_t *state, void *user_data) { 171 | switch (tap_state.state) { 172 | case TD_SINGLE_TAP: break; 173 | case TD_SINGLE_HOLD: layer_move(_MOUSE); break; 174 | case TD_DOUBLE_TAP: break; 175 | case TD_NONE: break; 176 | case TD_UNKNOWN: break; 177 | default: break; 178 | } 179 | tap_state.state = TD_NONE; 180 | } 181 | 182 | void mou_keydown (tap_dance_state_t *state, void *user_data) { 183 | tap_state.state = current_dance(state); 184 | switch (tap_state.state) { 185 | case TD_SINGLE_TAP: layer_move(_MOUSE); break; 186 | case TD_SINGLE_HOLD: layer_move(_MOUSE); break; 187 | case TD_DOUBLE_TAP: layer_move(_MOUSE); break; 188 | case TD_NONE: break; 189 | case TD_UNKNOWN: break; 190 | default: break; 191 | } 192 | }; 193 | 194 | void mou_keyup (tap_dance_state_t *state, void *user_data) { 195 | switch (tap_state.state) { 196 | case TD_SINGLE_TAP: break; 197 | case TD_SINGLE_HOLD: layer_move(_SYMBOL); break; 198 | case TD_DOUBLE_TAP: break; 199 | case TD_NONE: break; 200 | case TD_UNKNOWN: break; 201 | default: break; 202 | } 203 | tap_state.state = TD_NONE; 204 | } 205 | 206 | void gam_keydown (tap_dance_state_t *state, void *user_data) { 207 | tap_state.state = current_dance(state); 208 | switch (tap_state.state) { 209 | case TD_SINGLE_TAP: layer_move(_GAMES); break; 210 | case TD_SINGLE_HOLD: layer_move(_GAMES); break; 211 | case TD_DOUBLE_TAP: layer_move(_GAMES); break; 212 | case TD_NONE: break; 213 | case TD_UNKNOWN: break; 214 | default: break; 215 | } 216 | }; 217 | 218 | void gam_keyup (tap_dance_state_t *state, void *user_data) { 219 | switch (tap_state.state) { 220 | case TD_SINGLE_TAP: break; 221 | case TD_SINGLE_HOLD: layer_move(_QWERTY); break; 222 | case TD_DOUBLE_TAP: break; 223 | case TD_NONE: break; 224 | case TD_UNKNOWN: break; 225 | default: break; 226 | } 227 | tap_state.state = TD_NONE; 228 | } 229 | 230 | void ste_keydown (tap_dance_state_t *state, void *user_data) { 231 | tap_state.state = current_dance(state); 232 | switch (tap_state.state) { 233 | case TD_SINGLE_TAP: layer_move(_STENO); break; 234 | case TD_SINGLE_HOLD: layer_move(_STENO); break; 235 | case TD_DOUBLE_TAP: layer_move(_STENO); break; 236 | case TD_NONE: break; 237 | case TD_UNKNOWN: break; 238 | default: break; 239 | } 240 | }; 241 | 242 | void ste_keyup (tap_dance_state_t *state, void *user_data) { 243 | switch (tap_state.state) { 244 | case TD_SINGLE_TAP: break; 245 | case TD_SINGLE_HOLD: layer_move(_QWERTY); break; 246 | case TD_DOUBLE_TAP: break; 247 | case TD_NONE: break; 248 | case TD_UNKNOWN: break; 249 | default: break; 250 | } 251 | tap_state.state = TD_NONE; 252 | } 253 | 254 | // Defining an 'ACTION_TAP_DANCE_FN_ADVANCED()' function for each Tap Dance, passing in 'keydown' and 'keyup' functions to combine them into completed Tap Dances. 255 | tap_dance_action_t tap_dance_actions[] = { 256 | [ESC_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, esc_keydown, esc_keyup), 257 | [GRV_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, grv_keydown, grv_keyup), 258 | [BCK_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, bck_keydown, bck_keyup), 259 | [QWE_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, qwe_keydown, qwe_keyup), 260 | [SYM_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, sym_keydown, sym_keyup), 261 | [MOU_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, mou_keydown, mou_keyup), 262 | [GAM_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, gam_keydown, gam_keyup), 263 | [STE_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ste_keydown, ste_keyup) 264 | }; 265 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/readme.md: -------------------------------------------------------------------------------- 1 | # Iyada 2 | 3 | [![Iyada](https://raw.githubusercontent.com/gargum/Iyada/main/photos/iyada_main.jpg)](https://i.imgur.com/hbfquj2.mp4) 4 | 5 | *The Iyada is a keyboard, mouse, space mouse, and a gamepad in one unit* 6 | 7 | * Keyboard Maintainer: [Gareth Gummow](https://github.com/gargum) 8 | * Hardware Supported: *2 Iyada top PCBs, 2 Iyada bottom PCBs, 2 Iyada base plates, 2 Iyada mounting rings, 2 Iyada Cirque holders, 2 RP2040 Pro Micro microcontrollers, 2 EC12 low profile rotary encoders, 2 EVQWGD001 scroll encoders, 2 OLEDs (32x128), 2 Cirque Pinnacle trackpads (40mm / TM040040 is recommended), 2 FPC 12-pin cables, 2 FPC reverse side solder-mount connectors, 100 Hotswap sockets (50 Choc & 50 MX, or 50 Choc & 50 Gateron), 30 WS2812B LEDs (WS2812B-2020 is recommended), 2 DRV2605L haptic drivers, 2 Haptic motors, 2 TP4056 lipo chargers, 2 lipo batteries, 6 SPDT switches, 2 TRRS connectors, 1 TRRS cable, 62 Diodes (62 1N4148 or 62 LL4148), 34 screws (M2.2), 2 heat-set inserts (M2.2), 16 M.2 SSD standoffs (All 16 must be the same height), Wires (30 Gauge), Solder (paste and/or wire), UV resin or hot glue or double-sided tape* 9 | * Hardware Availability: [AliExpress](https://aliexpress.com), [Mouser](https://mouser.com), [DigiKey](https://digikey.com), [JLCPCB](https://jlcpcb.com), [PCBWay](https://pcbway.com) 10 | 11 | Make example for this keyboard (after setting up your build environment): 12 | 13 | make kiraibuilds/iyada:default 14 | 15 | Alternative make example for this keyboard using QMK: 16 | 17 | qmk compile -kb kiraibuilds/iyada -km joystick 18 | 19 | Flashing example for this keyboard using QMK: 20 | 21 | qmk flash -kb kiraibuilds/iyada -km advanced 22 | 23 | See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. 24 | 25 | Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs) 26 | 27 | ## Bootloader 28 | 29 | One can enter the bootloader of each keyboard half separately if one so chooses. This is necessary when flashing a newly constructed Iyada for the first time, and when one wishes to alter the default behaviours of the RGB LEDs. 30 | 31 | One may also use a TRRS cable to connect both halves, before entering the bootloader on the master half alone. Flashing both halves simultaneously in this fashion is convenient when one is simply flashing a new keymap onto a pre-existing Iyada without making any other changes. 32 | 33 | One is able to enter the bootloader in 5 ways: 34 | 35 | * **Bootloader button**: First, unplug the Iyada from one's computer. Then, press and hold the button labelled 'Boot' on the front of the PCB, and keep it held down as one plugs the Iyada into the computer once more. This should cause the Iyada to enter the bootloader. 36 | * **Reset button**: Simply double-tap the button labelled 'reset' on the front of the PCB. This should cause the Iyada to enter the bootloader. 37 | * **Paperclip reset**: Take a screwdriver or paperclip, then use it to connect the RST and GND pins on the microcontroller. Please be careful, as one can accidentally short the MCU. By quickly doing this twice in a row, one is able to enter the bootloader using the reset button method without actually pressing the physical reset button. 38 | * **Bootmagic reset**: Bootmagic is enabled by default. With Bootmagic, one can hold the top right key on the right half of the keyboard and plug it in. If using the left half by itself, or if holding the top right key on the right half of the board simply is not working, then instead hold the top left key on the left half of the keyboard. 39 | * **Keycode in layout**: If one has included the keycode `QK_BOOT` somewhere in a custom keymap, then triggering it will enter the bootloader. This is unavailable on the default keymap. 40 | 41 | ## Additional Information 42 | 43 | * **Cirque Sizing**: Although 40mm Cirque trackpads are recommended, one may use any size that one so desires. 40mm Cirque trackpads are used only because they are popularly considered to be the most comfortable variety. The only issue associated with using a smaller Cirque is that it may not be possible to attach these Cirques to the Iyada Cirque holders perfectly centred. 44 | * **Cirque Holder**: UV resin is used to attach a Cirque to the Iyada Cirque holder. All 40mm Cirques have been confirmed to be able to attach to the standard Cirque holder regardless of the type of overlay it comes with. To attach a Cirque to the Iyada Cirque holder, it is recommended that one first attaches the Cirque holder to the Iyada top PCB using a heat-set insert and M2.2 screw, then connects the Cirque to the Iyada top PCB, before using something like hot glue or tape to test what position and orientation is most comfortable for use. After one is happy with the position and orientation, and after one is sure the Cirque has been connected to the Iyada top PCB properly, a very small amount of UV resin can then be used to permanently secure the trackpad to its holder. After this, the hot glue or tape may be removed. 45 | * **Curved Overlay**: All features including secondary click functions and scrolling functions work with the curved overlay, however the attenuation in config.h must be set to its maximum value of 1 for this to work consistently. It does still technically work if the attenuation is set to a value of 2, but in testing was reported as being frustrating to use. 46 | * **Cirque Attenuation**: If one is not using the curved overlay, setting the attenuation in config.h to 3 or 4 generally works best. If one does have curved overlays on one's Cirque trackpads, then setting the attenuation to 1 or 2 generally works best. 47 | * **Cirque Positioning**: It is recommended to mount each Cirque trackpad to the keyboard such that it is angled away from the MCU by an angle of between 20 degrees and 40 degrees. Mounting the Cirques perfectly straight tends to make it more difficult for one to use one's thumbs to control mouse pointing. 48 | * **Cirque Conflicts**: It is worth noting that using the Steno and/or Joystick functionality may cause the Cirques to become less accurate, more prone to drifting, and overall more painful to use. 49 | * **Cirque Problems**: If a Cirque trackpad is only partially connected, then the mouse pointer should jitter erratically when one attempts to use it. If SDA or SCL are not connected properly at all, then the Cirque trackpad will only be able to move in the X direction or in the Y direction but not both. If there is jittering in the X direction but not the Y direction, or vice versa, then either SDA or SCL is partially connected while the other is fully connected. If the Cirque drops user input periodically when the attenuation is set to 1, almost like stuttering or lagging, then 5V or GND are not properly connected. If the Cirque does not respond at all despite the correct solder jumpers being closed, then either that half is not receiving sufficient power, or the Cirque is not properly connected. To resolve every single one of these problems, use 3.3V Cirques, reconnect/resolder the Cirques, add the battery/charging accessories, and use either WS2812B-2020 LEDs or no LEDs at all before testing again. In case one simply removes a pad or trace by accident while adding a Cirque trackpad, each half of the keyboard has 3 places where it is possible to solder a Cirque alongside 2 places where an FPC connecter for a Cirque can be added. If none of this works, disconnect any LEDs and try using the Cirque. If it suddenly works fine, the problem was insufficient power. If nothing changes, the problem is the connection between the Cirque and the PCB. 50 | * **Mounting Compatibility**: The internal tenting puck system is primarily for the purposes of attaching the Iyada to either a tripod, or of making it easier to secure the Iyada to an office chair. As the name implies, This also makes it possible to simply tent one's Iyada. 51 | * **Haptic Compatibility**: The Iyada is designed to support all haptic feedback drivers that are compatible with QMK. By default, it is configured to use the DRV2605L, however the Iyada is also natively compatible with solenoid drivers if one would prefer to use that instead. 52 | * **Audio**: The Iyada natively supports the use of piezo speakers for the purposes of audio feedback. Simply hand-wire one's speaker to the appropriately on each half of the Iyada in order to utilise this feature. 53 | * **SPI Peripherals**: The Iyada supports direct control of SPI-based peripherals, including Cirque trackpads that have been configured to communicate via SPI. If one wants to use any such peripheral, simply hand-wire the appropriate connections the corresponding 4 pins located on the bottom of the MCU. 54 | * **Power Draw**: If one uses two 5V Cirque trackpads in tandem with WS2812B-5050 LEDs, the battery and charging accessories are required to provide all components with sufficient power simultaneously. Neglecting to do so when using this configuration will result in the 5V Cirque present on the secondary half of the keyboard to become non-responsive. Even with the additional battery and charging accessories, it is possible that there will still be insufficient power if one is using an Iyada with two 5V Cirque trackpads, WS2812B-5050 LEDs, and additional non-standard peripherals connected via an SPI to I2C bus-bridge such as the SC18IS604. 55 | * **Battery Connections**: The Iyada natively supports the use of a lipo battery on each half to help power more energy-intensive configurations. Simply solder the battery wires to the TP4056 units on each half, and position the battery so as to not block any of the Iyada's LEDs. 56 | * **Dual Analogue Support**: The Iyada natively supports virtual dual analogue sticks. This means, using software such as a video game emulator, one is able to map each Cirque Pinnacle trackpad to its own 57 | separate analogue stick for use in modern games. By default, flicking or swiping in a direction will toggle that direction, and tapping will reset it. This is to allow those with RSI or arthritis that prevents 58 | one from holding down a standard analogue stick to use a dual analogue input method. As a side-effect, this method also frees up one's thumbs, better allowing one to use gamepad buttons mapped to the thumb cluster. 59 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top/iyada_top-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 8.0.3+1} date 2024-08-06T22:55:25-0400 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2024-08-06T22:55:25-04:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3+1 6 | ; #@! TF.FileFunction,NonPlated,1,2,NPTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 10 | T1C0.0591 11 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 12 | T2C0.0630 13 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 14 | T3C0.0689 15 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 16 | T4C0.0866 17 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 18 | T5C0.1201 19 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 20 | T6C0.1575 21 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 22 | T7C0.1988 23 | % 24 | G90 25 | G05 26 | T1 27 | X7.6046Y-4.6389 28 | X8.0374Y-4.7309 29 | T2 30 | X3.0465Y-4.1459 31 | X3.0465Y-3.3781 32 | X3.0465Y-2.6104 33 | X3.2828Y-4.9136 34 | X3.4402Y-4.1459 35 | X3.4402Y-3.3781 36 | X3.4402Y-2.6104 37 | X3.6765Y-4.9136 38 | X3.8143Y-2.5711 39 | X3.8143Y-3.3388 40 | X3.8143Y-4.1065 41 | X4.0505Y-4.8742 42 | X4.208Y-2.5711 43 | X4.208Y-3.3388 44 | X4.208Y-4.1065 45 | X4.4442Y-4.8742 46 | X4.582Y-4.0278 47 | X4.582Y-3.26 48 | X4.582Y-2.4923 49 | X4.9757Y-4.0278 50 | X4.9757Y-3.26 51 | X4.9757Y-2.4923 52 | X5.3497Y-3.9096 53 | X5.3497Y-2.3742 54 | X5.3497Y-3.1419 55 | X5.7434Y-3.9096 56 | X5.7434Y-2.3742 57 | X5.7434Y-3.1419 58 | X6.1174Y-4.0278 59 | X6.1174Y-3.26 60 | X6.1174Y-2.4923 61 | X6.5111Y-4.0278 62 | X6.5111Y-3.26 63 | X6.5111Y-2.4923 64 | X6.6773Y-5.1955 65 | X6.8851Y-3.3781 66 | X6.8851Y-4.1459 67 | X6.8851Y-2.6104 68 | X7.0688Y-5.2367 69 | X7.2788Y-3.3781 70 | X7.2788Y-4.1459 71 | X7.2788Y-2.6104 72 | X7.4543Y-5.298 73 | X7.6528Y-3.762 74 | X7.6528Y-2.9943 75 | X7.8394Y-5.3799 76 | X8.0465Y-3.762 77 | X8.0465Y-2.9943 78 | X8.2164Y-5.4812 79 | X8.5908Y-5.6028 80 | T3 81 | X3.0434Y-3.9431 82 | X3.0434Y-3.9431 83 | X3.0434Y-3.1754 84 | X3.0434Y-3.1754 85 | X3.0434Y-2.4077 86 | X3.0434Y-2.4077 87 | X3.2796Y-4.7108 88 | X3.2796Y-4.7108 89 | X3.4434Y-3.9431 90 | X3.4434Y-3.9431 91 | X3.4434Y-3.1754 92 | X3.4434Y-3.1754 93 | X3.4434Y-2.4077 94 | X3.4434Y-2.4077 95 | X3.6796Y-4.7108 96 | X3.6796Y-4.7108 97 | X3.8111Y-2.3683 98 | X3.8111Y-2.3683 99 | X3.8111Y-3.136 100 | X3.8111Y-3.136 101 | X3.8111Y-3.9037 102 | X3.8111Y-3.9037 103 | X4.0473Y-4.6715 104 | X4.0473Y-4.6715 105 | X4.2111Y-2.3683 106 | X4.2111Y-2.3683 107 | X4.2111Y-3.136 108 | X4.2111Y-3.136 109 | X4.2111Y-3.9037 110 | X4.2111Y-3.9037 111 | X4.4473Y-4.6715 112 | X4.4473Y-4.6715 113 | X4.5788Y-3.825 114 | X4.5788Y-3.825 115 | X4.5788Y-3.0573 116 | X4.5788Y-3.0573 117 | X4.5788Y-2.2896 118 | X4.5788Y-2.2896 119 | X4.9788Y-3.825 120 | X4.9788Y-3.825 121 | X4.9788Y-3.0573 122 | X4.9788Y-3.0573 123 | X4.9788Y-2.2896 124 | X4.9788Y-2.2896 125 | X5.3465Y-3.7069 126 | X5.3465Y-3.7069 127 | X5.3465Y-2.1715 128 | X5.3465Y-2.1715 129 | X5.3465Y-2.9392 130 | X5.3465Y-2.9392 131 | X5.7465Y-3.7069 132 | X5.7465Y-3.7069 133 | X5.7465Y-2.1715 134 | X5.7465Y-2.1715 135 | X5.7465Y-2.9392 136 | X5.7465Y-2.9392 137 | X6.1143Y-3.825 138 | X6.1143Y-3.825 139 | X6.1143Y-3.0573 140 | X6.1143Y-3.0573 141 | X6.1143Y-2.2896 142 | X6.1143Y-2.2896 143 | X6.5143Y-3.825 144 | X6.5143Y-3.825 145 | X6.5143Y-3.0573 146 | X6.5143Y-3.0573 147 | X6.5143Y-2.2896 148 | X6.5143Y-2.2896 149 | X6.6953Y-4.9935 150 | X6.6953Y-4.9935 151 | X6.882Y-3.1754 152 | X6.882Y-3.1754 153 | X6.882Y-3.9431 154 | X6.882Y-3.9431 155 | X6.882Y-2.4077 156 | X6.882Y-2.4077 157 | X7.0931Y-5.0353 158 | X7.0931Y-5.0353 159 | X7.282Y-3.1754 160 | X7.282Y-3.1754 161 | X7.282Y-3.9431 162 | X7.282Y-3.9431 163 | X7.282Y-2.4077 164 | X7.282Y-2.4077 165 | X7.4934Y-5.099 166 | X7.4934Y-5.099 167 | X7.6497Y-3.5593 168 | X7.6497Y-3.5593 169 | X7.6497Y-2.7915 170 | X7.6497Y-2.7915 171 | X7.8847Y-5.1822 172 | X7.8847Y-5.1822 173 | X8.0497Y-3.5593 174 | X8.0497Y-3.5593 175 | X8.0497Y-2.7915 176 | X8.0497Y-2.7915 177 | X8.2761Y-5.2874 178 | X8.2761Y-5.2874 179 | X8.6565Y-5.411 180 | X8.6565Y-5.411 181 | T4 182 | X2.8991Y-2.791 183 | X2.9307Y-5.1447 184 | X4.3311Y-1.9243 185 | X4.413Y-3.442 186 | X6.3377Y-4.6341 187 | X6.6792Y-2.677 188 | X6.6792Y-3.4467 189 | X7.8654Y-2.0345 190 | X8.7351Y-5.79 191 | T5 192 | X3.0465Y-3.7935 193 | X3.0465Y-3.0258 194 | X3.0465Y-2.2581 195 | X3.0934Y-4.0431 196 | X3.0934Y-3.2754 197 | X3.0934Y-2.5077 198 | X3.1434Y-4.1431 199 | X3.1434Y-3.3754 200 | X3.1434Y-2.6077 201 | X3.2434Y-3.7108 202 | X3.2434Y-3.7108 203 | X3.2434Y-2.9431 204 | X3.2434Y-2.9431 205 | X3.2434Y-2.1754 206 | X3.2434Y-2.1754 207 | X3.2828Y-4.5612 208 | X3.3296Y-4.8108 209 | X3.3434Y-4.1431 210 | X3.3434Y-3.3754 211 | X3.3434Y-2.6077 212 | X3.3796Y-4.9108 213 | X3.3934Y-4.0431 214 | X3.3934Y-3.2754 215 | X3.3934Y-2.5077 216 | X3.4402Y-3.7935 217 | X3.4402Y-3.0258 218 | X3.4402Y-2.2581 219 | X3.4796Y-4.4785 220 | X3.4796Y-4.4785 221 | X3.5796Y-4.9108 222 | X3.6296Y-4.8108 223 | X3.6765Y-4.5612 224 | X3.8143Y-2.2187 225 | X3.8143Y-2.9864 226 | X3.8143Y-3.7541 227 | X3.8611Y-2.4683 228 | X3.8611Y-3.236 229 | X3.8611Y-4.0037 230 | X3.9111Y-2.5683 231 | X3.9111Y-3.336 232 | X3.9111Y-4.1037 233 | X4.0111Y-2.136 234 | X4.0111Y-2.136 235 | X4.0111Y-2.9037 236 | X4.0111Y-2.9037 237 | X4.0111Y-3.6715 238 | X4.0111Y-3.6715 239 | X4.0505Y-4.5219 240 | X4.0973Y-4.7715 241 | X4.1111Y-2.5683 242 | X4.1111Y-3.336 243 | X4.1111Y-4.1037 244 | X4.1473Y-4.8715 245 | X4.1611Y-2.4683 246 | X4.1611Y-3.236 247 | X4.1611Y-4.0037 248 | X4.208Y-2.2187 249 | X4.208Y-2.9864 250 | X4.208Y-3.7541 251 | X4.2473Y-4.4392 252 | X4.2473Y-4.4392 253 | X4.3473Y-4.8715 254 | X4.3973Y-4.7715 255 | X4.4442Y-4.5219 256 | X4.582Y-3.6754 257 | X4.582Y-2.9077 258 | X4.582Y-2.14 259 | X4.6288Y-3.925 260 | X4.6288Y-3.1573 261 | X4.6288Y-2.3896 262 | X4.6788Y-4.025 263 | X4.6788Y-3.2573 264 | X4.6788Y-2.4896 265 | X4.7788Y-3.5927 266 | X4.7788Y-3.5927 267 | X4.7788Y-2.825 268 | X4.7788Y-2.825 269 | X4.7788Y-2.0573 270 | X4.7788Y-2.0573 271 | X4.8788Y-4.025 272 | X4.8788Y-3.2573 273 | X4.8788Y-2.4896 274 | X4.9288Y-3.925 275 | X4.9288Y-3.1573 276 | X4.9288Y-2.3896 277 | X4.9757Y-3.6754 278 | X4.9757Y-2.9077 279 | X4.9757Y-2.14 280 | X5.3497Y-3.5573 281 | X5.3497Y-2.0219 282 | X5.3497Y-2.7896 283 | X5.3965Y-3.8069 284 | X5.3965Y-2.2715 285 | X5.3965Y-3.0392 286 | X5.4465Y-3.9069 287 | X5.4465Y-2.3715 288 | X5.4465Y-3.1392 289 | X5.5465Y-3.4746 290 | X5.5465Y-3.4746 291 | X5.5465Y-1.9392 292 | X5.5465Y-1.9392 293 | X5.5465Y-2.7069 294 | X5.5465Y-2.7069 295 | X5.6465Y-3.9069 296 | X5.6465Y-2.3715 297 | X5.6465Y-3.1392 298 | X5.6965Y-3.8069 299 | X5.6965Y-2.2715 300 | X5.6965Y-3.0392 301 | X5.7434Y-3.5573 302 | X5.7434Y-2.0219 303 | X5.7434Y-2.7896 304 | X6.1174Y-3.6754 305 | X6.1174Y-2.9077 306 | X6.1174Y-2.14 307 | X6.1643Y-3.925 308 | X6.1643Y-3.1573 309 | X6.1643Y-2.3896 310 | X6.2143Y-4.025 311 | X6.2143Y-3.2573 312 | X6.2143Y-2.4896 313 | X6.3143Y-3.5927 314 | X6.3143Y-3.5927 315 | X6.3143Y-2.825 316 | X6.3143Y-2.825 317 | X6.3143Y-2.0573 318 | X6.3143Y-2.0573 319 | X6.4143Y-4.025 320 | X6.4143Y-3.2573 321 | X6.4143Y-2.4896 322 | X6.4643Y-3.925 323 | X6.4643Y-3.1573 324 | X6.4643Y-2.3896 325 | X6.5111Y-3.6754 326 | X6.5111Y-2.9077 327 | X6.5111Y-2.14 328 | X6.7141Y-4.8451 329 | X6.7346Y-5.0982 330 | X6.7739Y-5.2029 331 | X6.8851Y-3.0258 332 | X6.8851Y-3.7935 333 | X6.8851Y-2.2581 334 | X6.9185Y-4.7834 335 | X6.9185Y-4.7834 336 | X6.932Y-3.2754 337 | X6.932Y-4.0431 338 | X6.932Y-2.5077 339 | X6.9728Y-5.2238 340 | X6.982Y-3.3754 341 | X6.982Y-4.1431 342 | X6.982Y-2.6077 343 | X7.033Y-5.1296 344 | X7.082Y-2.9431 345 | X7.082Y-2.9431 346 | X7.082Y-3.7108 347 | X7.082Y-3.7108 348 | X7.082Y-2.1754 349 | X7.082Y-2.1754 350 | X7.1057Y-4.8862 351 | X7.182Y-3.3754 352 | X7.182Y-4.1431 353 | X7.182Y-2.6077 354 | X7.232Y-3.2754 355 | X7.232Y-4.0431 356 | X7.232Y-2.5077 357 | X7.2788Y-3.0258 358 | X7.2788Y-3.7935 359 | X7.2788Y-2.2581 360 | X7.5215Y-5.2072 361 | X7.5276Y-4.9534 362 | X7.5496Y-5.3155 363 | X7.6528Y-3.4096 364 | X7.6528Y-2.6419 365 | X7.6997Y-3.6593 366 | X7.6997Y-2.8915 367 | X7.7373Y-4.9134 368 | X7.7373Y-4.9134 369 | X7.7453Y-5.357 370 | X7.7497Y-3.7593 371 | X7.7497Y-2.9915 372 | X7.815Y-5.2696 373 | X7.8497Y-3.327 374 | X7.8497Y-3.327 375 | X7.8497Y-2.5593 376 | X7.8497Y-2.5593 377 | X7.9127Y-5.0352 378 | X7.9497Y-3.7593 379 | X7.9497Y-2.9915 380 | X7.9997Y-3.6593 381 | X7.9997Y-2.8915 382 | X8.0465Y-3.4096 383 | X8.0465Y-2.6419 384 | X8.2927Y-5.3979 385 | X8.3094Y-5.5085 386 | X8.3253Y-5.1461 387 | X8.4996Y-5.5703 388 | X8.5381Y-5.1283 389 | X8.5381Y-5.1283 390 | X8.578Y-5.4906 391 | X8.6997Y-5.2677 392 | T6 393 | X3.2434Y-3.9431 394 | X3.2434Y-3.9431 395 | X3.2434Y-3.1754 396 | X3.2434Y-3.1754 397 | X3.2434Y-2.4077 398 | X3.2434Y-2.4077 399 | X3.4796Y-4.7108 400 | X3.4796Y-4.7108 401 | X4.0111Y-2.3683 402 | X4.0111Y-2.3683 403 | X4.0111Y-3.136 404 | X4.0111Y-3.136 405 | X4.0111Y-3.9037 406 | X4.0111Y-3.9037 407 | X4.2473Y-4.6715 408 | X4.2473Y-4.6715 409 | X4.7788Y-3.825 410 | X4.7788Y-3.825 411 | X4.7788Y-3.0573 412 | X4.7788Y-3.0573 413 | X4.7788Y-2.2896 414 | X4.7788Y-2.2896 415 | X5.5465Y-3.7069 416 | X5.5465Y-3.7069 417 | X5.5465Y-2.1715 418 | X5.5465Y-2.1715 419 | X5.5465Y-2.9392 420 | X5.5465Y-2.9392 421 | X6.3143Y-3.825 422 | X6.3143Y-3.825 423 | X6.3143Y-3.0573 424 | X6.3143Y-3.0573 425 | X6.3143Y-2.2896 426 | X6.3143Y-2.2896 427 | X6.8942Y-5.0144 428 | X6.8942Y-5.0144 429 | X7.082Y-3.1754 430 | X7.082Y-3.1754 431 | X7.082Y-3.9431 432 | X7.082Y-3.9431 433 | X7.082Y-2.4077 434 | X7.082Y-2.4077 435 | X7.689Y-5.1406 436 | X7.689Y-5.1406 437 | X7.8497Y-3.5593 438 | X7.8497Y-3.5593 439 | X7.8497Y-2.7915 440 | X7.8497Y-2.7915 441 | X8.4663Y-5.3492 442 | X8.4663Y-5.3492 443 | T7 444 | X3.2434Y-3.9431 445 | X3.2434Y-3.9431 446 | X3.2434Y-3.1754 447 | X3.2434Y-3.1754 448 | X3.2434Y-2.4077 449 | X3.2434Y-2.4077 450 | X3.4796Y-4.7108 451 | X3.4796Y-4.7108 452 | X4.0111Y-2.3683 453 | X4.0111Y-2.3683 454 | X4.0111Y-3.136 455 | X4.0111Y-3.136 456 | X4.0111Y-3.9037 457 | X4.0111Y-3.9037 458 | X4.2473Y-4.6715 459 | X4.2473Y-4.6715 460 | X4.7788Y-3.825 461 | X4.7788Y-3.825 462 | X4.7788Y-3.0573 463 | X4.7788Y-3.0573 464 | X4.7788Y-2.2896 465 | X4.7788Y-2.2896 466 | X5.5465Y-3.7069 467 | X5.5465Y-3.7069 468 | X5.5465Y-2.1715 469 | X5.5465Y-2.1715 470 | X5.5465Y-2.9392 471 | X5.5465Y-2.9392 472 | X6.3143Y-3.825 473 | X6.3143Y-3.825 474 | X6.3143Y-3.0573 475 | X6.3143Y-3.0573 476 | X6.3143Y-2.2896 477 | X6.3143Y-2.2896 478 | X6.8942Y-5.0144 479 | X6.8942Y-5.0144 480 | X7.082Y-3.1754 481 | X7.082Y-3.1754 482 | X7.082Y-3.9431 483 | X7.082Y-3.9431 484 | X7.082Y-2.4077 485 | X7.082Y-2.4077 486 | X7.689Y-5.1406 487 | X7.689Y-5.1406 488 | X7.8497Y-3.5593 489 | X7.8497Y-3.5593 490 | X7.8497Y-2.7915 491 | X7.8497Y-2.7915 492 | X8.4663Y-5.3492 493 | X8.4663Y-5.3492 494 | M30 495 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom/iyada_bottom-F_Paste.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.4+1*% 2 | %TF.CreationDate,2024-08-17T00:02:36-04:00*% 3 | %TF.ProjectId,iyada_baseplate,69796164-615f-4626-9173-65706c617465,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Top*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.4+1) date 2024-08-17 00:02:36* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10R,1.500000X0.900000*% 33 | %ADD11R,0.700000X0.700000*% 34 | %ADD12RoundRect,0.250000X-0.375000X-1.000000X0.375000X-1.000000X0.375000X1.000000X-0.375000X1.000000X0*% 35 | %ADD13R,1.200000X0.900000*% 36 | %ADD14R,0.900000X1.200000*% 37 | G04 APERTURE END LIST* 38 | D10* 39 | %TO.C,REF\u002A\u002A*% 40 | X141991000Y-74399000D03* 41 | X141991000Y-71099000D03* 42 | X137091000Y-71099000D03* 43 | X137091000Y-74399000D03* 44 | %TD*% 45 | D11* 46 | %TO.C,REF\u002A\u002A*% 47 | X138991000Y-73664000D03* 48 | X140091000Y-73664000D03* 49 | X140091000Y-71834000D03* 50 | X138991000Y-71834000D03* 51 | %TD*% 52 | %TO.C,REF\u002A\u002A*% 53 | X179091000Y-97339000D03* 54 | X177991000Y-97339000D03* 55 | X177991000Y-99169000D03* 56 | X179091000Y-99169000D03* 57 | %TD*% 58 | %TO.C,REF\u002A\u002A*% 59 | X140090000Y-52334000D03* 60 | X138990000Y-52334000D03* 61 | X138990000Y-54164000D03* 62 | X140090000Y-54164000D03* 63 | %TD*% 64 | D10* 65 | %TO.C,REF\u002A\u002A*% 66 | X102991000Y-79399000D03* 67 | X102991000Y-76099000D03* 68 | X98091000Y-76099000D03* 69 | X98091000Y-79399000D03* 70 | %TD*% 71 | %TO.C,REF\u002A\u002A*% 72 | X117591000Y-93594000D03* 73 | X117591000Y-96894000D03* 74 | X122491000Y-96894000D03* 75 | X122491000Y-93594000D03* 76 | %TD*% 77 | %TO.C,REF\u002A\u002A*% 78 | X117591000Y-54599000D03* 79 | X117591000Y-57899000D03* 80 | X122491000Y-57899000D03* 81 | X122491000Y-54599000D03* 82 | %TD*% 83 | D11* 84 | %TO.C,REF\u002A\u002A*% 85 | X140091000Y-91334000D03* 86 | X138991000Y-91334000D03* 87 | X138991000Y-93164000D03* 88 | X140091000Y-93164000D03* 89 | %TD*% 90 | D10* 91 | %TO.C,REF\u002A\u002A*% 92 | X98091000Y-56599000D03* 93 | X98091000Y-59899000D03* 94 | X102991000Y-59899000D03* 95 | X102991000Y-56599000D03* 96 | %TD*% 97 | D11* 98 | %TO.C,REF\u002A\u002A*% 99 | X159591000Y-94334000D03* 100 | X158491000Y-94334000D03* 101 | X158491000Y-96164000D03* 102 | X159591000Y-96164000D03* 103 | %TD*% 104 | %TO.C,REF\u002A\u002A*% 105 | X177991000Y-79664000D03* 106 | X179091000Y-79664000D03* 107 | X179091000Y-77834000D03* 108 | X177991000Y-77834000D03* 109 | %TD*% 110 | D10* 111 | %TO.C,REF\u002A\u002A*% 112 | X137090000Y-51599000D03* 113 | X137090000Y-54899000D03* 114 | X141990000Y-54899000D03* 115 | X141990000Y-51599000D03* 116 | %TD*% 117 | %TO.C,REF\u002A\u002A*% 118 | X156586000Y-54594000D03* 119 | X156586000Y-57894000D03* 120 | X161486000Y-57894000D03* 121 | X161486000Y-54594000D03* 122 | %TD*% 123 | %TO.C,REF\u002A\u002A*% 124 | X156591000Y-93599000D03* 125 | X156591000Y-96899000D03* 126 | X161491000Y-96899000D03* 127 | X161491000Y-93599000D03* 128 | %TD*% 129 | %TO.C,REF\u002A\u002A*% 130 | X156591000Y-93599000D03* 131 | X156591000Y-96899000D03* 132 | X161491000Y-96899000D03* 133 | X161491000Y-93599000D03* 134 | %TD*% 135 | %TO.C,REF\u002A\u002A*% 136 | X176091000Y-96604000D03* 137 | X176091000Y-99904000D03* 138 | X180991000Y-99904000D03* 139 | X180991000Y-96604000D03* 140 | %TD*% 141 | D12* 142 | %TO.C,REF\u002A\u002A*% 143 | X98680000Y-127320000D03* 144 | X101180000Y-127320000D03* 145 | X103680000Y-127320000D03* 146 | %TD*% 147 | D11* 148 | %TO.C,REF\u002A\u002A*% 149 | X159591000Y-94334000D03* 150 | X158491000Y-94334000D03* 151 | X158491000Y-96164000D03* 152 | X159591000Y-96164000D03* 153 | %TD*% 154 | D10* 155 | %TO.C,REF\u002A\u002A*% 156 | X122491000Y-77399000D03* 157 | X122491000Y-74099000D03* 158 | X117591000Y-74099000D03* 159 | X117591000Y-77399000D03* 160 | %TD*% 161 | D11* 162 | %TO.C,REF\u002A\u002A*% 163 | X140091000Y-91334000D03* 164 | X138991000Y-91334000D03* 165 | X138991000Y-93164000D03* 166 | X140091000Y-93164000D03* 167 | %TD*% 168 | %TO.C,REF\u002A\u002A*% 169 | X120591000Y-55334000D03* 170 | X119491000Y-55334000D03* 171 | X119491000Y-57164000D03* 172 | X120591000Y-57164000D03* 173 | %TD*% 174 | %TO.C,REF\u002A\u002A*% 175 | X119491000Y-76664000D03* 176 | X120591000Y-76664000D03* 177 | X120591000Y-74834000D03* 178 | X119491000Y-74834000D03* 179 | %TD*% 180 | %TO.C,REF\u002A\u002A*% 181 | X101091000Y-57334000D03* 182 | X99991000Y-57334000D03* 183 | X99991000Y-59164000D03* 184 | X101091000Y-59164000D03* 185 | %TD*% 186 | %TO.C,REF\u002A\u002A*% 187 | X158491000Y-76664000D03* 188 | X159591000Y-76664000D03* 189 | X159591000Y-74834000D03* 190 | X158491000Y-74834000D03* 191 | %TD*% 192 | D10* 193 | %TO.C,REF\u002A\u002A*% 194 | X137090000Y-51599000D03* 195 | X137090000Y-54899000D03* 196 | X141990000Y-54899000D03* 197 | X141990000Y-51599000D03* 198 | %TD*% 199 | %TO.C,REF\u002A\u002A*% 200 | X156586000Y-54594000D03* 201 | X156586000Y-57894000D03* 202 | X161486000Y-57894000D03* 203 | X161486000Y-54594000D03* 204 | %TD*% 205 | D12* 206 | %TO.C,REF\u002A\u002A*% 207 | X114680000Y-127320000D03* 208 | X117180000Y-127320000D03* 209 | X119680000Y-127320000D03* 210 | %TD*% 211 | D10* 212 | %TO.C,REF\u002A\u002A*% 213 | X98091000Y-56599000D03* 214 | X98091000Y-59899000D03* 215 | X102991000Y-59899000D03* 216 | X102991000Y-56599000D03* 217 | %TD*% 218 | D11* 219 | %TO.C,REF\u002A\u002A*% 220 | X179091000Y-58334000D03* 221 | X177991000Y-58334000D03* 222 | X177991000Y-60164000D03* 223 | X179091000Y-60164000D03* 224 | %TD*% 225 | %TO.C,REF\u002A\u002A*% 226 | X120591000Y-94329000D03* 227 | X119491000Y-94329000D03* 228 | X119491000Y-96159000D03* 229 | X120591000Y-96159000D03* 230 | %TD*% 231 | D10* 232 | %TO.C,REF\u002A\u002A*% 233 | X102991000Y-79399000D03* 234 | X102991000Y-76099000D03* 235 | X98091000Y-76099000D03* 236 | X98091000Y-79399000D03* 237 | %TD*% 238 | D13* 239 | %TO.C,D14*% 240 | X80980000Y-83701750D03* 241 | X80980000Y-80401750D03* 242 | %TD*% 243 | D11* 244 | %TO.C,REF\u002A\u002A*% 245 | X119491000Y-76664000D03* 246 | X120591000Y-76664000D03* 247 | X120591000Y-74834000D03* 248 | X119491000Y-74834000D03* 249 | %TD*% 250 | D10* 251 | %TO.C,REF\u002A\u002A*% 252 | X141991000Y-74399000D03* 253 | X141991000Y-71099000D03* 254 | X137091000Y-71099000D03* 255 | X137091000Y-74399000D03* 256 | %TD*% 257 | D12* 258 | %TO.C,REF\u002A\u002A*% 259 | X82680000Y-127320000D03* 260 | X85180000Y-127320000D03* 261 | X87680000Y-127320000D03* 262 | %TD*% 263 | D10* 264 | %TO.C,REF\u002A\u002A*% 265 | X180991000Y-80399000D03* 266 | X180991000Y-77099000D03* 267 | X176091000Y-77099000D03* 268 | X176091000Y-80399000D03* 269 | %TD*% 270 | D13* 271 | %TO.C,D14*% 272 | X89980000Y-80401750D03* 273 | X89980000Y-83701750D03* 274 | %TD*% 275 | D11* 276 | %TO.C,REF\u002A\u002A*% 277 | X159586000Y-55329000D03* 278 | X158486000Y-55329000D03* 279 | X158486000Y-57159000D03* 280 | X159586000Y-57159000D03* 281 | %TD*% 282 | %TO.C,REF\u002A\u002A*% 283 | X179091000Y-58334000D03* 284 | X177991000Y-58334000D03* 285 | X177991000Y-60164000D03* 286 | X179091000Y-60164000D03* 287 | %TD*% 288 | D10* 289 | %TO.C,REF\u002A\u002A*% 290 | X98091000Y-95599000D03* 291 | X98091000Y-98899000D03* 292 | X102991000Y-98899000D03* 293 | X102991000Y-95599000D03* 294 | %TD*% 295 | %TO.C,REF\u002A\u002A*% 296 | X122491000Y-77399000D03* 297 | X122491000Y-74099000D03* 298 | X117591000Y-74099000D03* 299 | X117591000Y-77399000D03* 300 | %TD*% 301 | D11* 302 | %TO.C,REF\u002A\u002A*% 303 | X120591000Y-94329000D03* 304 | X119491000Y-94329000D03* 305 | X119491000Y-96159000D03* 306 | X120591000Y-96159000D03* 307 | %TD*% 308 | D10* 309 | %TO.C,REF\u002A\u002A*% 310 | X117591000Y-93594000D03* 311 | X117591000Y-96894000D03* 312 | X122491000Y-96894000D03* 313 | X122491000Y-93594000D03* 314 | %TD*% 315 | %TO.C,REF\u002A\u002A*% 316 | X137091000Y-90599000D03* 317 | X137091000Y-93899000D03* 318 | X141991000Y-93899000D03* 319 | X141991000Y-90599000D03* 320 | %TD*% 321 | %TO.C,REF\u002A\u002A*% 322 | X161491000Y-77399000D03* 323 | X161491000Y-74099000D03* 324 | X156591000Y-74099000D03* 325 | X156591000Y-77399000D03* 326 | %TD*% 327 | %TO.C,REF\u002A\u002A*% 328 | X137091000Y-90599000D03* 329 | X137091000Y-93899000D03* 330 | X141991000Y-93899000D03* 331 | X141991000Y-90599000D03* 332 | %TD*% 333 | %TO.C,REF\u002A\u002A*% 334 | X180991000Y-80399000D03* 335 | X180991000Y-77099000D03* 336 | X176091000Y-77099000D03* 337 | X176091000Y-80399000D03* 338 | %TD*% 339 | %TO.C,REF\u002A\u002A*% 340 | X117591000Y-54599000D03* 341 | X117591000Y-57899000D03* 342 | X122491000Y-57899000D03* 343 | X122491000Y-54599000D03* 344 | %TD*% 345 | D11* 346 | %TO.C,REF\u002A\u002A*% 347 | X138991000Y-73664000D03* 348 | X140091000Y-73664000D03* 349 | X140091000Y-71834000D03* 350 | X138991000Y-71834000D03* 351 | %TD*% 352 | D10* 353 | %TO.C,REF\u002A\u002A*% 354 | X122491000Y-77399000D03* 355 | X122491000Y-74099000D03* 356 | X117591000Y-74099000D03* 357 | X117591000Y-77399000D03* 358 | %TD*% 359 | %TO.C,REF\u002A\u002A*% 360 | X176091000Y-57599000D03* 361 | X176091000Y-60899000D03* 362 | X180991000Y-60899000D03* 363 | X180991000Y-57599000D03* 364 | %TD*% 365 | D11* 366 | %TO.C,REF\u002A\u002A*% 367 | X158491000Y-76664000D03* 368 | X159591000Y-76664000D03* 369 | X159591000Y-74834000D03* 370 | X158491000Y-74834000D03* 371 | %TD*% 372 | %TO.C,REF\u002A\u002A*% 373 | X101091000Y-96334000D03* 374 | X99991000Y-96334000D03* 375 | X99991000Y-98164000D03* 376 | X101091000Y-98164000D03* 377 | %TD*% 378 | %TO.C,REF\u002A\u002A*% 379 | X120591000Y-55334000D03* 380 | X119491000Y-55334000D03* 381 | X119491000Y-57164000D03* 382 | X120591000Y-57164000D03* 383 | %TD*% 384 | D13* 385 | %TO.C,D14*% 386 | X83980000Y-80370000D03* 387 | X83980000Y-83670000D03* 388 | %TD*% 389 | D11* 390 | %TO.C,REF\u002A\u002A*% 391 | X179091000Y-97339000D03* 392 | X177991000Y-97339000D03* 393 | X177991000Y-99169000D03* 394 | X179091000Y-99169000D03* 395 | %TD*% 396 | %TO.C,REF\u002A\u002A*% 397 | X99991000Y-78664000D03* 398 | X101091000Y-78664000D03* 399 | X101091000Y-76834000D03* 400 | X99991000Y-76834000D03* 401 | %TD*% 402 | D10* 403 | %TO.C,REF\u002A\u002A*% 404 | X176091000Y-57599000D03* 405 | X176091000Y-60899000D03* 406 | X180991000Y-60899000D03* 407 | X180991000Y-57599000D03* 408 | %TD*% 409 | D14* 410 | %TO.C,D14*% 411 | X115498250Y-120070000D03* 412 | X118798250Y-120070000D03* 413 | %TD*% 414 | D11* 415 | %TO.C,REF\u002A\u002A*% 416 | X140090000Y-52334000D03* 417 | X138990000Y-52334000D03* 418 | X138990000Y-54164000D03* 419 | X140090000Y-54164000D03* 420 | %TD*% 421 | D13* 422 | %TO.C,D14*% 423 | X86980000Y-83701750D03* 424 | X86980000Y-80401750D03* 425 | %TD*% 426 | D11* 427 | %TO.C,REF\u002A\u002A*% 428 | X99991000Y-78664000D03* 429 | X101091000Y-78664000D03* 430 | X101091000Y-76834000D03* 431 | X99991000Y-76834000D03* 432 | %TD*% 433 | D10* 434 | %TO.C,REF\u002A\u002A*% 435 | X176091000Y-96604000D03* 436 | X176091000Y-99904000D03* 437 | X180991000Y-99904000D03* 438 | X180991000Y-96604000D03* 439 | %TD*% 440 | D11* 441 | %TO.C,REF\u002A\u002A*% 442 | X101091000Y-57334000D03* 443 | X99991000Y-57334000D03* 444 | X99991000Y-59164000D03* 445 | X101091000Y-59164000D03* 446 | %TD*% 447 | %TO.C,REF\u002A\u002A*% 448 | X119491000Y-76664000D03* 449 | X120591000Y-76664000D03* 450 | X120591000Y-74834000D03* 451 | X119491000Y-74834000D03* 452 | %TD*% 453 | %TO.C,REF\u002A\u002A*% 454 | X177991000Y-79664000D03* 455 | X179091000Y-79664000D03* 456 | X179091000Y-77834000D03* 457 | X177991000Y-77834000D03* 458 | %TD*% 459 | %TO.C,REF\u002A\u002A*% 460 | X159586000Y-55329000D03* 461 | X158486000Y-55329000D03* 462 | X158486000Y-57159000D03* 463 | X159586000Y-57159000D03* 464 | %TD*% 465 | M02* 466 | -------------------------------------------------------------------------------- /Kicad Files/iyada_bottom/iyada_bottom/iyada_bottom-B_Paste.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.4+1*% 2 | %TF.CreationDate,2024-08-17T00:02:36-04:00*% 3 | %TF.ProjectId,iyada_baseplate,69796164-615f-4626-9173-65706c617465,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.4+1) date 2024-08-17 00:02:36* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10R,1.200000X0.900000*% 33 | %ADD11R,0.900000X1.200000*% 34 | %ADD12R,0.700000X0.700000*% 35 | %ADD13R,1.500000X0.900000*% 36 | %ADD14RoundRect,0.250000X0.375000X1.000000X-0.375000X1.000000X-0.375000X-1.000000X0.375000X-1.000000X0*% 37 | G04 APERTURE END LIST* 38 | D10* 39 | %TO.C,D14*% 40 | X80980000Y-83701750D03* 41 | X80980000Y-80401750D03* 42 | %TD*% 43 | %TO.C,D14*% 44 | X89980000Y-80401750D03* 45 | X89980000Y-83701750D03* 46 | %TD*% 47 | %TO.C,D14*% 48 | X83980000Y-80370000D03* 49 | X83980000Y-83670000D03* 50 | %TD*% 51 | D11* 52 | %TO.C,D14*% 53 | X115498250Y-120070000D03* 54 | X118798250Y-120070000D03* 55 | %TD*% 56 | D10* 57 | %TO.C,D14*% 58 | X86980000Y-83701750D03* 59 | X86980000Y-80401750D03* 60 | %TD*% 61 | D12* 62 | %TO.C,REF\u002A\u002A*% 63 | X138991000Y-91334000D03* 64 | X140091000Y-91334000D03* 65 | X140091000Y-93164000D03* 66 | X138991000Y-93164000D03* 67 | %TD*% 68 | %TO.C,REF\u002A\u002A*% 69 | X177991000Y-97339000D03* 70 | X179091000Y-97339000D03* 71 | X179091000Y-99169000D03* 72 | X177991000Y-99169000D03* 73 | %TD*% 74 | %TO.C,REF\u002A\u002A*% 75 | X179091000Y-79664000D03* 76 | X177991000Y-79664000D03* 77 | X177991000Y-77834000D03* 78 | X179091000Y-77834000D03* 79 | %TD*% 80 | D13* 81 | %TO.C,REF\u002A\u002A*% 82 | X117591000Y-96894000D03* 83 | X117591000Y-93594000D03* 84 | X122491000Y-93594000D03* 85 | X122491000Y-96894000D03* 86 | %TD*% 87 | D12* 88 | %TO.C,REF\u002A\u002A*% 89 | X177991000Y-58334000D03* 90 | X179091000Y-58334000D03* 91 | X179091000Y-60164000D03* 92 | X177991000Y-60164000D03* 93 | %TD*% 94 | D13* 95 | %TO.C,REF\u002A\u002A*% 96 | X98091000Y-59899000D03* 97 | X98091000Y-56599000D03* 98 | X102991000Y-56599000D03* 99 | X102991000Y-59899000D03* 100 | %TD*% 101 | %TO.C,REF\u002A\u002A*% 102 | X117591000Y-57899000D03* 103 | X117591000Y-54599000D03* 104 | X122491000Y-54599000D03* 105 | X122491000Y-57899000D03* 106 | %TD*% 107 | D12* 108 | %TO.C,REF\u002A\u002A*% 109 | X158486000Y-55329000D03* 110 | X159586000Y-55329000D03* 111 | X159586000Y-57159000D03* 112 | X158486000Y-57159000D03* 113 | %TD*% 114 | %TO.C,REF\u002A\u002A*% 115 | X120591000Y-76664000D03* 116 | X119491000Y-76664000D03* 117 | X119491000Y-74834000D03* 118 | X120591000Y-74834000D03* 119 | %TD*% 120 | D13* 121 | %TO.C,REF\u002A\u002A*% 122 | X122491000Y-74099000D03* 123 | X122491000Y-77399000D03* 124 | X117591000Y-77399000D03* 125 | X117591000Y-74099000D03* 126 | %TD*% 127 | %TO.C,REF\u002A\u002A*% 128 | X180991000Y-77099000D03* 129 | X180991000Y-80399000D03* 130 | X176091000Y-80399000D03* 131 | X176091000Y-77099000D03* 132 | %TD*% 133 | D12* 134 | %TO.C,REF\u002A\u002A*% 135 | X140091000Y-73664000D03* 136 | X138991000Y-73664000D03* 137 | X138991000Y-71834000D03* 138 | X140091000Y-71834000D03* 139 | %TD*% 140 | %TO.C,REF\u002A\u002A*% 141 | X138990000Y-52334000D03* 142 | X140090000Y-52334000D03* 143 | X140090000Y-54164000D03* 144 | X138990000Y-54164000D03* 145 | %TD*% 146 | %TO.C,REF\u002A\u002A*% 147 | X159591000Y-76664000D03* 148 | X158491000Y-76664000D03* 149 | X158491000Y-74834000D03* 150 | X159591000Y-74834000D03* 151 | %TD*% 152 | %TO.C,REF\u002A\u002A*% 153 | X119491000Y-94329000D03* 154 | X120591000Y-94329000D03* 155 | X120591000Y-96159000D03* 156 | X119491000Y-96159000D03* 157 | %TD*% 158 | %TO.C,REF\u002A\u002A*% 159 | X120591000Y-76664000D03* 160 | X119491000Y-76664000D03* 161 | X119491000Y-74834000D03* 162 | X120591000Y-74834000D03* 163 | %TD*% 164 | D13* 165 | %TO.C,REF\u002A\u002A*% 166 | X102991000Y-76099000D03* 167 | X102991000Y-79399000D03* 168 | X98091000Y-79399000D03* 169 | X98091000Y-76099000D03* 170 | %TD*% 171 | %TO.C,REF\u002A\u002A*% 172 | X176091000Y-99904000D03* 173 | X176091000Y-96604000D03* 174 | X180991000Y-96604000D03* 175 | X180991000Y-99904000D03* 176 | %TD*% 177 | D12* 178 | %TO.C,REF\u002A\u002A*% 179 | X99991000Y-57334000D03* 180 | X101091000Y-57334000D03* 181 | X101091000Y-59164000D03* 182 | X99991000Y-59164000D03* 183 | %TD*% 184 | D14* 185 | %TO.C,REF\u002A\u002A*% 186 | X87680000Y-127320000D03* 187 | X85180000Y-127320000D03* 188 | X82680000Y-127320000D03* 189 | %TD*% 190 | D13* 191 | %TO.C,REF\u002A\u002A*% 192 | X176091000Y-60899000D03* 193 | X176091000Y-57599000D03* 194 | X180991000Y-57599000D03* 195 | X180991000Y-60899000D03* 196 | %TD*% 197 | D12* 198 | %TO.C,REF\u002A\u002A*% 199 | X119491000Y-55334000D03* 200 | X120591000Y-55334000D03* 201 | X120591000Y-57164000D03* 202 | X119491000Y-57164000D03* 203 | %TD*% 204 | D13* 205 | %TO.C,REF\u002A\u002A*% 206 | X156591000Y-96899000D03* 207 | X156591000Y-93599000D03* 208 | X161491000Y-93599000D03* 209 | X161491000Y-96899000D03* 210 | %TD*% 211 | D12* 212 | %TO.C,REF\u002A\u002A*% 213 | X101091000Y-78664000D03* 214 | X99991000Y-78664000D03* 215 | X99991000Y-76834000D03* 216 | X101091000Y-76834000D03* 217 | %TD*% 218 | %TO.C,REF\u002A\u002A*% 219 | X120591000Y-76664000D03* 220 | X119491000Y-76664000D03* 221 | X119491000Y-74834000D03* 222 | X120591000Y-74834000D03* 223 | %TD*% 224 | D13* 225 | %TO.C,REF\u002A\u002A*% 226 | X176091000Y-99904000D03* 227 | X176091000Y-96604000D03* 228 | X180991000Y-96604000D03* 229 | X180991000Y-99904000D03* 230 | %TD*% 231 | %TO.C,REF\u002A\u002A*% 232 | X137091000Y-93899000D03* 233 | X137091000Y-90599000D03* 234 | X141991000Y-90599000D03* 235 | X141991000Y-93899000D03* 236 | %TD*% 237 | %TO.C,REF\u002A\u002A*% 238 | X156591000Y-96899000D03* 239 | X156591000Y-93599000D03* 240 | X161491000Y-93599000D03* 241 | X161491000Y-96899000D03* 242 | %TD*% 243 | D14* 244 | %TO.C,REF\u002A\u002A*% 245 | X119680000Y-127320000D03* 246 | X117180000Y-127320000D03* 247 | X114680000Y-127320000D03* 248 | %TD*% 249 | D13* 250 | %TO.C,REF\u002A\u002A*% 251 | X122491000Y-74099000D03* 252 | X122491000Y-77399000D03* 253 | X117591000Y-77399000D03* 254 | X117591000Y-74099000D03* 255 | %TD*% 256 | D12* 257 | %TO.C,REF\u002A\u002A*% 258 | X119491000Y-94329000D03* 259 | X120591000Y-94329000D03* 260 | X120591000Y-96159000D03* 261 | X119491000Y-96159000D03* 262 | %TD*% 263 | %TO.C,REF\u002A\u002A*% 264 | X138990000Y-52334000D03* 265 | X140090000Y-52334000D03* 266 | X140090000Y-54164000D03* 267 | X138990000Y-54164000D03* 268 | %TD*% 269 | D14* 270 | %TO.C,REF\u002A\u002A*% 271 | X103680000Y-127320000D03* 272 | X101180000Y-127320000D03* 273 | X98680000Y-127320000D03* 274 | %TD*% 275 | D12* 276 | %TO.C,REF\u002A\u002A*% 277 | X140091000Y-73664000D03* 278 | X138991000Y-73664000D03* 279 | X138991000Y-71834000D03* 280 | X140091000Y-71834000D03* 281 | %TD*% 282 | D13* 283 | %TO.C,REF\u002A\u002A*% 284 | X117591000Y-96894000D03* 285 | X117591000Y-93594000D03* 286 | X122491000Y-93594000D03* 287 | X122491000Y-96894000D03* 288 | %TD*% 289 | %TO.C,REF\u002A\u002A*% 290 | X156586000Y-57894000D03* 291 | X156586000Y-54594000D03* 292 | X161486000Y-54594000D03* 293 | X161486000Y-57894000D03* 294 | %TD*% 295 | D12* 296 | %TO.C,REF\u002A\u002A*% 297 | X138991000Y-91334000D03* 298 | X140091000Y-91334000D03* 299 | X140091000Y-93164000D03* 300 | X138991000Y-93164000D03* 301 | %TD*% 302 | %TO.C,REF\u002A\u002A*% 303 | X119491000Y-55334000D03* 304 | X120591000Y-55334000D03* 305 | X120591000Y-57164000D03* 306 | X119491000Y-57164000D03* 307 | %TD*% 308 | D13* 309 | %TO.C,REF\u002A\u002A*% 310 | X141991000Y-71099000D03* 311 | X141991000Y-74399000D03* 312 | X137091000Y-74399000D03* 313 | X137091000Y-71099000D03* 314 | %TD*% 315 | %TO.C,REF\u002A\u002A*% 316 | X98091000Y-59899000D03* 317 | X98091000Y-56599000D03* 318 | X102991000Y-56599000D03* 319 | X102991000Y-59899000D03* 320 | %TD*% 321 | D12* 322 | %TO.C,REF\u002A\u002A*% 323 | X158491000Y-94334000D03* 324 | X159591000Y-94334000D03* 325 | X159591000Y-96164000D03* 326 | X158491000Y-96164000D03* 327 | %TD*% 328 | D13* 329 | %TO.C,REF\u002A\u002A*% 330 | X161491000Y-74099000D03* 331 | X161491000Y-77399000D03* 332 | X156591000Y-77399000D03* 333 | X156591000Y-74099000D03* 334 | %TD*% 335 | %TO.C,REF\u002A\u002A*% 336 | X156586000Y-57894000D03* 337 | X156586000Y-54594000D03* 338 | X161486000Y-54594000D03* 339 | X161486000Y-57894000D03* 340 | %TD*% 341 | %TO.C,REF\u002A\u002A*% 342 | X122491000Y-74099000D03* 343 | X122491000Y-77399000D03* 344 | X117591000Y-77399000D03* 345 | X117591000Y-74099000D03* 346 | %TD*% 347 | %TO.C,REF\u002A\u002A*% 348 | X102991000Y-76099000D03* 349 | X102991000Y-79399000D03* 350 | X98091000Y-79399000D03* 351 | X98091000Y-76099000D03* 352 | %TD*% 353 | %TO.C,REF\u002A\u002A*% 354 | X180991000Y-77099000D03* 355 | X180991000Y-80399000D03* 356 | X176091000Y-80399000D03* 357 | X176091000Y-77099000D03* 358 | %TD*% 359 | %TO.C,REF\u002A\u002A*% 360 | X137090000Y-54899000D03* 361 | X137090000Y-51599000D03* 362 | X141990000Y-51599000D03* 363 | X141990000Y-54899000D03* 364 | %TD*% 365 | %TO.C,REF\u002A\u002A*% 366 | X141991000Y-71099000D03* 367 | X141991000Y-74399000D03* 368 | X137091000Y-74399000D03* 369 | X137091000Y-71099000D03* 370 | %TD*% 371 | %TO.C,REF\u002A\u002A*% 372 | X98091000Y-98899000D03* 373 | X98091000Y-95599000D03* 374 | X102991000Y-95599000D03* 375 | X102991000Y-98899000D03* 376 | %TD*% 377 | D12* 378 | %TO.C,REF\u002A\u002A*% 379 | X99991000Y-96334000D03* 380 | X101091000Y-96334000D03* 381 | X101091000Y-98164000D03* 382 | X99991000Y-98164000D03* 383 | %TD*% 384 | %TO.C,REF\u002A\u002A*% 385 | X159591000Y-76664000D03* 386 | X158491000Y-76664000D03* 387 | X158491000Y-74834000D03* 388 | X159591000Y-74834000D03* 389 | %TD*% 390 | %TO.C,REF\u002A\u002A*% 391 | X101091000Y-78664000D03* 392 | X99991000Y-78664000D03* 393 | X99991000Y-76834000D03* 394 | X101091000Y-76834000D03* 395 | %TD*% 396 | D13* 397 | %TO.C,REF\u002A\u002A*% 398 | X137091000Y-93899000D03* 399 | X137091000Y-90599000D03* 400 | X141991000Y-90599000D03* 401 | X141991000Y-93899000D03* 402 | %TD*% 403 | D12* 404 | %TO.C,REF\u002A\u002A*% 405 | X99991000Y-57334000D03* 406 | X101091000Y-57334000D03* 407 | X101091000Y-59164000D03* 408 | X99991000Y-59164000D03* 409 | %TD*% 410 | D13* 411 | %TO.C,REF\u002A\u002A*% 412 | X137090000Y-54899000D03* 413 | X137090000Y-51599000D03* 414 | X141990000Y-51599000D03* 415 | X141990000Y-54899000D03* 416 | %TD*% 417 | D12* 418 | %TO.C,REF\u002A\u002A*% 419 | X158486000Y-55329000D03* 420 | X159586000Y-55329000D03* 421 | X159586000Y-57159000D03* 422 | X158486000Y-57159000D03* 423 | %TD*% 424 | %TO.C,REF\u002A\u002A*% 425 | X179091000Y-79664000D03* 426 | X177991000Y-79664000D03* 427 | X177991000Y-77834000D03* 428 | X179091000Y-77834000D03* 429 | %TD*% 430 | D13* 431 | %TO.C,REF\u002A\u002A*% 432 | X161491000Y-74099000D03* 433 | X161491000Y-77399000D03* 434 | X156591000Y-77399000D03* 435 | X156591000Y-74099000D03* 436 | %TD*% 437 | D12* 438 | %TO.C,REF\u002A\u002A*% 439 | X158491000Y-94334000D03* 440 | X159591000Y-94334000D03* 441 | X159591000Y-96164000D03* 442 | X158491000Y-96164000D03* 443 | %TD*% 444 | %TO.C,REF\u002A\u002A*% 445 | X177991000Y-58334000D03* 446 | X179091000Y-58334000D03* 447 | X179091000Y-60164000D03* 448 | X177991000Y-60164000D03* 449 | %TD*% 450 | %TO.C,REF\u002A\u002A*% 451 | X177991000Y-97339000D03* 452 | X179091000Y-97339000D03* 453 | X179091000Y-99169000D03* 454 | X177991000Y-99169000D03* 455 | %TD*% 456 | D13* 457 | %TO.C,REF\u002A\u002A*% 458 | X176091000Y-60899000D03* 459 | X176091000Y-57599000D03* 460 | X180991000Y-57599000D03* 461 | X180991000Y-60899000D03* 462 | %TD*% 463 | %TO.C,REF\u002A\u002A*% 464 | X117591000Y-57899000D03* 465 | X117591000Y-54599000D03* 466 | X122491000Y-54599000D03* 467 | X122491000Y-57899000D03* 468 | %TD*% 469 | M02* 470 | -------------------------------------------------------------------------------- /Kicad Files/iyada_top/iyada_top/iyada_top-F_Paste.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3+1*% 2 | %TF.CreationDate,2024-08-06T22:55:28-04:00*% 3 | %TF.ProjectId,iyada_flip,69796164-615f-4666-9c69-702e6b696361,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Top*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.3+1) date 2024-08-06 22:55:28* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | %AMRotRect* 32 | 0 Rectangle, with rotation* 33 | 0 The origin of the aperture is its center* 34 | 0 $1 length* 35 | 0 $2 width* 36 | 0 $3 Rotation angle, in degrees counterclockwise* 37 | 0 Add horizontal line* 38 | 21,1,$1,$2,0,0,$3*% 39 | %AMOutline5P* 40 | 0 Free polygon, 5 corners , with rotation* 41 | 0 The origin of the aperture is its center* 42 | 0 number of corners: always 5* 43 | 0 $1 to $10 corner X, Y* 44 | 0 $11 Rotation angle, in degrees counterclockwise* 45 | 0 create outline with 5 corners* 46 | 4,1,5,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$1,$2,$11*% 47 | %AMOutline6P* 48 | 0 Free polygon, 6 corners , with rotation* 49 | 0 The origin of the aperture is its center* 50 | 0 number of corners: always 6* 51 | 0 $1 to $12 corner X, Y* 52 | 0 $13 Rotation angle, in degrees counterclockwise* 53 | 0 create outline with 6 corners* 54 | 4,1,6,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$1,$2,$13*% 55 | %AMOutline7P* 56 | 0 Free polygon, 7 corners , with rotation* 57 | 0 The origin of the aperture is its center* 58 | 0 number of corners: always 7* 59 | 0 $1 to $14 corner X, Y* 60 | 0 $15 Rotation angle, in degrees counterclockwise* 61 | 0 create outline with 7 corners* 62 | 4,1,7,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$1,$2,$15*% 63 | %AMOutline8P* 64 | 0 Free polygon, 8 corners , with rotation* 65 | 0 The origin of the aperture is its center* 66 | 0 number of corners: always 8* 67 | 0 $1 to $16 corner X, Y* 68 | 0 $17 Rotation angle, in degrees counterclockwise* 69 | 0 create outline with 8 corners* 70 | 4,1,8,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$1,$2,$17*% 71 | G04 Aperture macros list end* 72 | %ADD10RotRect,0.900000X1.200000X348.000000*% 73 | %ADD11RotRect,0.900000X1.200000X72.000000*% 74 | %ADD12R,0.900000X1.200000*% 75 | %ADD13RotRect,0.900000X1.200000X342.000000*% 76 | %ADD14R,0.300000X1.300000*% 77 | %ADD15R,1.800000X2.200000*% 78 | %ADD16Outline8P,-0.900000X0.275000X-0.625000X0.550000X0.625000X0.550000X0.900000X0.275000X0.900000X-0.275000X0.625000X-0.550000X-0.625000X-0.550000X-0.900000X-0.275000X270.000000*% 79 | %ADD17RotRect,0.900000X1.200000X354.000000*% 80 | %ADD18RoundRect,0.240000X-0.960000X-0.960000X0.960000X-0.960000X0.960000X0.960000X-0.960000X0.960000X0*% 81 | %ADD19RoundRect,0.240000X0.960000X0.960000X-0.960000X0.960000X-0.960000X-0.960000X0.960000X-0.960000X0*% 82 | %ADD20RoundRect,0.240000X1.138617X0.739426X-0.739426X1.138617X-1.138617X-0.739426X0.739426X-1.138617X0*% 83 | %ADD21RoundRect,0.240000X1.055088X0.854394X-0.854394X1.055088X-1.055088X-0.854394X0.854394X-1.055088X0*% 84 | %ADD22RoundRect,0.240000X1.209671X0.616358X-0.616358X1.209671X-1.209671X-0.616358X0.616358X-1.209671X0*% 85 | %ADD23RoundRect,0.240000X-1.138617X-0.739426X0.739426X-1.138617X1.138617X0.739426X-0.739426X1.138617X0*% 86 | %ADD24RoundRect,0.240000X-1.055088X-0.854394X0.854394X-1.055088X1.055088X0.854394X-0.854394X1.055088X0*% 87 | %ADD25RoundRect,0.240000X-1.209671X-0.616358X0.616358X-1.209671X1.209671X0.616358X-0.616358X1.209671X0*% 88 | G04 APERTURE END LIST* 89 | D10* 90 | %TO.C,D14*% 91 | X191889155Y-138689554D03* 92 | X195117039Y-139375662D03* 93 | %TD*% 94 | D11* 95 | %TO.C,D14*% 96 | X228808278Y-121587078D03* 97 | X229828034Y-118448592D03* 98 | %TD*% 99 | D12* 100 | %TO.C,D14*% 101 | X80732005Y-69805019D03* 102 | X84032013Y-69805021D03* 103 | %TD*% 104 | %TO.C,D14*% 105 | X119732001Y-86305003D03* 106 | X123032009Y-86305005D03* 107 | %TD*% 108 | %TO.C,D14*% 109 | X86732002Y-128305001D03* 110 | X90032010Y-128305003D03* 111 | %TD*% 112 | D13* 113 | %TO.C,D14*% 114 | X210801408Y-143585963D03* 115 | X213939894Y-144605719D03* 116 | %TD*% 117 | D10* 118 | %TO.C,D14*% 119 | X200258017Y-103253902D03* 120 | X203485901Y-103940010D03* 121 | %TD*% 122 | D12* 123 | %TO.C,D14*% 124 | X178232006Y-69805003D03* 125 | X181532014Y-69805005D03* 126 | %TD*% 127 | %TO.C,D14*% 128 | X80732001Y-89305009D03* 129 | X84032009Y-89305011D03* 130 | %TD*% 131 | %TO.C,D14*% 132 | X158731993Y-105805004D03* 133 | X162032001Y-105805006D03* 134 | %TD*% 135 | %TO.C,D14*% 136 | X158732007Y-66805003D03* 137 | X162032015Y-66805005D03* 138 | %TD*% 139 | %TO.C,D14*% 140 | X139232000Y-63805001D03* 141 | X142532008Y-63805003D03* 142 | %TD*% 143 | %TO.C,D14*% 144 | X119732003Y-105805004D03* 145 | X123032011Y-105805006D03* 146 | %TD*% 147 | D14* 148 | %TO.C,REF\u002A\u002A*% 149 | X141338001Y-117253008D03* 150 | X141838002Y-117253004D03* 151 | X142338001Y-117253008D03* 152 | X142837998Y-117253009D03* 153 | X143337996Y-117253013D03* 154 | X143838000Y-117253008D03* 155 | X144337998Y-117253005D03* 156 | X144838001Y-117253008D03* 157 | X145338001Y-117253008D03* 158 | X145838000Y-117253008D03* 159 | X146338000Y-117253009D03* 160 | X146838015Y-117253010D03* 161 | D15* 162 | X139438001Y-120503008D03* 163 | X148738001Y-120503008D03* 164 | %TD*% 165 | D16* 166 | %TO.C,B1*% 167 | X196641015Y-52311003D03* 168 | X196641021Y-58511005D03* 169 | X192941003Y-52311007D03* 170 | X192941009Y-58511009D03* 171 | %TD*% 172 | D12* 173 | %TO.C,D14*% 174 | X80732001Y-108805005D03* 175 | X84032009Y-108805007D03* 176 | %TD*% 177 | %TO.C,D14*% 178 | X158731997Y-86305003D03* 179 | X162032005Y-86305005D03* 180 | %TD*% 181 | %TO.C,D14*% 182 | X100231999Y-107805000D03* 183 | X103532007Y-107805002D03* 184 | %TD*% 185 | %TO.C,D14*% 186 | X106232004Y-127305001D03* 187 | X109532012Y-127305003D03* 188 | %TD*% 189 | D17* 190 | %TO.C,D14*% 191 | X172568701Y-135796843D03* 192 | X175850623Y-136141787D03* 193 | %TD*% 194 | D12* 195 | %TO.C,D14*% 196 | X197732009Y-99055011D03* 197 | X201032017Y-99055013D03* 198 | %TD*% 199 | %TO.C,D14*% 200 | X139232012Y-83305006D03* 201 | X142532020Y-83305008D03* 202 | %TD*% 203 | %TO.C,D14*% 204 | X139232004Y-102804998D03* 205 | X142532012Y-102805000D03* 206 | %TD*% 207 | %TO.C,D14*% 208 | X100231999Y-88305003D03* 209 | X103532007Y-88305005D03* 210 | %TD*% 211 | %TO.C,D14*% 212 | X178232003Y-89305002D03* 213 | X181532011Y-89305004D03* 214 | %TD*% 215 | D16* 216 | %TO.C,B1*% 217 | X207381015Y-52625995D03* 218 | X207381021Y-58825997D03* 219 | X203681003Y-52625999D03* 220 | X203681009Y-58826001D03* 221 | %TD*% 222 | D12* 223 | %TO.C,D14*% 224 | X178232005Y-108804998D03* 225 | X181532013Y-108805000D03* 226 | %TD*% 227 | %TO.C,D14*% 228 | X197732005Y-79555011D03* 229 | X201032013Y-79555013D03* 230 | %TD*% 231 | %TO.C,D14*% 232 | X119731995Y-66805008D03* 233 | X123032003Y-66805010D03* 234 | %TD*% 235 | %TO.C,D14*% 236 | X100232002Y-68804997D03* 237 | X103532010Y-68804999D03* 238 | %TD*% 239 | D18* 240 | %TO.C,REF\u002A\u002A*% 241 | X75297000Y-102695009D03* 242 | X88223999Y-105235009D03* 243 | %TD*% 244 | %TO.C,REF\u002A\u002A*% 245 | X75297008Y-63694998D03* 246 | X88224007Y-66234998D03* 247 | %TD*% 248 | %TO.C,REF\u002A\u002A*% 249 | X94797011Y-101695001D03* 250 | X107724010Y-104235001D03* 251 | %TD*% 252 | D19* 253 | %TO.C,REF\u002A\u002A*% 254 | X144382005Y-88155008D03* 255 | X132382004Y-90355009D03* 256 | %TD*% 257 | D18* 258 | %TO.C,REF\u002A\u002A*% 259 | X172797000Y-83194999D03* 260 | X185723999Y-85734999D03* 261 | %TD*% 262 | %TO.C,REF\u002A\u002A*% 263 | X114297008Y-60695008D03* 264 | X127224007Y-63235008D03* 265 | %TD*% 266 | D19* 267 | %TO.C,REF\u002A\u002A*% 268 | X183382001Y-74654998D03* 269 | X171382000Y-76854999D03* 270 | %TD*% 271 | %TO.C,REF\u002A\u002A*% 272 | X183382005Y-94155000D03* 273 | X171382004Y-96355001D03* 274 | %TD*% 275 | D18* 276 | %TO.C,REF\u002A\u002A*% 277 | X153297005Y-80195007D03* 278 | X166224004Y-82735007D03* 279 | %TD*% 280 | D19* 281 | %TO.C,REF\u002A\u002A*% 282 | X111382010Y-112654999D03* 283 | X99382009Y-114855000D03* 284 | %TD*% 285 | %TO.C,REF\u002A\u002A*% 286 | X183382010Y-55155003D03* 287 | X171382009Y-57355004D03* 288 | %TD*% 289 | %TO.C,REF\u002A\u002A*% 290 | X144382008Y-49155015D03* 291 | X132382007Y-51355016D03* 292 | %TD*% 293 | D18* 294 | %TO.C,REF\u002A\u002A*% 295 | X133797009Y-77195007D03* 296 | X146724008Y-79735007D03* 297 | %TD*% 298 | D19* 299 | %TO.C,REF\u002A\u002A*% 300 | X163882004Y-91155000D03* 301 | X151882003Y-93355001D03* 302 | %TD*% 303 | %TO.C,REF\u002A\u002A*% 304 | X124882009Y-52155007D03* 305 | X112882008Y-54355008D03* 306 | %TD*% 307 | %TO.C,REF\u002A\u002A*% 308 | X105382012Y-93155000D03* 309 | X93382011Y-95355001D03* 310 | %TD*% 311 | D18* 312 | %TO.C,REF\u002A\u002A*% 313 | X192297007Y-92945007D03* 314 | X205224006Y-95485007D03* 315 | %TD*% 316 | D20* 317 | %TO.C,REF\u002A\u002A*% 318 | X199972525Y-125430446D03* 319 | X187777352Y-125087432D03* 320 | %TD*% 321 | D19* 322 | %TO.C,REF\u002A\u002A*% 323 | X105382006Y-54155007D03* 324 | X93382005Y-56355008D03* 325 | %TD*% 326 | %TO.C,REF\u002A\u002A*% 327 | X105382011Y-73654996D03* 328 | X93382010Y-75854997D03* 329 | %TD*% 330 | D18* 331 | %TO.C,REF\u002A\u002A*% 332 | X133797007Y-57695016D03* 333 | X146724006Y-60235016D03* 334 | %TD*% 335 | D21* 336 | %TO.C,REF\u002A\u002A*% 337 | X179221837Y-121765415D03* 338 | X167057607Y-122699023D03* 339 | %TD*% 340 | D19* 341 | %TO.C,REF\u002A\u002A*% 342 | X124882004Y-71654998D03* 343 | X112882003Y-73854999D03* 344 | %TD*% 345 | D18* 346 | %TO.C,REF\u002A\u002A*% 347 | X94797010Y-82194997D03* 348 | X107724009Y-84734997D03* 349 | %TD*% 350 | %TO.C,REF\u002A\u002A*% 351 | X114297003Y-80194999D03* 352 | X127224002Y-82734999D03* 353 | %TD*% 354 | %TO.C,REF\u002A\u002A*% 355 | X153297003Y-99695001D03* 356 | X166224002Y-102235001D03* 357 | %TD*% 358 | %TO.C,REF\u002A\u002A*% 359 | X153297013Y-60694996D03* 360 | X166224012Y-63234996D03* 361 | %TD*% 362 | D22* 363 | %TO.C,REF\u002A\u002A*% 364 | X220226440Y-131244430D03* 365 | X208133929Y-129628550D03* 366 | %TD*% 367 | D19* 368 | %TO.C,REF\u002A\u002A*% 369 | X202882013Y-64904996D03* 370 | X190882012Y-67104997D03* 371 | %TD*% 372 | %TO.C,REF\u002A\u002A*% 373 | X85882008Y-74655005D03* 374 | X73882007Y-76855006D03* 375 | %TD*% 376 | D23* 377 | %TO.C,REF\u002A\u002A*% 378 | X187843283Y-131583086D03* 379 | X199959699Y-136755256D03* 380 | %TD*% 381 | D18* 382 | %TO.C,REF\u002A\u002A*% 383 | X100797009Y-121195000D03* 384 | X113724008Y-123735000D03* 385 | %TD*% 386 | D19* 387 | %TO.C,REF\u002A\u002A*% 388 | X202882008Y-84405006D03* 389 | X190882007Y-86605007D03* 390 | %TD*% 391 | %TO.C,REF\u002A\u002A*% 392 | X85882009Y-55154997D03* 393 | X73882008Y-57354998D03* 394 | %TD*% 395 | %TO.C,REF\u002A\u002A*% 396 | X124882003Y-91155008D03* 397 | X112882002Y-93355009D03* 398 | %TD*% 399 | D18* 400 | %TO.C,REF\u002A\u002A*% 401 | X133797004Y-96695009D03* 402 | X146724003Y-99235009D03* 403 | %TD*% 404 | D19* 405 | %TO.C,REF\u002A\u002A*% 406 | X163882006Y-71655006D03* 407 | X151882005Y-73855007D03* 408 | %TD*% 409 | %TO.C,REF\u002A\u002A*% 410 | X91882016Y-113655000D03* 411 | X79882015Y-115855001D03* 412 | %TD*% 413 | D24* 414 | %TO.C,REF\u002A\u002A*% 415 | X167802146Y-129152200D03* 416 | X180392827Y-133029528D03* 417 | %TD*% 418 | D19* 419 | %TO.C,REF\u002A\u002A*% 420 | X85882001Y-94155008D03* 421 | X73882000Y-96355009D03* 422 | %TD*% 423 | D25* 424 | %TO.C,REF\u002A\u002A*% 425 | X207520507Y-136095513D03* 426 | X219029910Y-142505857D03* 427 | %TD*% 428 | D18* 429 | %TO.C,REF\u002A\u002A*% 430 | X172797004Y-102695001D03* 431 | X185724003Y-105235001D03* 432 | %TD*% 433 | D19* 434 | %TO.C,REF\u002A\u002A*% 435 | X144382010Y-68655006D03* 436 | X132382009Y-70855007D03* 437 | %TD*% 438 | %TO.C,REF\u002A\u002A*% 439 | X163882014Y-52154995D03* 440 | X151882013Y-54354996D03* 441 | %TD*% 442 | D18* 443 | %TO.C,REF\u002A\u002A*% 444 | X172797009Y-63695004D03* 445 | X185724008Y-66235004D03* 446 | %TD*% 447 | %TO.C,REF\u002A\u002A*% 448 | X81297015Y-122195001D03* 449 | X94224014Y-124735001D03* 450 | %TD*% 451 | %TO.C,REF\u002A\u002A*% 452 | X75297007Y-83195006D03* 453 | X88224006Y-85735006D03* 454 | %TD*% 455 | %TO.C,REF\u002A\u002A*% 456 | X192297012Y-73444997D03* 457 | X205224011Y-75984997D03* 458 | %TD*% 459 | %TO.C,REF\u002A\u002A*% 460 | X114297002Y-99695009D03* 461 | X127224001Y-102235009D03* 462 | %TD*% 463 | %TO.C,REF\u002A\u002A*% 464 | X94797005Y-62695008D03* 465 | X107724004Y-65235008D03* 466 | %TD*% 467 | M02* 468 | -------------------------------------------------------------------------------- /kiraibuilds/iyada/rev1/cirque_defaults.c: -------------------------------------------------------------------------------- 1 | #include QMK_KEYBOARD_H 2 | #include "keyboard.h" 3 | 4 | //Including the joystick.h file only if joysticks are actually enabled 5 | #if defined(JOYSTICK_ENABLE) 6 | # include "joystick.h" 7 | # endif 8 | 9 | //Including the Cirque drivers. This is being used to poll the Absolute X and Absolute Y values. 10 | // 11 | //NOTE: Use .xValue, .yValue, .zValue, and .touchDown to actually poll/manipulate the data sent by the Cirque(s). 12 | #include "drivers/sensors/cirque_pinnacle.h" 13 | 14 | //Defining 4 virtual joystick axes, but only if joysticks are actually enabled. 15 | //We will be mapping the data polled from the Cirques onto these 4 axes later on. 16 | #if defined(JOYSTICK_ENABLE) 17 | # include "joystick.h" 18 | joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = { 19 | JOYSTICK_AXIS_VIRTUAL, // 0 - Left Stick, X 20 | JOYSTICK_AXIS_VIRTUAL, // 1 - Left Stick, Y 21 | JOYSTICK_AXIS_VIRTUAL, // 2 - Right Stick, X 22 | JOYSTICK_AXIS_VIRTUAL // 3 - Right Stick, Y 23 | }; 24 | # endif 25 | //Layer maps: 26 | // 27 | //Having your layers declared in a separate file makes it easier for several files to all employ layer-dependant behaviours. 28 | //This is a non-standard feature I just made up, so it will only be included if the user decides to copy the idea. 29 | #if __has_include( "layers.h" ) && defined(LAYER_MAP) 30 | #include "layers.h" 31 | #endif 32 | 33 | //Inverting the circular scroll function on the right-hand side: 34 | // 35 | //Circular scrolling starting from the side of a given Cirque that faces the opposite keyboard half is vertical scrolling, 36 | //Circular scrolling starting from the outer side of a given Cirque is horizontal scrolling. 37 | #if defined(CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE) && defined(POINTING_DEVICE_COMBINED) 38 | void pointing_device_init_user(void) { 39 | cirque_pinnacle_configure_circular_scroll(33, 16, 9102, 18, !is_keyboard_left()); 40 | }; 41 | #endif 42 | 43 | //Cirque Joystick Modes: 44 | // 45 | //There are multiple ways one might want the pair of Cirque trackpads to behave. 46 | //As such, two buttons (KC_CNCL and KC_SYRQ) alongside this integer are used to toggle between multiple Joystick Modes. 47 | #ifdef JOYSTICK_ENABLE 48 | uint8_t cirque_joystick_mode = 1; 49 | #endif 50 | 51 | //Cirque CPI Settings 52 | // 53 | //KC_ACL0, KC_ACL1, and KC_ACL2 do not normally affect the CPI/DPI of Cirque trackpads. 54 | //This integer alongside the code that follows used the pointing_device_set_cpi_on_side function to change that! 55 | uint8_t cirque_cpi_setting = 1; 56 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { 57 | switch (keycode) { 58 | case KC_ACL0: 59 | if (record->event.pressed) { 60 | pointing_device_set_cpi_on_side(false, 300); 61 | pointing_device_set_cpi_on_side(true, 300); 62 | cirque_cpi_setting = 0; 63 | } 64 | return false; // Skip all further processing of this key 65 | case KC_ACL1: 66 | if (record->event.pressed) { 67 | pointing_device_set_cpi_on_side(false, 600); 68 | pointing_device_set_cpi_on_side(true, 600); 69 | cirque_cpi_setting = 1; 70 | } 71 | return false; // Skip all further processing of this key 72 | case KC_ACL2: 73 | if (record->event.pressed) { 74 | pointing_device_set_cpi_on_side(false, 800); 75 | pointing_device_set_cpi_on_side(true, 800); 76 | cirque_cpi_setting = 2; 77 | 78 | } 79 | return false; // Skip all further processing of this key 80 | //Joystick Mode Shifting 81 | // 82 | //This code simply checks whether KC_CNCL or KC_SYRQ have been pressed, and changes the Joystick Mode value accordingly. 83 | #ifdef JOYSTICK_ENABLE 84 | case KC_SYRQ: 85 | if (record->event.pressed) { 86 | 87 | if(cirque_joystick_mode > 1){ 88 | cirque_joystick_mode -= 1; 89 | }else if(cirque_joystick_mode == 1){ 90 | cirque_joystick_mode = 3; 91 | } 92 | 93 | } 94 | return false; // Skip all further processing of this key 95 | case KC_CNCL: 96 | if (record->event.pressed) { 97 | 98 | if(cirque_joystick_mode < 3){ 99 | cirque_joystick_mode += 1; 100 | }else if(cirque_joystick_mode == 3){ 101 | cirque_joystick_mode = 1; 102 | } 103 | 104 | } 105 | return false; // Skip all further processing of this key 106 | #endif 107 | default: 108 | return true; // Process all other keycodes normally 109 | } 110 | } 111 | 112 | // Pointers - Initialization 113 | // 114 | // This is the beginning of the Cirque & Cirque Joystick code block 115 | #ifdef POINTING_DEVICE_COMBINED 116 | report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) { 117 | 118 | //Cirque Joystick Code - Mode 1 Code 119 | // 120 | //Mode 1 - Polling the Absolute X and Absolute Y values from one Cirque trackpad, while treating the other as a mouse 121 | #ifdef JOYSTICK_ENABLE 122 | if(cirque_joystick_mode == 1){ 123 | 124 | //The is_keyboard_left() function is used here because the cirque_pinnacle_read_data() function ONLY returns the data corresponding to the Master half's Cirque* 125 | if(is_keyboard_left()){ 126 | //Left Stick Code 127 | pinnacle_data_t left_joystick_set = cirque_pinnacle_read_data(); 128 | 129 | uint16_t xLeftTemp = ((left_joystick_set.xValue/8)-128); 130 | uint16_t yLeftTemp = ((left_joystick_set.yValue/8)-128); 131 | 132 | if(left_joystick_set.touchDown!=0||left_joystick_set.zValue!=0){ 133 | joystick_set_axis(0, +xLeftTemp); 134 | joystick_set_axis(1, +yLeftTemp); 135 | } 136 | 137 | 138 | }else{ 139 | //Right Stick Code 140 | pinnacle_data_t right_joystick_set = cirque_pinnacle_read_data(); 141 | 142 | uint16_t xRightTemp = ((right_joystick_set.xValue/8)-128); 143 | uint16_t yRightTemp = ((right_joystick_set.yValue/8)-128); 144 | 145 | if(right_joystick_set.touchDown!=0||right_joystick_set.zValue!=0){ 146 | joystick_set_axis(2, +xRightTemp); 147 | joystick_set_axis(3, +yRightTemp); 148 | } 149 | 150 | 151 | } 152 | //Cirque Joystick Code - Mode 2 Code 153 | // 154 | //Mode 2 - Swiping in a direction on a given Cirque holds the corresponding joystick in that direction, while tapping resets it. 155 | } else if (cirque_joystick_mode == 2) { 156 | //Left Stick Code 157 | uint16_t LeftCirqueX = joystick_read_axis(0)+left_report.x; 158 | uint16_t LeftCirqueY = joystick_read_axis(1)+left_report.y; 159 | //Left Stick - X Axis 160 | if(left_report.x!=0){ 161 | joystick_set_axis(0, LeftCirqueX); 162 | } 163 | //Left Stick - Y Axis 164 | if(left_report.y!=0){ 165 | joystick_set_axis(1, LeftCirqueY); 166 | } 167 | //Right Stick Code 168 | uint16_t RightCirqueX = joystick_read_axis(2)+right_report.x; 169 | uint16_t RightCirqueY = joystick_read_axis(3)+right_report.y; 170 | //Right Stick - X Axis 171 | if(right_report.x!=0){ 172 | joystick_set_axis(2, RightCirqueX); 173 | } 174 | //Right Stick - Y Axis 175 | if(right_report.y!=0){ 176 | joystick_set_axis(3, RightCirqueY); 177 | } 178 | //Cirque Joystick Code - Mode 3 Code 179 | // 180 | //Mode 3 - Polling the Absolute X and Absolute Y values from one Cirque trackpad, while putting the other into Mode 2 181 | } else if (cirque_joystick_mode == 3) { 182 | if(is_keyboard_left()){ 183 | 184 | //Left Side Master - Code 185 | pinnacle_data_t left_joystick_set = cirque_pinnacle_read_data(); 186 | //Left Stick Code 187 | uint16_t xLeftTemp = ((left_joystick_set.xValue/8)-128); 188 | uint16_t yLeftTemp = ((left_joystick_set.yValue/8)-128); 189 | 190 | if(left_joystick_set.touchDown!=0||left_joystick_set.zValue!=0){ 191 | joystick_set_axis(0, +xLeftTemp); 192 | joystick_set_axis(1, +yLeftTemp); 193 | } 194 | //Right Stick Code 195 | uint16_t RightCirqueX = joystick_read_axis(2)+right_report.x; 196 | uint16_t RightCirqueY = joystick_read_axis(3)+right_report.y; 197 | if(right_report.x!=0){ 198 | joystick_set_axis(2, RightCirqueX); 199 | } 200 | 201 | if(right_report.y!=0){ 202 | joystick_set_axis(3, RightCirqueY); 203 | } 204 | 205 | }else{ 206 | 207 | //Right Side Master - Code 208 | pinnacle_data_t right_joystick_set = cirque_pinnacle_read_data(); 209 | //Right Stick Code 210 | uint16_t xRightTemp = ((right_joystick_set.xValue/8)-128); 211 | uint16_t yRightTemp = ((right_joystick_set.yValue/8)-128); 212 | 213 | if(right_joystick_set.touchDown!=0||right_joystick_set.zValue!=0){ 214 | joystick_set_axis(2, +xRightTemp); 215 | joystick_set_axis(3, +yRightTemp); 216 | } 217 | //Left Stick Code 218 | uint16_t LeftCirqueX = joystick_read_axis(0)+left_report.x; 219 | uint16_t LeftCirqueY = joystick_read_axis(1)+left_report.y; 220 | if(left_report.x!=0){ 221 | joystick_set_axis(0, LeftCirqueX); 222 | } 223 | 224 | if(left_report.y!=0){ 225 | joystick_set_axis(1, LeftCirqueY); 226 | } 227 | 228 | } 229 | } 230 | #endif 231 | 232 | 233 | // Inverting the left-click and right-click functions on the right-hand side 234 | if((right_report.buttons) == MOUSE_BTN1) { 235 | right_report.buttons &= ~MOUSE_BTN1; 236 | right_report.buttons |= MOUSE_BTN2; 237 | } else if((right_report.buttons) == MOUSE_BTN2) { 238 | right_report.buttons &= ~MOUSE_BTN2; 239 | right_report.buttons |= MOUSE_BTN1; 240 | } else { 241 | right_report.buttons &= ~MOUSE_BTN1; 242 | right_report.buttons &= ~MOUSE_BTN2; 243 | } 244 | 245 | #ifdef JOYSTICK_ENABLE 246 | // Cirque Joystick - Setting the previously enumerated Joystick axes 247 | if(layer_state_is(_GAMES)) { 248 | // Setting the non-joystick related pointer movements to zero when appropriate 249 | if(cirque_joystick_mode == 1){ 250 | left_report.x = 0; 251 | left_report.y = 0; 252 | left_report.v = 0; 253 | left_report.h = 0; 254 | right_report.v = 0; 255 | right_report.h = 0; 256 | left_report.buttons &= ~MOUSE_BTN1; 257 | left_report.buttons &= ~MOUSE_BTN2; 258 | right_report.buttons &= ~MOUSE_BTN1; 259 | right_report.buttons &= ~MOUSE_BTN2; 260 | }else if(cirque_joystick_mode == 2){ 261 | left_report.x = 0; 262 | left_report.y = 0; 263 | left_report.v = 0; 264 | left_report.h = 0; 265 | right_report.x = 0; 266 | right_report.y = 0; 267 | right_report.v = 0; 268 | right_report.h = 0; 269 | left_report.buttons &= ~MOUSE_BTN1; 270 | left_report.buttons &= ~MOUSE_BTN2; 271 | right_report.buttons &= ~MOUSE_BTN1; 272 | right_report.buttons &= ~MOUSE_BTN2; 273 | }else if(cirque_joystick_mode == 3){ 274 | left_report.x = 0; 275 | left_report.y = 0; 276 | left_report.v = 0; 277 | left_report.h = 0; 278 | right_report.x = 0; 279 | right_report.y = 0; 280 | right_report.v = 0; 281 | right_report.h = 0; 282 | left_report.buttons &= ~MOUSE_BTN1; 283 | left_report.buttons &= ~MOUSE_BTN2; 284 | right_report.buttons &= ~MOUSE_BTN1; 285 | right_report.buttons &= ~MOUSE_BTN2; 286 | } 287 | } 288 | #endif 289 | 290 | return pointing_device_combine_reports(left_report, right_report); 291 | } 292 | 293 | #endif 294 | 295 | // *ADDITIONAL INFORMATION: 296 | // 297 | //As previously mentioned, cirque_pinnacle_read_data() provides data associated with the Master half. 298 | // 299 | //It is technically possible to poll the Absolute X and Y values from both Cirques separately and simultaneously, however... 300 | // 301 | //1: When two Cirque trackpads are connected via I2C, they will both have the same I2C address unless reconfigured. If connected in this way, one can only poll the Absolute touch data from the Cirque connected to the Master half. 302 | //2: The I2C address of a Cirque trackpad can be changed from the default address of 0x2A over to the address 0x2C by connecting the two pins labelled ADR using a 470K resistor. 303 | //3: When two Cirque trackpads are connected via SPI, one can poll the Absolute X and Y values from them separately and simultaneously by connecting each Cirque to a different SS/CS pin on their respective keyboard half 304 | //4: The code to accomplish these things is not technically part of QMK, so everything mentioned will be added externally using files like this such that those using the master QMK repository can still use it. 305 | --------------------------------------------------------------------------------