mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						7d153b9a66
					
				
							
								
								
									
										145
									
								
								keyboards/handwired/snatchpad/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								keyboards/handwired/snatchpad/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,145 @@ | ||||
| // Copyright 2022 xia0 (@xia0)
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "config_common.h" | ||||
| 
 | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID    0x6662 | ||||
| #define PRODUCT_ID   0x7370 | ||||
| #define DEVICE_VER   0x0001 | ||||
| #define MANUFACTURER xia0 | ||||
| #define PRODUCT      snatchpad | ||||
| 
 | ||||
| /* key matrix size */ | ||||
| #define MATRIX_ROWS 3 | ||||
| #define MATRIX_COLS 3 | ||||
| 
 | ||||
| /*
 | ||||
|  * Keyboard Matrix Assignments | ||||
|  * | ||||
|  * Change this to how you wired your keyboards | ||||
|  * COLS: AVR pins used for columns, left to right | ||||
|  * ROWS: AVR pins used for rows, top to bottom | ||||
|  * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) | ||||
|  *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) | ||||
|  * | ||||
|  */ | ||||
| #define MATRIX_ROW_PINS { F4, F5, F6 } | ||||
| #define MATRIX_COL_PINS { B1, B3, B2 } | ||||
| #define UNUSED_PINS | ||||
| 
 | ||||
| /* COL2ROW, ROW2COL */ | ||||
| #define DIODE_DIRECTION COL2ROW | ||||
| 
 | ||||
| /* Rotary encoder options */ | ||||
| #define ENCODER_RESOLUTIONS { 4, 4 } | ||||
| #define ENCODERS_PAD_A { D3, D0 } | ||||
| #define ENCODERS_PAD_B { D2, D1 } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. | ||||
|  */ | ||||
| //#define SOFT_SERIAL_PIN D0  // or D1, D2, D3, E6
 | ||||
| 
 | ||||
| //#define LED_NUM_LOCK_PIN B0
 | ||||
| //#define LED_CAPS_LOCK_PIN B1
 | ||||
| //#define LED_SCROLL_LOCK_PIN B2
 | ||||
| //#define LED_COMPOSE_PIN B3
 | ||||
| //#define LED_KANA_PIN B4
 | ||||
| 
 | ||||
| //#define BACKLIGHT_PIN B7
 | ||||
| //#define BACKLIGHT_LEVELS 3
 | ||||
| //#define BACKLIGHT_BREATHING
 | ||||
| 
 | ||||
| //#define RGB_DI_PIN E2
 | ||||
| //#ifdef RGB_DI_PIN
 | ||||
| //#    define RGBLED_NUM 16
 | ||||
| //#    define RGBLIGHT_HUE_STEP 8
 | ||||
| //#    define RGBLIGHT_SAT_STEP 8
 | ||||
| //#    define RGBLIGHT_VAL_STEP 8
 | ||||
| //#    define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
 | ||||
| //#    define RGBLIGHT_SLEEP  /* If defined, the RGB lighting will be switched off when the host goes to sleep */
 | ||||
| /*== all animations enable ==*/ | ||||
| //#    define RGBLIGHT_ANIMATIONS
 | ||||
| /*== or choose animations ==*/ | ||||
| //#    define RGBLIGHT_EFFECT_BREATHING
 | ||||
| //#    define RGBLIGHT_EFFECT_RAINBOW_MOOD
 | ||||
| //#    define RGBLIGHT_EFFECT_RAINBOW_SWIRL
 | ||||
| //#    define RGBLIGHT_EFFECT_SNAKE
 | ||||
| //#    define RGBLIGHT_EFFECT_KNIGHT
 | ||||
| //#    define RGBLIGHT_EFFECT_CHRISTMAS
 | ||||
| //#    define RGBLIGHT_EFFECT_STATIC_GRADIENT
 | ||||
| //#    define RGBLIGHT_EFFECT_RGB_TEST
 | ||||
| //#    define RGBLIGHT_EFFECT_ALTERNATING
 | ||||
| /*== customize breathing effect ==*/ | ||||
| /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ | ||||
| //#    define RGBLIGHT_BREATHE_TABLE_SIZE 256      // 256(default) or 128 or 64
 | ||||
| /*==== use exp() and sin() ====*/ | ||||
| //#    define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1 to 2.7
 | ||||
| //#    define RGBLIGHT_EFFECT_BREATHE_MAX    255   // 0 to 255
 | ||||
| //#endif
 | ||||
| 
 | ||||
| /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||||
| #define DEBOUNCE 5 | ||||
| 
 | ||||
| /* define if matrix has ghost (lacks anti-ghosting diodes) */ | ||||
| //#define MATRIX_HAS_GHOST
 | ||||
| 
 | ||||
| /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||
| #define LOCKING_SUPPORT_ENABLE | ||||
| /* Locking resynchronize hack */ | ||||
| #define LOCKING_RESYNC_ENABLE | ||||
| 
 | ||||
