mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22:31 +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