mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-30 06:55:51 +00:00
Merge remote-tracking branch 'origin/develop' into xap
This commit is contained in:
commit
4a64f4ffbc
@ -150,15 +150,13 @@ const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) |
|
|||||||
.enabled = NULL};
|
.enabled = NULL};
|
||||||
```
|
```
|
||||||
|
|
||||||
## Keycodes
|
## Keycodes
|
||||||
|
|
||||||
You can enable, disable and toggle all key overrides on the fly.
|
|Keycode |Aliases |Description |
|
||||||
|
|------------------------|---------|----------------------|
|
||||||
|Keycode |Description |Function Equivalent|
|
|`QK_KEY_OVERRIDE_TOGGLE`|`KO_TOGG`|Toggle key overrides |
|
||||||
|----------|---------------------------------|--------|
|
|`QK_KEY_OVERRIDE_ON` |`KO_ON` |Turn on key overrides |
|
||||||
|`KEY_OVERRIDE_ON` |Turns on Key Override feature | `key_override_on(void)`|
|
|`QK_KEY_OVERRIDE_OFF` |`KO_OFF` |Turn off key overrides|
|
||||||
|`KEY_OVERRIDE_OFF` |Turns off Key Override feature |`key_override_off(void)`|
|
|
||||||
|`KEY_OVERRIDE_TOGGLE` |Toggles Key Override feature on and off |`key_override_toggle(void)`|
|
|
||||||
|
|
||||||
## Reference for `key_override_t`
|
## Reference for `key_override_t`
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"manufacturer": "huytbt",
|
||||||
"keyboard_name": "H50",
|
"keyboard_name": "H50",
|
||||||
"url": "https://github.com/huytbt/h50-keyboard",
|
"url": "https://github.com/huytbt/h50-keyboard",
|
||||||
"maintainer": "huytbt",
|
"maintainer": "huytbt",
|
||||||
|
@ -3,65 +3,14 @@
|
|||||||
"url": "https://splitkb.com/products/aurora-sweep-pcb-kit",
|
"url": "https://splitkb.com/products/aurora-sweep-pcb-kit",
|
||||||
"maintainer": "splitkb",
|
"maintainer": "splitkb",
|
||||||
"usb": {
|
"usb": {
|
||||||
// pid is not defined here as that is
|
|
||||||
// revision-specific due to VIA limitations
|
|
||||||
"vid": "0x8D1D",
|
"vid": "0x8D1D",
|
||||||
"device_version": "1.0.0"
|
"device_version": "1.0.0"
|
||||||
},
|
},
|
||||||
// Technically it only uses Pro Micro pins,
|
|
||||||
// but most people buy the Elite-C controller
|
|
||||||
// so we want to use the atmel-dfu bootloader.
|
|
||||||
"development_board": "elite_c",
|
"development_board": "elite_c",
|
||||||
"split": {
|
"split": {
|
||||||
"enabled": true
|
"enabled": true
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"lto": true
|
"lto": true
|
||||||
},
|
|
||||||
"layout_aliases": {
|
|
||||||
"LAYOUT": "LAYOUT_split_3x5_2"
|
|
||||||
},
|
|
||||||
"layouts": {
|
|
||||||
"LAYOUT_split_3x5_2": {
|
|
||||||
"layout": [
|
|
||||||
{"label": "L01", "x": 0, "y": 0.93},
|
|
||||||
{"label": "L02", "x": 1, "y": 0.31},
|
|
||||||
{"label": "L03", "x": 2, "y": 0},
|
|
||||||
{"label": "L04", "x": 3, "y": 0.28},
|
|
||||||
{"label": "L05", "x": 4, "y": 0.42},
|
|
||||||
{"label": "R05", "x": 7, "y": 0.42},
|
|
||||||
{"label": "R04", "x": 8, "y": 0.28},
|
|
||||||
{"label": "R03", "x": 9, "y": 0},
|
|
||||||
{"label": "R02", "x": 10, "y": 0.31},
|
|
||||||
{"label": "R01", "x": 11, "y": 0.93},
|
|
||||||
|
|
||||||
{"label": "L06", "x": 0, "y": 1.93},
|
|
||||||
{"label": "L07", "x": 1, "y": 1.31},
|
|
||||||
{"label": "L08", "x": 2, "y": 1},
|
|
||||||
{"label": "L09", "x": 3, "y": 1.28},
|
|
||||||
{"label": "L10", "x": 4, "y": 1.42},
|
|
||||||
{"label": "R10", "x": 7, "y": 1.42},
|
|
||||||
{"label": "R09", "x": 8, "y": 1.28},
|
|
||||||
{"label": "R08", "x": 9, "y": 1},
|
|
||||||
{"label": "R07", "x": 10, "y": 1.31},
|
|
||||||
{"label": "R06", "x": 11, "y": 1.93},
|
|
||||||
|
|
||||||
{"label": "L11", "x": 0, "y": 2.93},
|
|
||||||
{"label": "L12", "x": 1, "y": 2.31},
|
|
||||||
{"label": "L13", "x": 2, "y": 2},
|
|
||||||
{"label": "L14", "x": 3, "y": 2.28},
|
|
||||||
{"label": "L15", "x": 4, "y": 2.42},
|
|
||||||
{"label": "R15", "x": 7, "y": 2.42},
|
|
||||||
{"label": "R14", "x": 8, "y": 2.28},
|
|
||||||
{"label": "R13", "x": 9, "y": 2},
|
|
||||||
{"label": "R12", "x": 10, "y": 2.31},
|
|
||||||
{"label": "R11", "x": 11, "y": 2.93},
|
|
||||||
|
|
||||||
{"label": "L16", "x": 3.5, "y": 3.75},
|
|
||||||
{"label": "L17", "x": 4.5, "y": 4},
|
|
||||||
{"label": "R17", "x": 6.5, "y": 4},
|
|
||||||
{"label": "R16", "x": 7.5, "y": 3.75}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,48 +8,49 @@
|
|||||||
"bootmagic": true,
|
"bootmagic": true,
|
||||||
"extrakey": true
|
"extrakey": true
|
||||||
},
|
},
|
||||||
|
"layout_aliases": {
|
||||||
|
"LAYOUT": "LAYOUT_split_3x5_2"
|
||||||
|
},
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_split_3x5_2": {
|
"LAYOUT_split_3x5_2": {
|
||||||
"layout": [
|
"layout": [
|
||||||
// Note: `label` is here only for readability,
|
{"label": "L01", "matrix": [0, 4], "x": 0, "y": 0.93},
|
||||||
// order must match the parent's definition!
|
{"label": "L02", "matrix": [0, 3], "x": 1, "y": 0.31},
|
||||||
{"label": "L01", "matrix": [0, 4]},
|
{"label": "L03", "matrix": [0, 2], "x": 2, "y": 0},
|
||||||
{"label": "L02", "matrix": [0, 3]},
|
{"label": "L04", "matrix": [0, 1], "x": 3, "y": 0.28},
|
||||||
{"label": "L03", "matrix": [0, 2]},
|
{"label": "L05", "matrix": [0, 0], "x": 4, "y": 0.42},
|
||||||
{"label": "L04", "matrix": [0, 1]},
|
{"label": "R05", "matrix": [4, 0], "x": 7, "y": 0.42},
|
||||||
{"label": "L05", "matrix": [0, 0]},
|
{"label": "R04", "matrix": [4, 1], "x": 8, "y": 0.28},
|
||||||
{"label": "R05", "matrix": [4, 0]},
|
{"label": "R03", "matrix": [4, 2], "x": 9, "y": 0},
|
||||||
{"label": "R04", "matrix": [4, 1]},
|
{"label": "R02", "matrix": [4, 3], "x": 10, "y": 0.31},
|
||||||
{"label": "R03", "matrix": [4, 2]},
|
{"label": "R01", "matrix": [4, 4], "x": 11, "y": 0.93},
|
||||||
{"label": "R02", "matrix": [4, 3]},
|
|
||||||
{"label": "R01", "matrix": [4, 4]},
|
|
||||||
|
|
||||||
{"label": "L06", "matrix": [1, 4]},
|
{"label": "L06", "matrix": [1, 4], "x": 0, "y": 1.93},
|
||||||
{"label": "L07", "matrix": [1, 3]},
|
{"label": "L07", "matrix": [1, 3], "x": 1, "y": 1.31},
|
||||||
{"label": "L08", "matrix": [1, 2]},
|
{"label": "L08", "matrix": [1, 2], "x": 2, "y": 1},
|
||||||
{"label": "L09", "matrix": [1, 1]},
|
{"label": "L09", "matrix": [1, 1], "x": 3, "y": 1.28},
|
||||||
{"label": "L10", "matrix": [1, 0]},
|
{"label": "L10", "matrix": [1, 0], "x": 4, "y": 1.42},
|
||||||
{"label": "R10", "matrix": [5, 0]},
|
{"label": "R10", "matrix": [5, 0], "x": 7, "y": 1.42},
|
||||||
{"label": "R09", "matrix": [5, 1]},
|
{"label": "R09", "matrix": [5, 1], "x": 8, "y": 1.28},
|
||||||
{"label": "R08", "matrix": [5, 2]},
|
{"label": "R08", "matrix": [5, 2], "x": 9, "y": 1},
|
||||||
{"label": "R07", "matrix": [5, 3]},
|
{"label": "R07", "matrix": [5, 3], "x": 10, "y": 1.31},
|
||||||
{"label": "R06", "matrix": [5, 4]},
|
{"label": "R06", "matrix": [5, 4], "x": 11, "y": 1.93},
|
||||||
|
|
||||||
{"label": "L11", "matrix": [2, 4]},
|
{"label": "L11", "matrix": [2, 4], "x": 0, "y": 2.93},
|
||||||
{"label": "L12", "matrix": [2, 3]},
|
{"label": "L12", "matrix": [2, 3], "x": 1, "y": 2.31},
|
||||||
{"label": "L13", "matrix": [2, 2]},
|
{"label": "L13", "matrix": [2, 2], "x": 2, "y": 2},
|
||||||
{"label": "L14", "matrix": [2, 1]},
|
{"label": "L14", "matrix": [2, 1], "x": 3, "y": 2.28},
|
||||||
{"label": "L15", "matrix": [2, 0]},
|
{"label": "L15", "matrix": [2, 0], "x": 4, "y": 2.42},
|
||||||
{"label": "R15", "matrix": [6, 0]},
|
{"label": "R15", "matrix": [6, 0], "x": 7, "y": 2.42},
|
||||||
{"label": "R14", "matrix": [6, 1]},
|
{"label": "R14", "matrix": [6, 1], "x": 8, "y": 2.28},
|
||||||
{"label": "R13", "matrix": [6, 2]},
|
{"label": "R13", "matrix": [6, 2], "x": 9, "y": 2},
|
||||||
{"label": "R12", "matrix": [6, 3]},
|
{"label": "R12", "matrix": [6, 3], "x": 10, "y": 2.31},
|
||||||
{"label": "R11", "matrix": [6, 4]},
|
{"label": "R11", "matrix": [6, 4], "x": 11, "y": 2.93},
|
||||||
|
|
||||||
{"label": "L16", "matrix": [3, 1]},
|
{"label": "L16", "matrix": [3, 1], "x": 3.5, "y": 3.75},
|
||||||
{"label": "L17", "matrix": [3, 0]},
|
{"label": "L17", "matrix": [3, 0], "x": 4.5, "y": 4},
|
||||||
{"label": "R17", "matrix": [7, 0]},
|
{"label": "R17", "matrix": [7, 0], "x": 6.5, "y": 4},
|
||||||
{"label": "R16", "matrix": [7, 1]}
|
{"label": "R16", "matrix": [7, 1], "x": 7.5, "y": 3.75}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -104,52 +105,52 @@
|
|||||||
"rgb_matrix": {
|
"rgb_matrix": {
|
||||||
"driver": "WS2812",
|
"driver": "WS2812",
|
||||||
"layout": [
|
"layout": [
|
||||||
{"flags": 2, "x": 71, "y": 15}, // L RGB1
|
{"flags": 2, "x": 71, "y": 15},
|
||||||
{"flags": 2, "x": 51, "y": 8}, // L RGB2
|
{"flags": 2, "x": 51, "y": 8},
|
||||||
{"flags": 2, "x": 10, "y": 13}, // L RGB3
|
{"flags": 2, "x": 10, "y": 13},
|
||||||
{"flags": 2, "x": 10, "y": 42}, // L RGB4
|
{"flags": 2, "x": 10, "y": 42},
|
||||||
{"flags": 2, "x": 41, "y": 45}, // L RGB5
|
{"flags": 2, "x": 41, "y": 45},
|
||||||
{"flags": 2, "x": 76, "y": 50}, // L RGB6
|
{"flags": 2, "x": 76, "y": 50},
|
||||||
{"flags": 4, "matrix": [0, 4], "x": 0, "y": 15}, // L SW01
|
{"flags": 4, "matrix": [0, 4], "x": 0, "y": 15},
|
||||||
{"flags": 4, "matrix": [0, 3], "x": 20, "y": 5}, // L SW02
|
{"flags": 4, "matrix": [0, 3], "x": 20, "y": 5},
|
||||||
{"flags": 4, "matrix": [0, 2], "x": 41, "y": 0}, // L SW03
|
{"flags": 4, "matrix": [0, 2], "x": 41, "y": 0},
|
||||||
{"flags": 4, "matrix": [0, 1], "x": 61, "y": 4}, // L SW04
|
{"flags": 4, "matrix": [0, 1], "x": 61, "y": 4},
|
||||||
{"flags": 4, "matrix": [0, 0], "x": 81, "y": 7}, // L SW05
|
{"flags": 4, "matrix": [0, 0], "x": 81, "y": 7},
|
||||||
{"flags": 4, "matrix": [1, 4], "x": 0, "y": 31}, // L SW06
|
{"flags": 4, "matrix": [1, 4], "x": 0, "y": 31},
|
||||||
{"flags": 4, "matrix": [1, 3], "x": 20, "y": 21}, // L SW07
|
{"flags": 4, "matrix": [1, 3], "x": 20, "y": 21},
|
||||||
{"flags": 4, "matrix": [1, 2], "x": 41, "y": 16}, // L SW08
|
{"flags": 4, "matrix": [1, 2], "x": 41, "y": 16},
|
||||||
{"flags": 4, "matrix": [1, 1], "x": 61, "y": 20}, // L SW09
|
{"flags": 4, "matrix": [1, 1], "x": 61, "y": 20},
|
||||||
{"flags": 4, "matrix": [1, 0], "x": 81, "y": 23}, // L SW10
|
{"flags": 4, "matrix": [1, 0], "x": 81, "y": 23},
|
||||||
{"flags": 4, "matrix": [2, 4], "x": 0, "y": 47}, // L SW11
|
{"flags": 4, "matrix": [2, 4], "x": 0, "y": 47},
|
||||||
{"flags": 4, "matrix": [2, 3], "x": 20, "y": 37}, // L SW12
|
{"flags": 4, "matrix": [2, 3], "x": 20, "y": 37},
|
||||||
{"flags": 4, "matrix": [2, 2], "x": 41, "y": 32}, // L SW13
|
{"flags": 4, "matrix": [2, 2], "x": 41, "y": 32},
|
||||||
{"flags": 4, "matrix": [2, 1], "x": 61, "y": 36}, // L SW14
|
{"flags": 4, "matrix": [2, 1], "x": 61, "y": 36},
|
||||||
{"flags": 4, "matrix": [2, 0], "x": 81, "y": 39}, // L SW15
|
{"flags": 4, "matrix": [2, 0], "x": 81, "y": 39},
|
||||||
{"flags": 4, "matrix": [3, 1], "x": 71, "y": 60}, // L SW16
|
{"flags": 4, "matrix": [3, 1], "x": 71, "y": 60},
|
||||||
{"flags": 4, "matrix": [3, 0], "x": 92, "y": 64}, // L SW17
|
{"flags": 4, "matrix": [3, 0], "x": 92, "y": 64},
|
||||||
{"flags": 2, "x": 150, "y": 15}, // R RGB1
|
{"flags": 2, "x": 150, "y": 15},
|
||||||
{"flags": 2, "x": 190, "y": 8}, // R RGB2
|
{"flags": 2, "x": 190, "y": 8},
|
||||||
{"flags": 2, "x": 210, "y": 13}, // R RGB3
|
{"flags": 2, "x": 210, "y": 13},
|
||||||
{"flags": 2, "x": 220, "y": 42}, // R RGB4
|
{"flags": 2, "x": 220, "y": 42},
|
||||||
{"flags": 2, "x": 183, "y": 45}, // R RGB5
|
{"flags": 2, "x": 183, "y": 45},
|
||||||
{"flags": 2, "x": 155, "y": 50}, // R RGB6
|
{"flags": 2, "x": 155, "y": 50},
|
||||||
{"flags": 4, "matrix": [4, 0], "x": 143, "y": 7}, // R SW05
|
{"flags": 4, "matrix": [4, 0], "x": 143, "y": 7},
|
||||||
{"flags": 4, "matrix": [4, 1], "x": 163, "y": 4}, // R SW04
|
{"flags": 4, "matrix": [4, 1], "x": 163, "y": 4},
|
||||||
{"flags": 4, "matrix": [4, 2], "x": 183, "y": 0}, // R SW03
|
{"flags": 4, "matrix": [4, 2], "x": 183, "y": 0},
|
||||||
{"flags": 4, "matrix": [4, 3], "x": 204, "y": 5}, // R SW02
|
{"flags": 4, "matrix": [4, 3], "x": 204, "y": 5},
|
||||||
{"flags": 4, "matrix": [4, 4], "x": 224, "y": 15}, // R SW01
|
{"flags": 4, "matrix": [4, 4], "x": 224, "y": 15},
|
||||||
{"flags": 4, "matrix": [5, 0], "x": 143, "y": 23}, // R SW10
|
{"flags": 4, "matrix": [5, 0], "x": 143, "y": 23},
|
||||||
{"flags": 4, "matrix": [5, 1], "x": 163, "y": 20}, // R SW09
|
{"flags": 4, "matrix": [5, 1], "x": 163, "y": 20},
|
||||||
{"flags": 4, "matrix": [5, 2], "x": 183, "y": 16}, // R SW08
|
{"flags": 4, "matrix": [5, 2], "x": 183, "y": 16},
|
||||||
{"flags": 4, "matrix": [5, 3], "x": 204, "y": 21}, // R SW07
|
{"flags": 4, "matrix": [5, 3], "x": 204, "y": 21},
|
||||||
{"flags": 4, "matrix": [5, 4], "x": 224, "y": 31}, // R SW06
|
{"flags": 4, "matrix": [5, 4], "x": 224, "y": 31},
|
||||||
{"flags": 4, "matrix": [6, 0], "x": 143, "y": 39}, // R SW15
|
{"flags": 4, "matrix": [6, 0], "x": 143, "y": 39},
|
||||||
{"flags": 4, "matrix": [6, 1], "x": 163, "y": 36}, // R SW14
|
{"flags": 4, "matrix": [6, 1], "x": 163, "y": 36},
|
||||||
{"flags": 4, "matrix": [6, 2], "x": 183, "y": 32}, // R SW13
|
{"flags": 4, "matrix": [6, 2], "x": 183, "y": 32},
|
||||||
{"flags": 4, "matrix": [6, 3], "x": 204, "y": 37}, // R SW12
|
{"flags": 4, "matrix": [6, 3], "x": 204, "y": 37},
|
||||||
{"flags": 4, "matrix": [6, 4], "x": 224, "y": 47}, // R SW11
|
{"flags": 4, "matrix": [6, 4], "x": 224, "y": 47},
|
||||||
{"flags": 4, "matrix": [7, 0], "x": 132, "y": 64}, // R SW17
|
{"flags": 4, "matrix": [7, 0], "x": 132, "y": 64},
|
||||||
{"flags": 4, "matrix": [7, 1], "x": 153, "y": 60} // R SW16
|
{"flags": 4, "matrix": [7, 1], "x": 153, "y": 60}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -406,15 +406,15 @@ bool process_key_override(const uint16_t keycode, const keyrecord_t *const recor
|
|||||||
|
|
||||||
if (key_down) {
|
if (key_down) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case KEY_OVERRIDE_TOGGLE:
|
case QK_KEY_OVERRIDE_TOGGLE:
|
||||||
key_override_toggle();
|
key_override_toggle();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case KEY_OVERRIDE_ON:
|
case QK_KEY_OVERRIDE_ON:
|
||||||
key_override_on();
|
key_override_on();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case KEY_OVERRIDE_OFF:
|
case QK_KEY_OVERRIDE_OFF:
|
||||||
key_override_off();
|
key_override_off();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -513,9 +513,9 @@ enum quantum_keycodes {
|
|||||||
RGB_MODE_TWINKLE,
|
RGB_MODE_TWINKLE,
|
||||||
|
|
||||||
// Key Overrides
|
// Key Overrides
|
||||||
KEY_OVERRIDE_TOGGLE,
|
QK_KEY_OVERRIDE_TOGGLE,
|
||||||
KEY_OVERRIDE_ON,
|
QK_KEY_OVERRIDE_ON,
|
||||||
KEY_OVERRIDE_OFF,
|
QK_KEY_OVERRIDE_OFF,
|
||||||
|
|
||||||
// Additional magic key
|
// Additional magic key
|
||||||
MAGIC_TOGGLE_GUI,
|
MAGIC_TOGGLE_GUI,
|
||||||
@ -852,6 +852,11 @@ enum quantum_keycodes {
|
|||||||
// Caps Word
|
// Caps Word
|
||||||
#define CW_TOGG QK_CAPS_WORD_TOGGLE
|
#define CW_TOGG QK_CAPS_WORD_TOGGLE
|
||||||
|
|
||||||
|
// Key Overrides
|
||||||
|
#define KO_TOGG QK_KEY_OVERRIDE_TOGGLE
|
||||||
|
#define KO_ON QK_KEY_OVERRIDE_ON
|
||||||
|
#define KO_OFF QK_KEY_OVERRIDE_OFF
|
||||||
|
|
||||||
// Swap Hands
|
// Swap Hands
|
||||||
#define SH_T(kc) (QK_SWAP_HANDS | (kc))
|
#define SH_T(kc) (QK_SWAP_HANDS | (kc))
|
||||||
#define SH_TG (QK_SWAP_HANDS | OP_SH_TOGGLE)
|
#define SH_TG (QK_SWAP_HANDS | OP_SH_TOGGLE)
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
#define CAPSWRD QK_CAPS_WORD_TOGGLE
|
#define CAPSWRD QK_CAPS_WORD_TOGGLE
|
||||||
#define CAPS_WORD QK_CAPS_WORD_TOGGLE
|
#define CAPS_WORD QK_CAPS_WORD_TOGGLE
|
||||||
|
|
||||||
|
#define KEY_OVERRIDE_TOGGLE QK_KEY_OVERRIDE_TOGGLE
|
||||||
|
#define KEY_OVERRIDE_ON QK_KEY_OVERRIDE_ON
|
||||||
|
#define KEY_OVERRIDE_OFF QK_KEY_OVERRIDE_OFF
|
||||||
|
|
||||||
#define PROGRAMMABLE_BUTTON_1 QK_PROGRAMMABLE_BUTTON_1
|
#define PROGRAMMABLE_BUTTON_1 QK_PROGRAMMABLE_BUTTON_1
|
||||||
#define PROGRAMMABLE_BUTTON_2 QK_PROGRAMMABLE_BUTTON_2
|
#define PROGRAMMABLE_BUTTON_2 QK_PROGRAMMABLE_BUTTON_2
|
||||||
#define PROGRAMMABLE_BUTTON_3 QK_PROGRAMMABLE_BUTTON_3
|
#define PROGRAMMABLE_BUTTON_3 QK_PROGRAMMABLE_BUTTON_3
|
||||||
|
Loading…
Reference in New Issue
Block a user