| /* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
 | ||||
|  * This is useful for the Windows task manager shortcut (ctrl+shift+esc). | ||||
|  */ | ||||
| //#define GRAVE_ESC_CTRL_OVERRIDE
 | ||||
| 
 | ||||
| /*
 | ||||
|  * Force NKRO | ||||
|  * | ||||
|  * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved | ||||
|  * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the | ||||
|  * makefile for this to work.) | ||||
|  * | ||||
|  * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) | ||||
|  * until the next keyboard reset. | ||||
|  * | ||||
|  * NKRO may prevent your keystrokes from being detected in the BIOS, but it is | ||||
|  * fully operational during normal computer usage. | ||||
|  * | ||||
|  * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) | ||||
|  * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by | ||||
|  * bootmagic, NKRO mode will always be enabled until it is toggled again during a | ||||
|  * power-up. | ||||
|  * | ||||
|  */ | ||||
| //#define FORCE_NKRO
 | ||||
| 
 | ||||
| /*
 | ||||
|  * Feature disable options | ||||
|  *  These options are also useful to firmware size reduction. | ||||
|  */ | ||||
| 
 | ||||
| /* disable debug print */ | ||||
| //#define NO_DEBUG
 | ||||
| 
 | ||||
| /* disable print */ | ||||
| //#define NO_PRINT
 | ||||
| 
 | ||||
| /* disable action features */ | ||||
| //#define NO_ACTION_LAYER
 | ||||
| //#define NO_ACTION_TAPPING
 | ||||
| //#define NO_ACTION_ONESHOT
 | ||||
| 
 | ||||
| /* disable these deprecated features by default */ | ||||
| #define NO_ACTION_MACRO | ||||
| #define NO_ACTION_FUNCTION | ||||
| 
 | ||||
| /* Bootmagic Lite key configuration */ | ||||
| //#define BOOTMAGIC_LITE_ROW 0
 | ||||
