[Keyboard] Add "Uno" (#10579)
* Add all files * Update keyboards/uno/config.h Co-authored-by: Joel Challis <git@zvecr.com> * Update keyboards/uno/config.h Co-authored-by: Joel Challis <git@zvecr.com> * Update keyboards/uno/rules.mk Co-authored-by: Joel Challis <git@zvecr.com> * Update keyboards/uno/keymaps/default/keymap.c Co-authored-by: Joel Challis <git@zvecr.com> * Update keyboards/uno/keymaps/default/keymap.c Co-authored-by: Joel Challis <git@zvecr.com> * Update keyboards/uno/info.json Co-authored-by: Ryan <fauxpark@gmail.com> * Update keyboards/uno/readme.md Co-authored-by: Ryan <fauxpark@gmail.com> * Update readme.md Co-authored-by: Joshua Broekhuijsen <j.broekhuijsen@gmail.com> Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
		
							parent
							
								
									e4236278b5
								
							
						
					
					
						commit
						cfc9a358c5
					
				
					 8 changed files with 270 additions and 0 deletions
				
			
		
							
								
								
									
										69
									
								
								keyboards/uno/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								keyboards/uno/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
/* Copyright 2020 Snipeye
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "config_common.h"
 | 
			
		||||
 | 
			
		||||
/* USB Device descriptor parameter */
 | 
			
		||||
#define VENDOR_ID       0xFEED
 | 
			
		||||
#define PRODUCT_ID      0xACC8
 | 
			
		||||
#define DEVICE_VER      0x0001
 | 
			
		||||
#define MANUFACTURER    Broekhuijsen
 | 
			
		||||
#define PRODUCT         Uno
 | 
			
		||||
 | 
			
		||||
/* key matrix size */
 | 
			
		||||
#define MATRIX_ROWS 1
 | 
			
		||||
#define MATRIX_COLS 1
 | 
			
		||||
 | 
			
		||||
/* Uno default pinout */
 | 
			
		||||
#define DIRECT_PINS { \
 | 
			
		||||
    { B6 } \
 | 
			
		||||
}
 | 
			
		||||
#define UNUSED_PINS
 | 
			
		||||
 | 
			
		||||
#define RGB_DI_PIN F6
 | 
			
		||||
#ifdef RGB_DI_PIN
 | 
			
		||||
#define RGBLED_NUM 1
 | 
			
		||||
//   #define RGBLIGHT_HUE_STEP 32
 | 
			
		||||
//   #define RGBLIGHT_SAT_STEP 32
 | 
			
		||||
//   #define RGBLIGHT_VAL_STEP 32
 | 
			
		||||
//   #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
 | 
			
		||||
 | 
			
		||||
/* disable these deprecated features by default */
 | 
			
		||||
#define NO_ACTION_MACRO
 | 
			
		||||
