mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2025-01-07 17:40:19 +06:00
Update Keychron Q6 Q5
This commit is contained in:
parent
a7e21ed40e
commit
cb66430c1e
@ -21,7 +21,7 @@
|
||||
// clang-format off
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -162,7 +162,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0150",
|
||||
"device_version": "1.0.6"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"processor": "STM32L432",
|
||||
"bootloader": "stm32-dfu",
|
||||
"layouts": {
|
||||
|
@ -21,7 +21,7 @@
|
||||
// clang-format off
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -162,7 +162,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0151",
|
||||
"device_version": "1.0.6"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "C14", "pin_b": "A2"}
|
||||
|
@ -16,15 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Key matrix pins */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ B5, B4, B3, A15, A14, A13 }
|
||||
#define MATRIX_COL_PINS \
|
||||
{ A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
/* RGB Matrix Driver Configuration */
|
||||
#define DRIVER_COUNT 2
|
||||
#define DRIVER_ADDR_1 0b1110111
|
||||
@ -35,7 +26,7 @@
|
||||
#define I2C1_TIMINGR_SCLDEL 3U
|
||||
#define I2C1_TIMINGR_SDADEL 0U
|
||||
#define I2C1_TIMINGR_SCLH 15U
|
||||
#define I2C1_TIMINGR_SCLL 30U
|
||||
#define I2C1_TIMINGR_SCLL 51U
|
||||
|
||||
#define CKLED2001_CURRENT_TUNE \
|
||||
{ 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56 }
|
||||
|
@ -17,6 +17,5 @@
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define PAL_USE_CALLBACKS FALSE
|
||||
|
||||
#include_next <halconf.h>
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0152",
|
||||
"device_version": "1.0.5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"processor": "STM32L432",
|
||||
"bootloader": "stm32-dfu",
|
||||
"layouts": {
|
||||
|
@ -21,7 +21,7 @@
|
||||
// clang-format off
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -163,7 +163,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0153",
|
||||
"device_version": "1.0.5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "C14", "pin_b": "A2"}
|
||||
|
@ -21,7 +21,7 @@
|
||||
// clang-format off
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -161,7 +161,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1,18 +1,26 @@
|
||||
# Keychron Q5
|
||||
|
||||
![Keychron Q5](https://i.imgur.com/hgBjdtT.jpg[/img])
|
||||
|
||||
A customizable 96% keyboard.
|
||||
|
||||
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
|
||||
* Hardware Supported: Keychron Q5
|
||||
* Hardware Availability: [Keychron](https://www.keychron.com)
|
||||
* Hardware Availability: [Keychron Q5 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q5-qmk-custom-mechanical-keyboard)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keychron/q5/ansi:default
|
||||
make keychron/q5/ansi_encoder:default
|
||||
make keychron/q5/iso:default
|
||||
make keychron/q5/iso_encoder:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make keychron/q5/ansi:default:flash
|
||||
make keychron/q5/ansi_encoder:default:flash
|
||||
make keychron/q5/iso:default:flash
|
||||
make keychron/q5/iso_encoder:default:flash
|
||||
|
||||
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -168,7 +168,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -16,12 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Key matrix pins */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ B5, B4, B3, A15, A14, A13 }
|
||||
#define MATRIX_COL_PINS \
|
||||
{ A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
|
||||
|
||||
/* RGB Matrix Configuration */
|
||||
#define DRIVER_1_LED_TOTAL 60
|
||||
#define DRIVER_2_LED_TOTAL 48
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0160",
|
||||
"device_version": "1.0.5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"processor": "STM32L432",
|
||||
"bootloader": "stm32-dfu",
|
||||
"layouts": {
|
||||
|
@ -21,7 +21,7 @@
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -170,7 +170,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -16,12 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Key matrix pins */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ B5, B4, B3, A15, A14, A13 }
|
||||
#define MATRIX_COL_PINS \
|
||||
{ A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
|
||||
|
||||
/* RGB Matrix Configuration */
|
||||
#define DRIVER_1_LED_TOTAL 60
|
||||
#define DRIVER_2_LED_TOTAL 48
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0161",
|
||||
"device_version": "1.0.5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "C14", "pin_b": "A2"}
|
||||
|
@ -16,9 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
/* RGB Matrix Driver Configuration */
|
||||
#define DRIVER_COUNT 2
|
||||
#define DRIVER_ADDR_1 0b1110111
|
||||
@ -29,7 +26,7 @@
|
||||
#define I2C1_TIMINGR_SCLDEL 3U
|
||||
#define I2C1_TIMINGR_SDADEL 0U
|
||||
#define I2C1_TIMINGR_SCLH 15U
|
||||
#define I2C1_TIMINGR_SCLL 30U
|
||||
#define I2C1_TIMINGR_SCLL 51U
|
||||
|
||||
#define CKLED2001_CURRENT_TUNE \
|
||||
{ 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52 }
|
||||
|
@ -17,6 +17,5 @@
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define PAL_USE_CALLBACKS FALSE
|
||||
|
||||
#include_next <halconf.h>
|
||||
|
@ -16,12 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Key matrix pins */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ B5, B4, B3, A15, A14, A13 }
|
||||
#define MATRIX_COL_PINS \
|
||||
{ A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
|
||||
|
||||
/* RGB Matrix Configuration */
|
||||
#define DRIVER_1_LED_TOTAL 60
|
||||
#define DRIVER_2_LED_TOTAL 49
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0162",
|
||||
"device_version": "1.0.5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"processor": "STM32L432",
|
||||
"bootloader": "stm32-dfu",
|
||||
"layouts": {
|
||||
|
@ -21,7 +21,7 @@
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -171,7 +171,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -16,12 +16,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Key matrix pins */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ B5, B4, B3, A15, A14, A13 }
|
||||
#define MATRIX_COL_PINS \
|
||||
{ A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
|
||||
|
||||
/* RGB Matrix Configuration */
|
||||
#define DRIVER_1_LED_TOTAL 60
|
||||
#define DRIVER_2_LED_TOTAL 49
|
||||
|
@ -8,6 +8,11 @@
|
||||
"pid": "0x0163",
|
||||
"device_version": "1.0.5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
|
||||
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "C14", "pin_b": "A2"}
|
||||
|
@ -21,7 +21,7 @@
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
/* Refer to CKLED2001 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
@ -171,7 +171,7 @@ led_config_t g_led_config = {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
|
||||
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4,
|
||||
1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1,18 +1,26 @@
|
||||
# Keychron Q6
|
||||
|
||||
![Keychron Q6](https://i.imgur.com/7h9eBNj.jpg[/img])
|
||||
|
||||
A customizable 100% keyboard.
|
||||
|
||||
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
|
||||
* Hardware Supported: Keychron Q6
|
||||
* Hardware Availability: [Keychron](https://www.keychron.com)
|
||||
* Hardware Availability: [Keychron Q6 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q6-qmk-custom-mechanical-keyboard)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keychron/q6/ansi:default
|
||||
make keychron/q6/ansi_encoder:default
|
||||
make keychron/q6/iso:default
|
||||
make keychron/q6/iso_encoder:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make keychron/q6/ansi:flash
|
||||
make keychron/q6/ansi_encoder:flash
|
||||
make keychron/q6/iso:flash
|
||||
make keychron/q6/iso_encoder:flash
|
||||
|
||||
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
#define I2C1_TIMINGR_SCLDEL 3U
|
||||
#define I2C1_TIMINGR_SDADEL 0U
|
||||
#define I2C1_TIMINGR_SCLH 15U
|
||||
#define I2C1_TIMINGR_SCLL 30U
|
||||
#define I2C1_TIMINGR_SCLL 51U
|
||||
|
||||
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
|
||||
#define SCAN_PHASE_CHANNEL MSKPHASE_9CHANNEL
|
||||
|
@ -29,7 +29,7 @@
|
||||
#define I2C1_TIMINGR_SCLDEL 3U
|
||||
#define I2C1_TIMINGR_SDADEL 0U
|
||||
#define I2C1_TIMINGR_SCLH 15U
|
||||
#define I2C1_TIMINGR_SCLL 30U
|
||||
#define I2C1_TIMINGR_SCLL 51U
|
||||
|
||||
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
|
||||
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
|
||||
|
Loading…
Reference in New Issue
Block a user