| //#define BOOTMAGIC_LITE_COLUMN 0
 | ||||
							
								
								
									
										21
									
								
								keyboards/handwired/snatchpad/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								keyboards/handwired/snatchpad/info.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| { | ||||
|     "keyboard_name": "snatchpad", | ||||
|     "url": "", | ||||
|     "maintainer": "xia0", | ||||
|     "layouts": { | ||||
|         "LAYOUT": { | ||||
|             "layout": [ | ||||
|                 {"x": 0, "y": 0}, | ||||
|                 {"x": 1, "y": 0}, | ||||
|                 {"x": 2, "y": 0}, | ||||
| 
 | ||||
|                 {"x": 0, "y": 1}, | ||||
|                 {"x": 1, "y": 1}, | ||||
|                 {"x": 2, "y": 1}, | ||||
| 
 | ||||
|                 {"x": 0, "y": 1}, | ||||
|                 {"x": 2, "y": 1} | ||||
|             ] | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										23
									
								
								keyboards/handwired/snatchpad/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								keyboards/handwired/snatchpad/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | ||||
| // Copyright 2022 xia0 (@xia0)
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #include QMK_KEYBOARD_H | ||||
| 
 | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   [0] = LAYOUT( | ||||
|     KC_ESC , KC_SPC , MO(2)  , | ||||
|     KC_MPRV, KC_MNXT, KC_ENT , | ||||
|     KC_MUTE,          KC_MPLY | ||||
|   ), | ||||
|   [1] = LAYOUT( | ||||
|     KC_LOCK, KC_UP  , _______, | ||||
|     KC_LEFT, KC_DOWN, KC_RGHT, | ||||
|     KC_BTN1,          KC_BTN2 | ||||
|   ), | ||||
|   [2] = LAYOUT( | ||||
|     _______, _______, _______, | ||||
|     _______, _______, _______, | ||||
|     TO(0)  ,          TO(1) | ||||
|   ) | ||||
| }; | ||||
| 
 | ||||
							
								
								
									
										1
									
								
								keyboards/handwired/snatchpad/keymaps/default/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/handwired/snatchpad/keymaps/default/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # The default keymap for snatchpad | ||||
							
								
								
									
										34
									
								
								keyboards/handwired/snatchpad/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								keyboards/handwired/snatchpad/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| # snatchpad | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| A 6-key macropad with 2 rotary encoders intended for use as a pointing device. | ||||
| 
 | ||||
| In addition to the 3d printed parts and microcontroller, the following hardware is required: | ||||
| * 4 * 3x3 mm threaded inserts | ||||
| * 4 * 4mm M3 bolt | ||||
| * USB daughter board | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| * Keyboard Maintainer: [xia0](https://github.com/xia0) | ||||
| * Hardware Supported: e.g. Arduino Pro Micro | ||||
| * Hardware Availability: [github](https://github.com/xia0/keeb_files/tree/main/snatchpad) | ||||
| 
 | ||||
| Make example for this keyboard (after setting up your build environment): | ||||
| 
 | ||||
|     make handwired/snatchpad:default | ||||
| 
 | ||||
| Flashing example for this keyboard: | ||||
| 
 | ||||
|     make handwired/snatchpad:default:flash | ||||
| 
 | ||||
| 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. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). | ||||
| 
 | ||||
| ## Bootloader | ||||
| 
 | ||||
| Enter the bootloader in 3 ways: | ||||
| 
 | ||||
| * **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard | ||||
| * **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead | ||||
| * **Keycode in layout**: Press the key mapped to `RESET` if it is available | ||||
							
								
								
									
										20
									
								
								keyboards/handwired/snatchpad/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								keyboards/handwired/snatchpad/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| # MCU name
 | ||||
| MCU = atmega32u4 | ||||
| 
 | ||||
| # Bootloader selection
 | ||||
| BOOTLOADER = atmel-dfu | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   change yes to no to disable
 | ||||
| #
 | ||||
| BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite | ||||
| MOUSEKEY_ENABLE = yes       # Mouse keys | ||||
| EXTRAKEY_ENABLE = yes       # Audio control and System control | ||||
| CONSOLE_ENABLE = no         # Console for debug | ||||
| COMMAND_ENABLE = no         # Commands for debug and configuration | ||||
| NKRO_ENABLE = yes            # Enable N-Key Rollover | ||||
| BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | ||||
| RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow | ||||
| AUDIO_ENABLE = no           # Audio output | ||||
| KEY_LOCK_ENABLE = yes | ||||
| ENCODER_ENABLE = yes | ||||
							
								
								
									
										66
									
								
								keyboards/handwired/snatchpad/snatchpad.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								keyboards/handwired/snatchpad/snatchpad.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| // Copyright 2022 xia0 (@xia0)
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #include "snatchpad.h" | ||||
| 
 | ||||
| #ifdef ENCODER_ENABLE | ||||
| bool encoder_update_kb(uint8_t index, bool clockwise) { | ||||
|     if (!encoder_update_user(index, clockwise)) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     uint8_t layer = get_highest_layer(layer_state); | ||||
| 
 | ||||
|     if (index == 0) { /* First encoder */ | ||||
|         switch (layer) { | ||||
|             case 0: | ||||
|                 if (clockwise) { | ||||
|                     tap_code_delay(KC_VOLU, 10); | ||||
|                 } else { | ||||
|                     tap_code_delay(KC_VOLD, 10); | ||||
|                 } | ||||
|                 break; | ||||
|             case 2: | ||||
|                 if (clockwise) { | ||||
|                     tap_code16(LCTL(KC_MINUS)); | ||||
|                 } else { | ||||
|                     tap_code16(LCTL(KC_EQUAL)); | ||||
|                 } | ||||
|                 break; | ||||
|             default: | ||||
|                 if (clockwise) { | ||||
|                     tap_code(KC_MS_L); | ||||
|                 } else { | ||||
|                     tap_code(KC_MS_R); | ||||
|                 } | ||||
|                 break; | ||||
|         } | ||||
| 
 | ||||
|     } else if (index == 1) { /* Second encoder */ | ||||
|         switch (layer) { | ||||
|             case 0: | ||||
|                 if (clockwise) { | ||||
|                     tap_code(KC_MFFD); | ||||
|                 } else { | ||||
|                     tap_code(KC_MRWD); | ||||
|                 } | ||||
|                 break; | ||||
|             case 2: | ||||
|                 if (clockwise) { | ||||
|                     tap_code16(LCTL(KC_Y)); | ||||
|                 } else { | ||||
|                     tap_code16(LCTL(KC_Z)); | ||||
|                 } | ||||
|                 break; | ||||
|             default: | ||||
|                 if (clockwise) { | ||||
|                     tap_code(KC_MS_D); | ||||
|                 } else { | ||||
|                     tap_code(KC_MS_U); | ||||
|                 } | ||||
|                 break; | ||||
|         } | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										24
									
								
								keyboards/handwired/snatchpad/snatchpad.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								keyboards/handwired/snatchpad/snatchpad.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| // Copyright 2022 xia0 (@xia0)
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "quantum.h" | ||||
| 
 | ||||
| /* This is a shortcut to help you visually see your layout.
 | ||||
|  * | ||||
|  * The first section contains all of the arguments representing the physical | ||||
|  * layout of the board and position of the keys. | ||||
|  * | ||||
|  * The second converts the arguments into a two-dimensional array which | ||||
|  * represents the switch matrix. | ||||
|  */ | ||||
| #define LAYOUT( \ | ||||
|     k00, k01, k02, \ | ||||
|     k10, k11, k12, \ | ||||
|     k20,      k22  \ | ||||
| ) { \ | ||||
|     { k00    , k01    , k02 }, \ | ||||
|     { k10    , k11    , k12 }, \ | ||||
|     { k20    , KC_NO  , k22 }  \ | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 QMK Bot
						QMK Bot