#define NO_ACTION_FUNCTION
 | 
			
		||||
							
								
								
									
										13
									
								
								keyboards/uno/info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								keyboards/uno/info.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard_name": "Uno",
 | 
			
		||||
    "keyboard_folder": "uno",
 | 
			
		||||
    "url": "https://www.reddit.com/r/mechmarket/comments/gyijm7/gb_uno/",
 | 
			
		||||
    "maintainer": "Snipeye",
 | 
			
		||||
    "width": 1,
 | 
			
		||||
    "height": 1,
 | 
			
		||||
    "layouts": {
 | 
			
		||||
      "LAYOUT": {
 | 
			
		||||
        "layout": [ {"x": 0, "y": 0 }]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
							
								
								
									
										102
									
								
								keyboards/uno/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								keyboards/uno/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,102 @@
 | 
			
		|||
/* Copyright 2020 Snipeye
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
enum uno_keycode
 | 
			
		||||
{
 | 
			
		||||
  UNO = SAFE_RANGE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static uint16_t pressTimer = 0xFFFF;
 | 
			
		||||
#define CUSTOM_LONGPRESS 150
 | 
			
		||||
#define CUSTOM_LONGERPRESS 750
 | 
			
		||||
#define CUSTOM_STRING "I can put a whole buncha text in here and type it all with a single keypress."
 | 
			
		||||
#define RESET_LENGTH 3000
 | 
			
		||||
const uint8_t PROGMEM RGBLED_RAINBOW_MOOD_INTERVALS[] = { 10, 25, 50 };
 | 
			
		||||
 | 
			
		||||
char stringToSend[2] = "a";
 | 
			
		||||
char maxLetter = 'z';
 | 
			
		||||
 | 
			
		||||
uint8_t presetCounter = 0;
 | 
			
		||||
 | 
			
		||||
#define COUNTER X_A
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
      [0] = LAYOUT(
 | 
			
		||||
            UNO
 | 
			
		||||
          )
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
	switch (keycode) {
 | 
			
		||||
		case UNO:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                pressTimer = timer_read();
 | 
			
		||||
            } else {
 | 
			
		||||
                uint16_t timeElapsed = timer_elapsed(pressTimer);
 | 
			
		||||
                switch (presetCounter) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        SEND_STRING(SS_LCMD("n"));
 | 
			
		||||
                    break;
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        SEND_STRING("Hello!");
 | 
			
		||||
                    break;
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        SEND_STRING(SS_TAP(X_ENTER)SS_TAP(X_ENTER)"I am uno!");
 | 
			
		||||
                    break;
 | 
			
		||||
                    case 3:
 | 
			
		||||
                        SEND_STRING(SS_TAP(X_ENTER)SS_TAP(X_ENTER)"I can do all sorts of useless things!");
 | 
			
		||||
                    break;
 | 
			
		||||
                    case 4:
 | 
			
		||||
                        SEND_STRING(SS_TAP(X_ENTER)SS_TAP(X_ENTER)"And I have a built-in RGB LED!"SS_TAP(X_ENTER)SS_TAP(X_ENTER)SS_TAP(X_ENTER));
 | 
			
		||||
                        rgblight_sethsv_noeeprom(255, 255, 255);
 | 
			
		||||
                        rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD);
 | 
			
		||||
                    break;
 | 
			
		||||
                    default:
 | 
			
		||||
                        if (timeElapsed < CUSTOM_LONGPRESS) {
 | 
			
		||||
                            // Normal press.  We're going to send the current letter and increment the counter.
 | 
			
		||||
                            SEND_STRING(SS_TAP(X_BSPACE));
 | 
			
		||||
                            send_string(stringToSend);
 | 
			
		||||
                            stringToSend[0]++;
 | 
			
		||||
                            if (stringToSend[0] > maxLetter) {
 | 
			
		||||
                                stringToSend[0] = 'a';
 | 
			
		||||
                            }
 | 
			
		||||
                        } else if (timeElapsed < CUSTOM_LONGERPRESS) {
 | 
			
		||||
                            // Long press, confirm the current letter, reset counter
 | 
			
		||||
                            stringToSend[0] = 'a';
 | 
			
		||||
                            send_string(stringToSend);
 | 
			
		||||
                        } else if (timeElapsed < RESET_LENGTH) {
 | 
			
		||||
                            // Longer press, display macro.
 | 
			
		||||
                            SEND_STRING(CUSTOM_STRING);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            reset_keyboard();
 | 
			
		||||
                        }
 | 
			
		||||
                        presetCounter--;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
                presetCounter++;
 | 
			
		||||
            }
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    rgblight_enable_noeeprom();
 | 
			
		||||
    rgblight_sethsv_noeeprom(0, 0, 0);
 | 
			
		||||
    rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								keyboards/uno/keymaps/default/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								keyboards/uno/keymaps/default/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
# The default keymap for uno
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
The 'Macro' key does a few things: If you open up textedit (was made for a mac), it sends "Command+n" for the first press to make a new document.  It then types a few different messages, activates the RGB LED, and finally ends in a "scroll through the alphabet with a long press to confirm a certain character" keyboard mode.
 | 
			
		||||
							
								
								
									
										19
									
								
								keyboards/uno/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								keyboards/uno/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
# uno
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
A 1-key, in-USB "board" for the lulz
 | 
			
		||||
 | 
			
		||||
 * Keyboard Maintainer: [Snipeye](https://github.com/Snipeye)
 | 
			
		||||
 * Hardware Supported: uno pcb
 | 
			
		||||
 * Hardware Availability: [GB](https://www.reddit.com/r/mechmarket/comments/gyijm7/gb_uno/)
 | 
			
		||||
 | 
			
		||||
 Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
     make uno:default
 | 
			
		||||
 | 
			
		||||
 Flashing example for this keyboard:
 | 
			
		||||
 | 
			
		||||
     make uno: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).
 | 
			
		||||
							
								
								
									
										22
									
								
								keyboards/uno/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								keyboards/uno/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
# MCU name
 | 
			
		||||
MCU = atmega32u4
 | 
			
		||||
 | 
			
		||||
# Bootloader selection
 | 
			
		||||
BOOTLOADER = caterina
 | 
			
		||||
 | 
			
		||||
# Build Options
 | 
			
		||||
#   change yes to no to disable
 | 
			
		||||
#
 | 
			
		||||
BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
 | 
			
		||||
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
 | 
			
		||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | 
			
		||||
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 | 
			
		||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
NKRO_ENABLE = no            # USB Nkey Rollover
 | 
			
		||||
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 | 
			
		||||
RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
 | 
			
		||||
BLUETOOTH_ENABLE = no       # Enable Bluetooth
 | 
			
		||||
AUDIO_ENABLE = no           # Audio output
 | 
			
		||||
							
								
								
									
										17
									
								
								keyboards/uno/uno.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								keyboards/uno/uno.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/* Copyright 2020 Snipeye
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "uno.h"
 | 
			
		||||
							
								
								
									
										24
									
								
								keyboards/uno/uno.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								keyboards/uno/uno.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/* Copyright 2020 Snipeye
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
#define LAYOUT( \
 | 
			
		||||
  K00  \
 | 
			
		||||
) { \
 | 
			
		||||
  { K00 } \
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue