[Keyboard] Keyboard Naked60 Update (#7106)
* [Keyboard] Keyboard Naked60 Update Support for SPLIT_KEYBOARD Keymap updates * Update keyboards/naked60/readme.md Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/config.h Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/rev1.h Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/rev1.h Co-Authored-By: Joel Challis <git@zvecr.com>
This commit is contained in:
committed by
Drashna Jaelre
co-authored by
Joel Challis
parent
d99f6e95e1
commit
737bca8e51
@@ -21,70 +21,7 @@
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
|
||||
#define USE_SERIAL_PD2
|
||||
|
||||
#define TAPPING_FORCE_HOLD
|
||||
#define TAPPING_TERM 180
|
||||
|
||||
#define RGBLED_NUM 21
|
||||
|
||||
#ifndef IOS_DEVICE_ENABLE
|
||||
#define RGBLIGHT_LIMIT_VAL 180
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
#else
|
||||
#define RGBLIGHT_LIMIT_VAL 50
|
||||
#define RGBLIGHT_VAL_STEP 4
|
||||
#endif
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
|
||||
// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
|
||||
// 120 RGBoff, OLEDoff
|
||||
// 120 OLED
|
||||
// 330 RGB 6
|
||||
// 300 RGB 32
|
||||
// 310 OLED & RGB 32
|
||||
#define USB_MAX_POWER_CONSUMPTION 400
|
||||
#else
|
||||
// fix iPhone and iPad power adapter issue
|
||||
// iOS device need lessthan 100
|
||||
#define USB_MAX_POWER_CONSUMPTION 100
|
||||
#endif
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_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
|
||||
#endif
|
||||
|
||||
#define MK_3_SPEED
|
||||
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 0
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
|
||||
#undef MOUSEKEY_MOVE_DELTA
|
||||
#define MOUSEKEY_MOVE_DELTA 5
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
|
||||
#undef MOUSEKEY_WHEEL_MAX_SPEED
|
||||
#define MOUSEKEY_WHEEL_MAX_SPEED 1
|
||||
|
||||
#undef MOUSEKEY_WHEEL_TIME_TO_MAX
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
|
||||
|
||||
@@ -3,11 +3,6 @@
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
@@ -23,15 +18,10 @@ enum layer_number {
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
FLOCK = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
KANJI,
|
||||
RGBRST,
|
||||
RGB_RST = SAFE_RANGE,
|
||||
SEND_SUM,
|
||||
SEND_AVERAGE,
|
||||
SEND_COUNTIF,
|
||||
SEND_AVE,
|
||||
SEND_CIF,
|
||||
SEND_MAX,
|
||||
SEND_MIN
|
||||
};
|
||||
@@ -41,22 +31,6 @@ enum tapdances{
|
||||
TD_ESQW,
|
||||
};
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define KC_CT11 LCTL_T(KC_F11)
|
||||
#define KC_SF12 SFT_T(KC_F12)
|
||||
#define KC_LOEN LT(_LOWER, KC_ENT)
|
||||
#define KC_RASP LT(_RAISE, KC_SPC)
|
||||
|
||||
#define KC_SSUM SEND_SUM
|
||||
#define KC_SAVE SEND_AVERAGE
|
||||
#define KC_SCOU SEND_COUNTIF
|
||||
#define KC_SMAX SEND_MAX
|
||||
#define KC_SMIN SEND_MIN
|
||||
|
||||
#define KC_RADO LT(_RAISE, KC_PDOT)
|
||||
#define KC_LOP0 LT(_LOWER, KC_P0)
|
||||
#define KC_ADNL LT(_ADJUST, KC_NLCK)
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
|
||||
[TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
|
||||
@@ -65,15 +39,15 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_with_setta21(
|
||||
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
|
||||
TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_LOP0, KC_P1, KC_P4, KC_P7,KC_ADNL, KC_ESC,
|
||||
TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,LT(_LOWER, KC_P0),KC_P1, KC_P4, KC_P7,KC_NLCK, KC_ESC,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_P2, KC_P5, KC_P8,KC_PSLS, KC_F2,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_RADO, KC_P3, KC_P6, KC_P9,KC_PAST, JP_EQL,
|
||||
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC,LT(_RAISE, KC_PDOT),KC_P3,KC_P6, KC_P9,KC_PAST, JP_EQL,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
|
||||
KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC, KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN, KC_UP
|
||||
KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, LT(_LOWER,KC_ENT),KC_BSPC, KC_DEL,LT(_RAISE,KC_SPC), KC_HENK, KC_LALT, KC_DOWN, KC_UP
|
||||
//`------------------------------------------------------------------------------------------------------------'
|
||||
),
|
||||
|
||||
@@ -93,75 +67,66 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_LOWER] = LAYOUT_with_setta21(
|
||||
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
|
||||
KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER,XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC,
|
||||
KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(_LOWER),XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, RAISE,XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL,
|
||||
JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
|
||||
JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
|
||||
_______, _______, _______, KC_ZKHK, LOWER, _______, _______, RAISE, KC_0, JP_DOT, _______, _______
|
||||
_______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE), JP_DOT,_______, _______, _______
|
||||
//`------------------------------------------------------------------------------------------------------------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_with_setta21(
|
||||
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
|
||||
KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER, KC_F11, KC_F4, KC_F7,KC_SMIN, KC_ESC,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL, KC_F12, KC_F5, KC_F8,KC_SMAX, KC_F2,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, RAISE, KC_F3, KC_F6, KC_F9,KC_SCOU, JP_EQL,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
|
||||
KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, JP_RPRN, KC_SSUM,KC_SAVE, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
|
||||
//,-----------------------------------------------------| |-----------------------------------------------------. |------------------------------------------------|
|
||||
KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_F11, KC_F4, KC_F7,SEND_MIN, KC_ESC,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+--------+-------|
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL, KC_F12, KC_F5, KC_F8,SEND_MAX, KC_F2,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+--------+-------|
|
||||
LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, _______, KC_F3, KC_F6, KC_F9,SEND_CIF, JP_EQL,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+--------+-------|
|
||||
SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, JP_RPRN, SEND_SUM,SEND_AVE, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |------------------------------------------------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
//`------------------------------------------------------------------------------------------------------------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_with_setta21( /* Base */
|
||||
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
|
||||
KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG,
|
||||
KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,RGB_VAD,RGB_HUD,RGB_SAD,XXXXXXX,_______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
_______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
|
||||
KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, RAISE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
|
||||
KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), RGB_MOD, _______,_______,_______,
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), RGB_MOD, RGB_TOG,_______,_______,
|
||||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
|
||||
//`------------------------------------------------------------------------------------------------------------'
|
||||
)
|
||||
};
|
||||
|
||||
static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
|
||||
pressed ? layer_on(layer1) : layer_off(layer1);
|
||||
IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
|
||||
int RGB_current_mode;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
bool result = false;
|
||||
switch (keycode) {
|
||||
case LOWER:
|
||||
update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
|
||||
break;
|
||||
case RAISE:
|
||||
update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
|
||||
break;
|
||||
case SEND_SUM:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("_SUM*");
|
||||
}
|
||||
break;
|
||||
case SEND_AVERAGE:
|
||||
case SEND_AVE:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("_AVERAGE*");
|
||||
}
|
||||
break;
|
||||
case SEND_COUNTIF:
|
||||
case SEND_CIF:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("_COUNTIF*");
|
||||
}
|
||||
@@ -184,7 +149,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
case RGBRST:
|
||||
case RGB_RST:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
@@ -201,7 +166,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ Add Setta21 maps to the salicylic layout.
|
||||
| 1 | 2 | 3 | 4 |
|
||||
|:----:|:----:|:----:|:----:|
|
||||
| ESC| F2| =| DEL|
|
||||
|Ad+Num| /| *| -|
|
||||
| Num| /| *| -|
|
||||
| 7| 8| 9| |
|
||||
| 4| 5| 6| +|
|
||||
| 1| 2| 3| |
|
||||
@@ -36,7 +36,7 @@ Add Setta21 maps to the salicylic layout.
|
||||
| 1 | 2 | 3 | 4 |
|
||||
|:----:|:----:|:----:|:----:|
|
||||
| ESC| F2| =| DEL|
|
||||
|ADJUST| XXXXX| XXXXX| -|
|
||||
| XXXXX| XXXXX| XXXXX| -|
|
||||
|LED_SAD|LED_SAI| XXXXX| |
|
||||
|LED_HUD|LED_HUI| XXXXX| +|
|
||||
|LED_VAD|LED_VAI| XXXXX| |
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
# If your custom naked60 pcb, you can rewrite to yes.
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
# OPT_DEFS += -DRGBLIGHT_ANIMATIONS
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user