mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Added FN+C binding for Fn-Lock
This commit is contained in:
55
app/Extra.Designer.cs
generated
55
app/Extra.Designer.cs
generated
@@ -90,6 +90,9 @@ namespace GHelper
|
|||||||
checkUSBC = new CheckBox();
|
checkUSBC = new CheckBox();
|
||||||
checkNoOverdrive = new CheckBox();
|
checkNoOverdrive = new CheckBox();
|
||||||
checkTopmost = new CheckBox();
|
checkTopmost = new CheckBox();
|
||||||
|
labelFNC = new Label();
|
||||||
|
comboFNC = new RComboBox();
|
||||||
|
textFNC = new TextBox();
|
||||||
groupBindings.SuspendLayout();
|
groupBindings.SuspendLayout();
|
||||||
tableKeys.SuspendLayout();
|
tableKeys.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
|
||||||
@@ -110,7 +113,7 @@ namespace GHelper
|
|||||||
groupBindings.Dock = DockStyle.Top;
|
groupBindings.Dock = DockStyle.Top;
|
||||||
groupBindings.Location = new Point(10, 10);
|
groupBindings.Location = new Point(10, 10);
|
||||||
groupBindings.Name = "groupBindings";
|
groupBindings.Name = "groupBindings";
|
||||||
groupBindings.Size = new Size(954, 324);
|
groupBindings.Size = new Size(954, 376);
|
||||||
groupBindings.TabIndex = 0;
|
groupBindings.TabIndex = 0;
|
||||||
groupBindings.TabStop = false;
|
groupBindings.TabStop = false;
|
||||||
groupBindings.Text = "Key Bindings";
|
groupBindings.Text = "Key Bindings";
|
||||||
@@ -121,31 +124,35 @@ namespace GHelper
|
|||||||
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
|
||||||
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||||
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
tableKeys.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
|
||||||
|
tableKeys.Controls.Add(labelFNC, 0, 5);
|
||||||
tableKeys.Controls.Add(textM2, 2, 1);
|
tableKeys.Controls.Add(textM2, 2, 1);
|
||||||
tableKeys.Controls.Add(textM1, 2, 0);
|
tableKeys.Controls.Add(textM1, 2, 0);
|
||||||
tableKeys.Controls.Add(comboM1, 1, 0);
|
tableKeys.Controls.Add(comboM1, 1, 0);
|
||||||
tableKeys.Controls.Add(labelM1, 0, 0);
|
tableKeys.Controls.Add(labelM1, 0, 0);
|
||||||
tableKeys.Controls.Add(labelFNF4, 0, 4);
|
|
||||||
tableKeys.Controls.Add(comboFNF4, 1, 4);
|
|
||||||
tableKeys.Controls.Add(comboM4, 1, 3);
|
tableKeys.Controls.Add(comboM4, 1, 3);
|
||||||
tableKeys.Controls.Add(comboM3, 1, 2);
|
tableKeys.Controls.Add(comboM3, 1, 2);
|
||||||
tableKeys.Controls.Add(textFNF4, 2, 4);
|
|
||||||
tableKeys.Controls.Add(textM4, 2, 3);
|
tableKeys.Controls.Add(textM4, 2, 3);
|
||||||
tableKeys.Controls.Add(textM3, 2, 2);
|
tableKeys.Controls.Add(textM3, 2, 2);
|
||||||
tableKeys.Controls.Add(labelM4, 0, 3);
|
tableKeys.Controls.Add(labelM4, 0, 3);
|
||||||
tableKeys.Controls.Add(labelM3, 0, 2);
|
tableKeys.Controls.Add(labelM3, 0, 2);
|
||||||
tableKeys.Controls.Add(labelM2, 0, 1);
|
tableKeys.Controls.Add(labelM2, 0, 1);
|
||||||
tableKeys.Controls.Add(comboM2, 1, 1);
|
tableKeys.Controls.Add(comboM2, 1, 1);
|
||||||
|
tableKeys.Controls.Add(labelFNF4, 0, 4);
|
||||||
|
tableKeys.Controls.Add(comboFNF4, 1, 4);
|
||||||
|
tableKeys.Controls.Add(textFNF4, 2, 4);
|
||||||
|
tableKeys.Controls.Add(comboFNC, 1, 5);
|
||||||
|
tableKeys.Controls.Add(textFNC, 2, 5);
|
||||||
tableKeys.Location = new Point(13, 38);
|
tableKeys.Location = new Point(13, 38);
|
||||||
tableKeys.Name = "tableKeys";
|
tableKeys.Name = "tableKeys";
|
||||||
tableKeys.Padding = new Padding(10);
|
tableKeys.Padding = new Padding(10);
|
||||||
tableKeys.RowCount = 5;
|
tableKeys.RowCount = 6;
|
||||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 48F));
|
||||||
tableKeys.Size = new Size(897, 266);
|
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 22F));
|
||||||
|
tableKeys.Size = new Size(897, 318);
|
||||||
tableKeys.TabIndex = 10;
|
tableKeys.TabIndex = 10;
|
||||||
//
|
//
|
||||||
// textM2
|
// textM2
|
||||||
@@ -305,7 +312,7 @@ namespace GHelper
|
|||||||
groupLight.Controls.Add(panelXMG);
|
groupLight.Controls.Add(panelXMG);
|
||||||
groupLight.Controls.Add(tableBacklight);
|
groupLight.Controls.Add(tableBacklight);
|
||||||
groupLight.Dock = DockStyle.Top;
|
groupLight.Dock = DockStyle.Top;
|
||||||
groupLight.Location = new Point(10, 334);
|
groupLight.Location = new Point(10, 386);
|
||||||
groupLight.Name = "groupLight";
|
groupLight.Name = "groupLight";
|
||||||
groupLight.Size = new Size(954, 563);
|
groupLight.Size = new Size(954, 563);
|
||||||
groupLight.TabIndex = 1;
|
groupLight.TabIndex = 1;
|
||||||
@@ -693,7 +700,7 @@ namespace GHelper
|
|||||||
groupOther.Controls.Add(checkNoOverdrive);
|
groupOther.Controls.Add(checkNoOverdrive);
|
||||||
groupOther.Controls.Add(checkTopmost);
|
groupOther.Controls.Add(checkTopmost);
|
||||||
groupOther.Dock = DockStyle.Top;
|
groupOther.Dock = DockStyle.Top;
|
||||||
groupOther.Location = new Point(10, 897);
|
groupOther.Location = new Point(10, 949);
|
||||||
groupOther.Name = "groupOther";
|
groupOther.Name = "groupOther";
|
||||||
groupOther.Size = new Size(954, 352);
|
groupOther.Size = new Size(954, 352);
|
||||||
groupOther.TabIndex = 2;
|
groupOther.TabIndex = 2;
|
||||||
@@ -772,6 +779,33 @@ namespace GHelper
|
|||||||
checkTopmost.Text = Strings.WindowTop;
|
checkTopmost.Text = Strings.WindowTop;
|
||||||
checkTopmost.UseVisualStyleBackColor = true;
|
checkTopmost.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// labelFNC
|
||||||
|
//
|
||||||
|
labelFNC.AutoSize = true;
|
||||||
|
labelFNC.Location = new Point(13, 258);
|
||||||
|
labelFNC.Name = "labelFNC";
|
||||||
|
labelFNC.Size = new Size(80, 32);
|
||||||
|
labelFNC.TabIndex = 15;
|
||||||
|
labelFNC.Text = "FN+C:";
|
||||||
|
//
|
||||||
|
// comboFNC
|
||||||
|
//
|
||||||
|
comboFNC.BorderColor = Color.White;
|
||||||
|
comboFNC.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||||
|
comboFNC.FormattingEnabled = true;
|
||||||
|
comboFNC.Location = new Point(188, 261);
|
||||||
|
comboFNC.Name = "comboFNC";
|
||||||
|
comboFNC.Size = new Size(312, 40);
|
||||||
|
comboFNC.TabIndex = 16;
|
||||||
|
//
|
||||||
|
// textFNC
|
||||||
|
//
|
||||||
|
textFNC.Location = new Point(538, 261);
|
||||||
|
textFNC.Name = "textFNC";
|
||||||
|
textFNC.PlaceholderText = "action";
|
||||||
|
textFNC.Size = new Size(346, 39);
|
||||||
|
textFNC.TabIndex = 17;
|
||||||
|
//
|
||||||
// Extra
|
// Extra
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(13F, 32F);
|
AutoScaleDimensions = new SizeF(13F, 32F);
|
||||||
@@ -873,5 +907,8 @@ namespace GHelper
|
|||||||
private Label labelBacklightTimeoutPlugged;
|
private Label labelBacklightTimeoutPlugged;
|
||||||
private CheckBox checkGpuApps;
|
private CheckBox checkGpuApps;
|
||||||
private CheckBox checkFnLock;
|
private CheckBox checkFnLock;
|
||||||
|
private Label labelFNC;
|
||||||
|
private RComboBox comboFNC;
|
||||||
|
private TextBox textFNC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@ namespace GHelper
|
|||||||
{"performance", Properties.Strings.PerformanceMode},
|
{"performance", Properties.Strings.PerformanceMode},
|
||||||
{"screen", Properties.Strings.ToggleScreen},
|
{"screen", Properties.Strings.ToggleScreen},
|
||||||
{"miniled", Properties.Strings.ToggleMiniled},
|
{"miniled", Properties.Strings.ToggleMiniled},
|
||||||
|
{"fnlock", Properties.Strings.ToggleFnLock},
|
||||||
{"custom", Properties.Strings.Custom}
|
{"custom", Properties.Strings.Custom}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -41,6 +42,10 @@ namespace GHelper
|
|||||||
customActions[""] = Properties.Strings.ToggleAura;
|
customActions[""] = Properties.Strings.ToggleAura;
|
||||||
customActions.Remove("aura");
|
customActions.Remove("aura");
|
||||||
break;
|
break;
|
||||||
|
case "fnc":
|
||||||
|
customActions[""] = Properties.Strings.ToggleFnLock;
|
||||||
|
customActions.Remove("fnlock");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
combo.DropDownStyle = ComboBoxStyle.DropDownList;
|
combo.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
@@ -112,6 +117,7 @@ namespace GHelper
|
|||||||
SetKeyCombo(comboM3, textM3, "m3");
|
SetKeyCombo(comboM3, textM3, "m3");
|
||||||
SetKeyCombo(comboM4, textM4, "m4");
|
SetKeyCombo(comboM4, textM4, "m4");
|
||||||
SetKeyCombo(comboFNF4, textFNF4, "fnf4");
|
SetKeyCombo(comboFNF4, textFNF4, "fnf4");
|
||||||
|
SetKeyCombo(comboFNC, textFNC, "fnc");
|
||||||
|
|
||||||
Shown += Keyboard_Shown;
|
Shown += Keyboard_Shown;
|
||||||
|
|
||||||
|
|||||||
@@ -199,6 +199,22 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("GA401I"))
|
||||||
|
{
|
||||||
|
switch (e.Key)
|
||||||
|
{
|
||||||
|
case Keys.F2:
|
||||||
|
KeyboardHook.KeyPress(Keys.MediaPreviousTrack);
|
||||||
|
return;
|
||||||
|
case Keys.F3:
|
||||||
|
KeyboardHook.KeyPress(Keys.MediaPlayPause);
|
||||||
|
return;
|
||||||
|
case Keys.F4:
|
||||||
|
KeyboardHook.KeyPress(Keys.MediaNextTrack);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
switch (e.Key)
|
switch (e.Key)
|
||||||
{
|
{
|
||||||
@@ -277,6 +293,8 @@ namespace GHelper
|
|||||||
action = "performance";
|
action = "performance";
|
||||||
if (name == "m3" && !OptimizationService.IsRunning())
|
if (name == "m3" && !OptimizationService.IsRunning())
|
||||||
action = "micmute";
|
action = "micmute";
|
||||||
|
if (name == "fnc")
|
||||||
|
action = "fnlock";
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (action)
|
switch (action)
|
||||||
@@ -308,8 +326,8 @@ namespace GHelper
|
|||||||
Program.SettingsToggle();
|
Program.SettingsToggle();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "custom":
|
case "fnlock":
|
||||||
CustomKey(name);
|
ToggleFnLock();
|
||||||
break;
|
break;
|
||||||
case "micmute":
|
case "micmute":
|
||||||
using (var enumerator = new MMDeviceEnumerator())
|
using (var enumerator = new MMDeviceEnumerator())
|
||||||
@@ -320,6 +338,9 @@ namespace GHelper
|
|||||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "custom":
|
||||||
|
CustomKey(name);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -338,7 +359,13 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
int fnLock = AppConfig.isConfig("fn_lock") ? 0 : 1;
|
int fnLock = AppConfig.isConfig("fn_lock") ? 0 : 1;
|
||||||
AppConfig.setConfig("fn_lock", fnLock);
|
AppConfig.setConfig("fn_lock", fnLock);
|
||||||
|
|
||||||
|
if (AppConfig.ContainsModel("VivoBook"))
|
||||||
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
|
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
|
||||||
|
else
|
||||||
|
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
||||||
|
|
||||||
|
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, "Fn-Lock "+(fnLock==1?"On":"Off"), ToastIcon.FnLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TabletMode()
|
static void TabletMode()
|
||||||
@@ -369,12 +396,15 @@ namespace GHelper
|
|||||||
case 178: // FN+F4
|
case 178: // FN+F4
|
||||||
KeyProcess("fnf4");
|
KeyProcess("fnf4");
|
||||||
return;
|
return;
|
||||||
case 189: // Tablet mode
|
case 158: // Fn + C
|
||||||
TabletMode();
|
KeyProcess("fnc");
|
||||||
return;
|
return;
|
||||||
case 78: // Fn + ESC
|
case 78: // Fn + ESC
|
||||||
ToggleFnLock();
|
ToggleFnLock();
|
||||||
return;
|
return;
|
||||||
|
case 189: // Tablet mode
|
||||||
|
TabletMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!OptimizationService.IsRunning()) OptimizationEvent(EventID);
|
if (!OptimizationService.IsRunning()) OptimizationEvent(EventID);
|
||||||
|
|||||||
10
app/Properties/Resources.Designer.cs
generated
10
app/Properties/Resources.Designer.cs
generated
@@ -180,6 +180,16 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap icons8_function {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("icons8_function", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -232,4 +232,7 @@
|
|||||||
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="icons8_function" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\icons8-function-mac-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
9
app/Properties/Strings.Designer.cs
generated
9
app/Properties/Strings.Designer.cs
generated
@@ -1023,6 +1023,15 @@ namespace GHelper.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Toggle Fn-Lock.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ToggleFnLock {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ToggleFnLock", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Toggle Miniled (if supported).
|
/// Looks up a localized string similar to Toggle Miniled (if supported).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -438,6 +438,9 @@
|
|||||||
<data name="ToggleAura" xml:space="preserve">
|
<data name="ToggleAura" xml:space="preserve">
|
||||||
<value>Toggle Aura</value>
|
<value>Toggle Aura</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ToggleFnLock" xml:space="preserve">
|
||||||
|
<value>Toggle Fn-Lock</value>
|
||||||
|
</data>
|
||||||
<data name="ToggleMiniled" xml:space="preserve">
|
<data name="ToggleMiniled" xml:space="preserve">
|
||||||
<value>Toggle Miniled (if supported)</value>
|
<value>Toggle Miniled (if supported)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -266,6 +266,9 @@
|
|||||||
</data>
|
</data>
|
||||||
<data name="FansPower" xml:space="preserve">
|
<data name="FansPower" xml:space="preserve">
|
||||||
<value>自定義設置</value>
|
<value>自定義設置</value>
|
||||||
|
</data>
|
||||||
|
<data name="FnLock" xml:space="preserve">
|
||||||
|
<value>使用Fn+F1~F12的功能時不須按下Fn鍵</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GPUBoost" xml:space="preserve">
|
<data name="GPUBoost" xml:space="preserve">
|
||||||
<value>Dynamic Boost</value>
|
<value>Dynamic Boost</value>
|
||||||
@@ -308,6 +311,9 @@
|
|||||||
</data>
|
</data>
|
||||||
<data name="LaptopBacklight" xml:space="preserve">
|
<data name="LaptopBacklight" xml:space="preserve">
|
||||||
<value>背光</value>
|
<value>背光</value>
|
||||||
|
</data>
|
||||||
|
<data name="KillGpuApps" xml:space="preserve">
|
||||||
|
<value>切換至節能模式時,關閉所有正在使用獨顯的程式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LaptopKeyboard" xml:space="preserve">
|
<data name="LaptopKeyboard" xml:space="preserve">
|
||||||
<value>鍵盤背光:</value>
|
<value>鍵盤背光:</value>
|
||||||
|
|||||||
BIN
app/Resources/icons8-function-mac-96.png
Normal file
BIN
app/Resources/icons8-function-mac-96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 815 B |
@@ -51,7 +51,8 @@ namespace GHelper
|
|||||||
BacklightDown,
|
BacklightDown,
|
||||||
Touchpad,
|
Touchpad,
|
||||||
Microphone,
|
Microphone,
|
||||||
MicrophoneMute
|
MicrophoneMute,
|
||||||
|
FnLock
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ToastForm : OSDNativeForm
|
public class ToastForm : OSDNativeForm
|
||||||
@@ -103,6 +104,9 @@ namespace GHelper
|
|||||||
case ToastIcon.Touchpad:
|
case ToastIcon.Touchpad:
|
||||||
icon = Properties.Resources.icons8_touchpad_96;
|
icon = Properties.Resources.icons8_touchpad_96;
|
||||||
break;
|
break;
|
||||||
|
case ToastIcon.FnLock:
|
||||||
|
icon = Properties.Resources.icons8_function;
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user