[Keyboard] Add Aya keyboard (#14378)
Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
		
							
								
								
									
										17
									
								
								keyboards/aya/aya.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								keyboards/aya/aya.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
/* Copyright 2021 Dan Nixon
 | 
			
		||||
 *
 | 
			
		||||
 * 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 "aya.h"
 | 
			
		||||
							
								
								
									
										39
									
								
								keyboards/aya/aya.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								keyboards/aya/aya.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
/* Copyright 2021 Dan Nixon
 | 
			
		||||
 *
 | 
			
		||||
 * 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( \
 | 
			
		||||
    L06, L05, L04, L03, L02, L01, L00,                        R00, R01, R02, R03, R04, R05, R06, \
 | 
			
		||||
    L16, L15, L14, L13, L12, L11, L10,                        R10, R11, R12, R13, R14, R15, R16, \
 | 
			
		||||
    L26, L25, L24, L23, L22, L21, L20, L40,              R40, R20, R21, R22, R23, R24, R25, R26, \
 | 
			
		||||
    L36, L35, L34, L33, L32, L31, L30, L43, L44,    R44, R43, R30, R31, R32, R33, R34, R35, R36, \
 | 
			
		||||
                             L42, L41, L45, L46,    R46, R45, R41, R42                           \
 | 
			
		||||
    ) \
 | 
			
		||||
{ \
 | 
			
		||||
    { L00, L01, L02, L03, L04, L05, L06 }, \
 | 
			
		||||
    { L10, L11, L12, L13, L14, L15, L16 }, \
 | 
			
		||||
    { L20, L21, L22, L23, L24, L25, L26 }, \
 | 
			
		||||
    { L30, L31, L32, L33, L34, L35, L36 }, \
 | 
			
		||||
    { L40, L41, L42, L43, L44, L45, L46 }, \
 | 
			
		||||
    { R00, R01, R02, R03, R04, R05, R06 }, \
 | 
			
		||||
    { R10, R11, R12, R13, R14, R15, R16 }, \
 | 
			
		||||
    { R20, R21, R22, R23, R24, R25, R26 }, \
 | 
			
		||||
    { R30, R31, R32, R33, R34, R35, R36 }, \
 | 
			
		||||
    { R40, R41, R42, R43, R44, R45, R46 }  \
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								keyboards/aya/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								keyboards/aya/config.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
/* Copyright 2021 Dan Nixon
 | 
			
		||||
 *
 | 
			
		||||
 * 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"
 | 
			
		||||
 | 
			
		||||
#define VENDOR_ID       0xBEEF
 | 
			
		||||
#define PRODUCT_ID      0x0003
 | 
			
		||||
#define DEVICE_VER      0x0001
 | 
			
		||||
#define MANUFACTURER    DanNixon
 | 
			
		||||
#define PRODUCT         Aya
 | 
			
		||||
 | 
			
		||||
#define MATRIX_ROWS 10
 | 
			
		||||
#define MATRIX_COLS 7
 | 
			
		||||
 | 
			
		||||
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
 | 
			
		||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
 | 
			
		||||
#define DIODE_DIRECTION ROW2COL
 | 
			
		||||
 | 
			
		||||
#define DEBOUNCE 5
 | 
			
		||||
 | 
			
		||||
#define SPLIT_HAND_PIN B5
 | 
			
		||||
#define USE_I2C
 | 
			
		||||
							
								
								
									
										10
									
								
								keyboards/aya/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								keyboards/aya/info.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
{
 | 
			
		||||
    "keyboard_name": "Aya",
 | 
			
		||||
    "url": "https://github.com/DanNixon/aya",
 | 
			
		||||
    "maintainer": "dannixon",
 | 
			
		||||
    "layouts": {
 | 
			
		||||
        "LAYOUT": {
 | 
			
		||||
            "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":18, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":17, "y":1}, {"x":18, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2}, {"x":18, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}, {"x":17, "y":3}, {"x":18, "y":3}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								keyboards/aya/keymaps/default/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								keyboards/aya/keymaps/default/config.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/* Copyright 2021 Dan Nixon
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
#define IGNORE_MOD_TAP_INTERRUPT
 | 
			
		||||
							
								
								
									
										87
									
								
								keyboards/aya/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								keyboards/aya/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
			
		||||
/* Copyright 2021 Dan Nixon
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
#define _LG_ESC LGUI_T(KC_ESC)
 | 
			
		||||
#define _RC_SPC RCTL_T(KC_SPC)
 | 
			
		||||
#define _RS_BSP RSFT_T(KC_BSPC)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    /*
 | 
			
		||||
     * ,-----------------------------------------.                           .-----------------------------------------.
 | 
			
		||||
     * |     |  `  |  1  |  2  |  3  |  4  |  5  |                           |  6  |  7  |  8  |  9  |  0  |  -  |  =  |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----|                           |-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     | RMB |  Q  |  W  |  E  |  R  |  T  |                           |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----+-----.               .-----+-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     | LMB |  A  |  S  |  D  |  F  |  G  |     |               |     |  H  |  J  |  K  |  L  |  ;  |  '  |  #  |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----+-----+-----.   .-----+-----+-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |  \  |  Z  |  X  |  C  |  V  |  B  | Alt |M Lyr|   |     | Del |  N  |  M  |  ,  |  .  |  /  |     |     |
 | 
			
		||||
     * '-----------------------------+-----+-----+-----+-----|   +-----+-----+-----+-----+-----------------------------'
 | 
			
		||||
     *                               |Shift| Esc | Tab |F Lyr|   |     |Enter|Space|Bspce|   (tap)
 | 
			
		||||
     *                               |Shift| GUI | Tab |F Lyr|   |     |Enter| Ctrl|Shift|   (hold)
 | 
			
		||||
     *                               '-----------------------'   '-----------------------'
 | 
			
		||||
     */
 | 
			
		||||
    [0] = LAYOUT(
 | 
			
		||||
        _______, KC_GRV , KC_1   , KC_2   , KC_3   , KC_4   , KC_5,                                           KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL,
 | 
			
		||||
        _______, KC_BTN2, KC_Q   , KC_W   , KC_E   , KC_R   , KC_T,                                           KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC,
 | 
			
		||||
        _______, KC_BTN1, KC_A   , KC_S   , KC_D   , KC_F   , KC_G,    _______,                      _______, KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_NUHS,
 | 
			
		||||
        _______, KC_NUBS, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B,    KC_LALT, MO(2)  ,    _______, KC_DEL , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, _______, _______,
 | 
			
		||||
                                                     KC_LSFT, _LG_ESC, KC_TAB , MO(1)  ,    _______, KC_ENT,  _RC_SPC, _RS_BSP
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * ,-----------------------------------------.                           .-----------------------------------------.
 | 
			
		||||
     * |     |     | F1  | F2  | F3  | F4  | F5  |                           | F6  | F7  | F8  | F9  | F10 | F11 | F12 |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----|                           |-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |     |     |     |     |     |     |                           | Home|Pg Dn|Pg Up| End |     |     |     |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----+-----.               .-----+-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |     |     |     |     |     |     |     |               |     | Left| Down| Up  |Right|     |     |     |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----+-----+-----.   .-----+-----+-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |     |     |     |     |     |     |     |     |   |     |     |     |     |     |     |     |     |     |
 | 
			
		||||
     * '-----------------------------+-----+-----+-----+-----|   +-----+-----+-----+-----+-----------------------------'
 | 
			
		||||
     *                               |     |     |     |     |   |     |     |     |     |
 | 
			
		||||
     *                               '-----------------------'   '-----------------------'
 | 
			
		||||
     */
 | 
			
		||||
    [1] = LAYOUT(
 | 
			
		||||
        _______, _______, 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_HOME, KC_PGDN, KC_PGUP, KC_END , _______, _______, _______,
 | 
			
		||||
        _______, _______, _______, _______, _______, _______, _______, _______,                      _______, KC_LEFT, KC_DOWN, KC_UP  , KC_RGHT, _______, _______, _______,
 | 
			
		||||
        _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
                                                     _______, _______, _______, _______,    _______, _______, _______, _______
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * ,-----------------------------------------.                           .-----------------------------------------.
 | 
			
		||||
     * |     |     |     |     |     |     |     |                           |     |     |     |     |     |     |     |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----|                           |-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |     |     |     |     |     |     |                           |W Lft|W Dwn|W Up |W Rgt|     |     |     |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----+-----.               .-----+-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |     |     |     |     |     |     |     |               |     |M Lft|M Dwn|M Up |M Rgt|     |     |     |
 | 
			
		||||
     * |-----+-----+-----+-----+-----+-----+-----+-----+-----.   .-----+-----+-----+-----+-----+-----+-----+-----+-----|
 | 
			
		||||
     * |     |     |     |     |     |     |     |     |     |   |     |     |     |     |     |     |     |     |     |
 | 
			
		||||
     * '-----------------------------+-----+-----+-----+-----|   +-----+-----+-----+-----+-----------------------------'
 | 
			
		||||
     *                               |     |     |     |     |   |     |     | LMB | RMB |
 | 
			
		||||
     *                               '-----------------------'   '-----------------------'
 | 
			
		||||
     */
 | 
			
		||||
    [2] = LAYOUT(
 | 
			
		||||
        _______, _______, _______, _______, _______, _______, _______,                                        _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
        _______, _______, _______, _______, _______, _______, _______,                                        KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, _______, _______, _______,
 | 
			
		||||
        _______, _______, _______, _______, _______, _______, _______, _______,                      _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______,
 | 
			
		||||
        _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
                                                     _______, _______, _______, _______,    _______, _______, KC_BTN1, KC_BTN2
 | 
			
		||||
    ),
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										20
									
								
								keyboards/aya/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								keyboards/aya/readme.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
# Aya
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
A column staggered, symmetrical split keyboard.
 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [Dan Nixon](https://github.com/dannixon)
 | 
			
		||||
* Hardware Supported: Aya PCB, Pro Micro
 | 
			
		||||
* Hardware Availability: CAD files [here](https://github.com/DanNixon/aya)
 | 
			
		||||
 | 
			
		||||
Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make aya:default
 | 
			
		||||
 | 
			
		||||
Enter the bootloader in 2 ways:
 | 
			
		||||
 | 
			
		||||
* **Command**: Hold down both shift keys and press B
 | 
			
		||||
* **Physical reset button**: Briefly short the pads on the read of the PCB (directly behind the Pro Micro)
 | 
			
		||||
 | 
			
		||||
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/aya/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								keyboards/aya/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 = no       # Enable Bootmagic Lite
 | 
			
		||||
MOUSEKEY_ENABLE = yes       # Mouse keys
 | 
			
		||||
EXTRAKEY_ENABLE = yes       # Audio control and System control
 | 
			
		||||
CONSOLE_ENABLE = no         # Console for debug
 | 
			
		||||
COMMAND_ENABLE = yes        # 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 = no        # Enable keyboard RGB underglow
 | 
			
		||||
AUDIO_ENABLE = no           # Audio output
 | 
			
		||||
SPLIT_KEYBOARD = yes
 | 
			
		||||
		Reference in New Issue
	
	Block a user