Add a mappable shake input
- mappable "shake" input Co-authored-by: Shuken <shukenmg@iuvenisstudios.ga>
This commit is contained in:
parent
43786c12d9
commit
36346c1896
7 changed files with 322 additions and 236 deletions
|
@ -25,6 +25,16 @@
|
|||
<!--On is "true"; off is "false". Default: true -->
|
||||
<add key="EnableRumble" value="true" />
|
||||
|
||||
<!--Enables a input when shaking a controller, only works with DS4 for now, replaces the touchpad input (Button 13 on DirectInput)-->
|
||||
<!--On is "true"; off is "false". Default: false -->
|
||||
<add key="EnableShakeInput" value="false" />
|
||||
<!--How sensitve the shake detection should be. Default: 10-->
|
||||
<add key="ShakeInputSensitivity" value="10" />
|
||||
<!--How often should the shake input run in milliseconds. -->
|
||||
<!--Don't set this lower than 15 -->
|
||||
<!-- Default: 200 -->
|
||||
<add key="ShakeInputDelay" value="200" />
|
||||
|
||||
<!--Swap A-B buttons; if on, this mimicks the (half of) Xbox layout by the button name, rather than by the physical layout.-->
|
||||
<!--Also swaps buttons when using "Also use for buttons/axes"-->
|
||||
<!--On is "true"; off is "false". Default: false -->
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace BetterJoyForCemu {
|
|||
const string PATH = "settings";
|
||||
static Dictionary<string, string> variables = new Dictionary<string, string>();
|
||||
|
||||
const int settingsNum = 10; // currently - ProgressiveScan, StartInTray + special buttons
|
||||
const int settingsNum = 11; // currently - ProgressiveScan, StartInTray + special buttons
|
||||
|
||||
public static string GetDefaultValue(string s) {
|
||||
switch (s) {
|
||||
|
@ -21,15 +21,36 @@ namespace BetterJoyForCemu {
|
|||
return "0";
|
||||
}
|
||||
|
||||
// Helper function to count how many lines are in a file
|
||||
// https://www.dotnetperls.com/line-count
|
||||
static long CountLinesInFile(string f) {
|
||||
// Zero based count
|
||||
long count = -1;
|
||||
using (StreamReader r = new StreamReader(f)) {
|
||||
string line;
|
||||
while ((line = r.ReadLine()) != null) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
public static void Init(List<KeyValuePair<string, float[]>> caliData) {
|
||||
foreach (string s in new string[] { "ProgressiveScan", "StartInTray", "capture", "home", "sl_l", "sl_r", "sr_l", "sr_r", "reset_mouse", "active_gyro" })
|
||||
foreach (string s in new string[] { "ProgressiveScan", "StartInTray", "capture", "home", "sl_l", "sl_r", "sr_l", "sr_r", "shake", "reset_mouse", "active_gyro" })
|
||||
variables[s] = GetDefaultValue(s);
|
||||
|
||||
if (File.Exists(PATH)) {
|
||||
int lineNO = 0;
|
||||
|
||||
// Reset settings file if old settings
|
||||
if (CountLinesInFile(PATH) < settingsNum) {
|
||||
File.Delete(PATH);
|
||||
Init(caliData);
|
||||
return;
|
||||
}
|
||||
|
||||
using (StreamReader file = new StreamReader(PATH)) {
|
||||
string line = String.Empty;
|
||||
|
||||
int lineNO = 0;
|
||||
while ((line = file.ReadLine()) != null) {
|
||||
string[] vs = line.Split();
|
||||
try {
|
||||
|
@ -52,14 +73,6 @@ namespace BetterJoyForCemu {
|
|||
} catch { }
|
||||
lineNO++;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// if old settings
|
||||
if (lineNO < settingsNum) {
|
||||
File.Delete(PATH);
|
||||
Init(caliData);
|
||||
}
|
||||
} else {
|
||||
using (StreamWriter file = new StreamWriter(PATH)) {
|
||||
|
|
|
@ -31,6 +31,7 @@ namespace BetterJoyForCemu {
|
|||
THREADING,
|
||||
IMU,
|
||||
RUMBLE,
|
||||
SHAKE,
|
||||
};
|
||||
public DebugType debug_type = DebugType.NONE;
|
||||
public bool isLeft;
|
||||
|
@ -574,6 +575,38 @@ namespace BetterJoyForCemu {
|
|||
return ret;
|
||||
}
|
||||
|
||||
private readonly Stopwatch shakeTimer = Stopwatch.StartNew(); //Setup a timer for measuring shake in milliseconds
|
||||
private long shakedTime = 0;
|
||||
private bool hasShaked;
|
||||
void DetectShake() {
|
||||
if (form.shakeInputEnabled) {
|
||||
long currentShakeTime = shakeTimer.ElapsedMilliseconds;
|
||||
|
||||
// Shake detection logic
|
||||
bool isShaking = GetAccel().LengthSquared() >= form.shakeSesitivity;
|
||||
if (isShaking && currentShakeTime >= shakedTime + form.shakeDelay || isShaking && shakedTime == 0) {
|
||||
shakedTime = currentShakeTime;
|
||||
hasShaked = true;
|
||||
|
||||
// Mapped shake key down
|
||||
Simulate(Config.Value("shake"), false, false);
|
||||
DebugPrint("Shaked at time: " + shakedTime.ToString(), DebugType.SHAKE);
|
||||
}
|
||||
|
||||
// If controller was shaked then release mapped key after a small delay to simulate a button press, then reset hasShaked
|
||||
if (hasShaked && currentShakeTime >= shakedTime + 10) {
|
||||
// Mapped shake key up
|
||||
Simulate(Config.Value("shake"), false, true);
|
||||
DebugPrint("Shake completed", DebugType.SHAKE);
|
||||
hasShaked = false;
|
||||
}
|
||||
|
||||
} else {
|
||||
shakeTimer.Stop();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool dragToggle = Boolean.Parse(ConfigurationManager.AppSettings["DragToggle"]);
|
||||
Dictionary<int, bool> mouse_toggle_btn = new Dictionary<int, bool>();
|
||||
private void Simulate(string s, bool click = true, bool up = false) {
|
||||
|
@ -655,6 +688,8 @@ namespace BetterJoyForCemu {
|
|||
}
|
||||
}
|
||||
|
||||
DetectShake();
|
||||
|
||||
if (buttons_down[(int)Button.CAPTURE])
|
||||
Simulate(Config.Value("capture"));
|
||||
if (buttons_down[(int)Button.HOME])
|
||||
|
|
|
@ -22,6 +22,9 @@ namespace BetterJoyForCemu {
|
|||
private Timer countDown;
|
||||
private int count;
|
||||
public List<int> xG, yG, zG, xA, yA, zA;
|
||||
public bool shakeInputEnabled = Boolean.Parse(ConfigurationManager.AppSettings["EnableShakeInput"]);
|
||||
public float shakeSesitivity = float.Parse(ConfigurationManager.AppSettings["ShakeInputSensitivity"]);
|
||||
public float shakeDelay = float.Parse(ConfigurationManager.AppSettings["ShakeInputDelay"]);
|
||||
|
||||
public MainForm() {
|
||||
xG = new List<int>(); yG = new List<int>(); zG = new List<int>();
|
||||
|
|
468
BetterJoyForCemu/Reassign.Designer.cs
generated
468
BetterJoyForCemu/Reassign.Designer.cs
generated
|
@ -79,226 +79,248 @@ namespace BetterJoyForCemu {
|
|||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Reassign));
|
||||
this.btn_capture = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_capture = new System.Windows.Forms.Label();
|
||||
this.lbl_home = new System.Windows.Forms.Label();
|
||||
this.btn_home = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sl_l = new System.Windows.Forms.Label();
|
||||
this.btn_sl_l = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sr_l = new System.Windows.Forms.Label();
|
||||
this.btn_sr_l = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sl_r = new System.Windows.Forms.Label();
|
||||
this.btn_sl_r = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sr_r = new System.Windows.Forms.Label();
|
||||
this.btn_sr_r = new BetterJoyForCemu.SplitButton();
|
||||
this.btn_close = new Button();
|
||||
this.btn_apply = new Button();
|
||||
this.tip_reassign = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.lbl_reset_mouse = new System.Windows.Forms.Label();
|
||||
this.btn_reset_mouse = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_activate_gyro = new System.Windows.Forms.Label();
|
||||
this.btn_active_gyro = new SplitButton();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btn_capture
|
||||
//
|
||||
this.btn_capture.Location = new System.Drawing.Point(105, 12);
|
||||
this.btn_capture.Name = "btn_capture";
|
||||
this.btn_capture.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_capture.TabIndex = 0;
|
||||
this.btn_capture.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_capture
|
||||
//
|
||||
this.lbl_capture.AutoSize = true;
|
||||
this.lbl_capture.Location = new System.Drawing.Point(15, 17);
|
||||
this.lbl_capture.Name = "lbl_capture";
|
||||
this.lbl_capture.Size = new System.Drawing.Size(44, 13);
|
||||
this.lbl_capture.TabIndex = 2;
|
||||
this.lbl_capture.Text = "Capture";
|
||||
this.lbl_capture.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// lbl_home
|
||||
//
|
||||
this.lbl_home.AutoSize = true;
|
||||
this.lbl_home.Location = new System.Drawing.Point(15, 46);
|
||||
this.lbl_home.Name = "lbl_home";
|
||||
this.lbl_home.Size = new System.Drawing.Size(35, 13);
|
||||
this.lbl_home.TabIndex = 4;
|
||||
this.lbl_home.Text = "Home";
|
||||
this.lbl_home.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_home
|
||||
//
|
||||
this.btn_home.Location = new System.Drawing.Point(105, 41);
|
||||
this.btn_home.Name = "btn_home";
|
||||
this.btn_home.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_home.TabIndex = 3;
|
||||
this.btn_home.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sl_l
|
||||
//
|
||||
this.lbl_sl_l.AutoSize = true;
|
||||
this.lbl_sl_l.Location = new System.Drawing.Point(15, 75);
|
||||
this.lbl_sl_l.Name = "lbl_sl_l";
|
||||
this.lbl_sl_l.Size = new System.Drawing.Size(78, 13);
|
||||
this.lbl_sl_l.TabIndex = 6;
|
||||
this.lbl_sl_l.Text = "SL Left Joycon";
|
||||
this.lbl_sl_l.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sl_l
|
||||
//
|
||||
this.btn_sl_l.Location = new System.Drawing.Point(105, 70);
|
||||
this.btn_sl_l.Name = "btn_sl_l";
|
||||
this.btn_sl_l.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sl_l.TabIndex = 5;
|
||||
this.btn_sl_l.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sr_l
|
||||
//
|
||||
this.lbl_sr_l.AutoSize = true;
|
||||
this.lbl_sr_l.Location = new System.Drawing.Point(15, 104);
|
||||
this.lbl_sr_l.Name = "lbl_sr_l";
|
||||
this.lbl_sr_l.Size = new System.Drawing.Size(80, 13);
|
||||
this.lbl_sr_l.TabIndex = 8;
|
||||
this.lbl_sr_l.Text = "SR Left Joycon";
|
||||
this.lbl_sr_l.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sr_l
|
||||
//
|
||||
this.btn_sr_l.Location = new System.Drawing.Point(105, 99);
|
||||
this.btn_sr_l.Name = "btn_sr_l";
|
||||
this.btn_sr_l.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sr_l.TabIndex = 7;
|
||||
this.btn_sr_l.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sl_r
|
||||
//
|
||||
this.lbl_sl_r.AutoSize = true;
|
||||
this.lbl_sl_r.Location = new System.Drawing.Point(15, 133);
|
||||
this.lbl_sl_r.Name = "lbl_sl_r";
|
||||
this.lbl_sl_r.Size = new System.Drawing.Size(85, 13);
|
||||
this.lbl_sl_r.TabIndex = 10;
|
||||
this.lbl_sl_r.Text = "SL Right Joycon";
|
||||
this.lbl_sl_r.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sl_r
|
||||
//
|
||||
this.btn_sl_r.Location = new System.Drawing.Point(105, 128);
|
||||
this.btn_sl_r.Name = "btn_sl_r";
|
||||
this.btn_sl_r.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sl_r.TabIndex = 9;
|
||||
this.btn_sl_r.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sr_r
|
||||
//
|
||||
this.lbl_sr_r.AutoSize = true;
|
||||
this.lbl_sr_r.Location = new System.Drawing.Point(15, 162);
|
||||
this.lbl_sr_r.Name = "lbl_sr_r";
|
||||
this.lbl_sr_r.Size = new System.Drawing.Size(87, 13);
|
||||
this.lbl_sr_r.TabIndex = 12;
|
||||
this.lbl_sr_r.Text = "SR Right Joycon";
|
||||
this.lbl_sr_r.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sr_r
|
||||
//
|
||||
this.btn_sr_r.Location = new System.Drawing.Point(105, 157);
|
||||
this.btn_sr_r.Name = "btn_sr_r";
|
||||
this.btn_sr_r.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sr_r.TabIndex = 11;
|
||||
this.btn_sr_r.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btn_close
|
||||
//
|
||||
this.btn_close.Location = new System.Drawing.Point(15, 257);
|
||||
this.btn_close.Name = "btn_close";
|
||||
this.btn_close.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_close.TabIndex = 13;
|
||||
this.btn_close.Text = "Okay";
|
||||
this.btn_close.UseVisualStyleBackColor = true;
|
||||
this.btn_close.Click += new System.EventHandler(this.btn_close_Click);
|
||||
//
|
||||
// btn_apply
|
||||
//
|
||||
this.btn_apply.Location = new System.Drawing.Point(105, 257);
|
||||
this.btn_apply.Name = "btn_apply";
|
||||
this.btn_apply.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_apply.TabIndex = 14;
|
||||
this.btn_apply.Text = "Apply";
|
||||
this.btn_apply.UseVisualStyleBackColor = true;
|
||||
this.btn_apply.Click += new System.EventHandler(this.btn_apply_Click);
|
||||
//
|
||||
// lbl_reset_mouse
|
||||
//
|
||||
this.lbl_reset_mouse.AutoSize = true;
|
||||
this.lbl_reset_mouse.Location = new System.Drawing.Point(15, 191);
|
||||
this.lbl_reset_mouse.Name = "lbl_reset_mouse";
|
||||
this.lbl_reset_mouse.Size = new System.Drawing.Size(80, 13);
|
||||
this.lbl_reset_mouse.TabIndex = 16;
|
||||
this.lbl_reset_mouse.Text = "Re-Centre Gyro";
|
||||
this.lbl_reset_mouse.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_reset_mouse
|
||||
//
|
||||
this.btn_reset_mouse.Location = new System.Drawing.Point(105, 186);
|
||||
this.btn_reset_mouse.Name = "btn_reset_mouse";
|
||||
this.btn_reset_mouse.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_reset_mouse.TabIndex = 15;
|
||||
this.btn_reset_mouse.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_activate_gyro
|
||||
//
|
||||
this.lbl_activate_gyro.AutoSize = true;
|
||||
this.lbl_activate_gyro.Location = new System.Drawing.Point(14, 220);
|
||||
this.lbl_activate_gyro.Name = "lbl_activate_gyro";
|
||||
this.lbl_activate_gyro.Size = new System.Drawing.Size(71, 13);
|
||||
this.lbl_activate_gyro.TabIndex = 17;
|
||||
this.lbl_activate_gyro.Text = "Activate Gyro";
|
||||
this.lbl_activate_gyro.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_active_gyro
|
||||
//
|
||||
this.btn_active_gyro.Location = new System.Drawing.Point(105, 215);
|
||||
this.btn_active_gyro.Name = "btn_active_gyro";
|
||||
this.btn_active_gyro.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_active_gyro.TabIndex = 18;
|
||||
this.btn_active_gyro.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// Reassign
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(192, 292);
|
||||
this.Controls.Add(this.btn_active_gyro);
|
||||
this.Controls.Add(this.lbl_activate_gyro);
|
||||
this.Controls.Add(this.lbl_reset_mouse);
|
||||
this.Controls.Add(this.btn_reset_mouse);
|
||||
this.Controls.Add(this.btn_apply);
|
||||
this.Controls.Add(this.btn_close);
|
||||
this.Controls.Add(this.lbl_sr_r);
|
||||
this.Controls.Add(this.btn_sr_r);
|
||||
this.Controls.Add(this.lbl_sl_r);
|
||||
this.Controls.Add(this.btn_sl_r);
|
||||
this.Controls.Add(this.lbl_sr_l);
|
||||
this.Controls.Add(this.btn_sr_l);
|
||||
this.Controls.Add(this.lbl_sl_l);
|
||||
this.Controls.Add(this.btn_sl_l);
|
||||
this.Controls.Add(this.lbl_home);
|
||||
this.Controls.Add(this.btn_home);
|
||||
this.Controls.Add(this.lbl_capture);
|
||||
this.Controls.Add(this.btn_capture);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Reassign";
|
||||
this.Text = "Map Special Buttons";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Reassign_FormClosing);
|
||||
this.Load += new System.EventHandler(this.Reassign_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Reassign));
|
||||
this.btn_capture = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_capture = new System.Windows.Forms.Label();
|
||||
this.lbl_home = new System.Windows.Forms.Label();
|
||||
this.btn_home = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sl_l = new System.Windows.Forms.Label();
|
||||
this.btn_sl_l = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sr_l = new System.Windows.Forms.Label();
|
||||
this.btn_sr_l = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sl_r = new System.Windows.Forms.Label();
|
||||
this.btn_sl_r = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_sr_r = new System.Windows.Forms.Label();
|
||||
this.btn_sr_r = new BetterJoyForCemu.SplitButton();
|
||||
this.btn_close = new System.Windows.Forms.Button();
|
||||
this.btn_apply = new System.Windows.Forms.Button();
|
||||
this.tip_reassign = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.lbl_reset_mouse = new System.Windows.Forms.Label();
|
||||
this.btn_reset_mouse = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_activate_gyro = new System.Windows.Forms.Label();
|
||||
this.btn_active_gyro = new BetterJoyForCemu.SplitButton();
|
||||
this.lbl_shake = new System.Windows.Forms.Label();
|
||||
this.btn_shake = new BetterJoyForCemu.SplitButton();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btn_capture
|
||||
//
|
||||
this.btn_capture.Location = new System.Drawing.Point(105, 12);
|
||||
this.btn_capture.Name = "btn_capture";
|
||||
this.btn_capture.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_capture.TabIndex = 0;
|
||||
this.btn_capture.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_capture
|
||||
//
|
||||
this.lbl_capture.AutoSize = true;
|
||||
this.lbl_capture.Location = new System.Drawing.Point(15, 17);
|
||||
this.lbl_capture.Name = "lbl_capture";
|
||||
this.lbl_capture.Size = new System.Drawing.Size(44, 13);
|
||||
this.lbl_capture.TabIndex = 2;
|
||||
this.lbl_capture.Text = "Capture";
|
||||
this.lbl_capture.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// lbl_home
|
||||
//
|
||||
this.lbl_home.AutoSize = true;
|
||||
this.lbl_home.Location = new System.Drawing.Point(15, 46);
|
||||
this.lbl_home.Name = "lbl_home";
|
||||
this.lbl_home.Size = new System.Drawing.Size(35, 13);
|
||||
this.lbl_home.TabIndex = 4;
|
||||
this.lbl_home.Text = "Home";
|
||||
this.lbl_home.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_home
|
||||
//
|
||||
this.btn_home.Location = new System.Drawing.Point(105, 41);
|
||||
this.btn_home.Name = "btn_home";
|
||||
this.btn_home.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_home.TabIndex = 3;
|
||||
this.btn_home.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sl_l
|
||||
//
|
||||
this.lbl_sl_l.AutoSize = true;
|
||||
this.lbl_sl_l.Location = new System.Drawing.Point(15, 75);
|
||||
this.lbl_sl_l.Name = "lbl_sl_l";
|
||||
this.lbl_sl_l.Size = new System.Drawing.Size(78, 13);
|
||||
this.lbl_sl_l.TabIndex = 6;
|
||||
this.lbl_sl_l.Text = "SL Left Joycon";
|
||||
this.lbl_sl_l.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sl_l
|
||||
//
|
||||
this.btn_sl_l.Location = new System.Drawing.Point(105, 70);
|
||||
this.btn_sl_l.Name = "btn_sl_l";
|
||||
this.btn_sl_l.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sl_l.TabIndex = 5;
|
||||
this.btn_sl_l.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sr_l
|
||||
//
|
||||
this.lbl_sr_l.AutoSize = true;
|
||||
this.lbl_sr_l.Location = new System.Drawing.Point(15, 104);
|
||||
this.lbl_sr_l.Name = "lbl_sr_l";
|
||||
this.lbl_sr_l.Size = new System.Drawing.Size(80, 13);
|
||||
this.lbl_sr_l.TabIndex = 8;
|
||||
this.lbl_sr_l.Text = "SR Left Joycon";
|
||||
this.lbl_sr_l.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sr_l
|
||||
//
|
||||
this.btn_sr_l.Location = new System.Drawing.Point(105, 99);
|
||||
this.btn_sr_l.Name = "btn_sr_l";
|
||||
this.btn_sr_l.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sr_l.TabIndex = 7;
|
||||
this.btn_sr_l.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sl_r
|
||||
//
|
||||
this.lbl_sl_r.AutoSize = true;
|
||||
this.lbl_sl_r.Location = new System.Drawing.Point(15, 133);
|
||||
this.lbl_sl_r.Name = "lbl_sl_r";
|
||||
this.lbl_sl_r.Size = new System.Drawing.Size(85, 13);
|
||||
this.lbl_sl_r.TabIndex = 10;
|
||||
this.lbl_sl_r.Text = "SL Right Joycon";
|
||||
this.lbl_sl_r.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sl_r
|
||||
//
|
||||
this.btn_sl_r.Location = new System.Drawing.Point(105, 128);
|
||||
this.btn_sl_r.Name = "btn_sl_r";
|
||||
this.btn_sl_r.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sl_r.TabIndex = 9;
|
||||
this.btn_sl_r.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_sr_r
|
||||
//
|
||||
this.lbl_sr_r.AutoSize = true;
|
||||
this.lbl_sr_r.Location = new System.Drawing.Point(15, 162);
|
||||
this.lbl_sr_r.Name = "lbl_sr_r";
|
||||
this.lbl_sr_r.Size = new System.Drawing.Size(87, 13);
|
||||
this.lbl_sr_r.TabIndex = 12;
|
||||
this.lbl_sr_r.Text = "SR Right Joycon";
|
||||
this.lbl_sr_r.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_sr_r
|
||||
//
|
||||
this.btn_sr_r.Location = new System.Drawing.Point(105, 157);
|
||||
this.btn_sr_r.Name = "btn_sr_r";
|
||||
this.btn_sr_r.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_sr_r.TabIndex = 11;
|
||||
this.btn_sr_r.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btn_close
|
||||
//
|
||||
this.btn_close.Location = new System.Drawing.Point(15, 289);
|
||||
this.btn_close.Name = "btn_close";
|
||||
this.btn_close.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_close.TabIndex = 13;
|
||||
this.btn_close.Text = "Okay";
|
||||
this.btn_close.UseVisualStyleBackColor = true;
|
||||
this.btn_close.Click += new System.EventHandler(this.btn_close_Click);
|
||||
//
|
||||
// btn_apply
|
||||
//
|
||||
this.btn_apply.Location = new System.Drawing.Point(105, 289);
|
||||
this.btn_apply.Name = "btn_apply";
|
||||
this.btn_apply.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_apply.TabIndex = 14;
|
||||
this.btn_apply.Text = "Apply";
|
||||
this.btn_apply.UseVisualStyleBackColor = true;
|
||||
this.btn_apply.Click += new System.EventHandler(this.btn_apply_Click);
|
||||
//
|
||||
// lbl_reset_mouse
|
||||
//
|
||||
this.lbl_reset_mouse.AutoSize = true;
|
||||
this.lbl_reset_mouse.Location = new System.Drawing.Point(15, 223);
|
||||
this.lbl_reset_mouse.Name = "lbl_reset_mouse";
|
||||
this.lbl_reset_mouse.Size = new System.Drawing.Size(80, 13);
|
||||
this.lbl_reset_mouse.TabIndex = 16;
|
||||
this.lbl_reset_mouse.Text = "Re-Centre Gyro";
|
||||
this.lbl_reset_mouse.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_reset_mouse
|
||||
//
|
||||
this.btn_reset_mouse.Location = new System.Drawing.Point(105, 218);
|
||||
this.btn_reset_mouse.Name = "btn_reset_mouse";
|
||||
this.btn_reset_mouse.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_reset_mouse.TabIndex = 15;
|
||||
this.btn_reset_mouse.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lbl_activate_gyro
|
||||
//
|
||||
this.lbl_activate_gyro.AutoSize = true;
|
||||
this.lbl_activate_gyro.Location = new System.Drawing.Point(14, 252);
|
||||
this.lbl_activate_gyro.Name = "lbl_activate_gyro";
|
||||
this.lbl_activate_gyro.Size = new System.Drawing.Size(71, 13);
|
||||
this.lbl_activate_gyro.TabIndex = 17;
|
||||
this.lbl_activate_gyro.Text = "Activate Gyro";
|
||||
this.lbl_activate_gyro.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// btn_active_gyro
|
||||
//
|
||||
this.btn_active_gyro.Location = new System.Drawing.Point(105, 247);
|
||||
this.btn_active_gyro.Name = "btn_active_gyro";
|
||||
this.btn_active_gyro.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_active_gyro.TabIndex = 18;
|
||||
this.btn_active_gyro.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.lbl_shake.AutoSize = true;
|
||||
this.lbl_shake.Location = new System.Drawing.Point(15, 191);
|
||||
this.lbl_shake.Name = "lbl_shake";
|
||||
this.lbl_shake.Size = new System.Drawing.Size(87, 13);
|
||||
this.lbl_shake.TabIndex = 20;
|
||||
this.lbl_shake.Text = "Shake Input";
|
||||
this.lbl_shake.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// splitButton1
|
||||
//
|
||||
this.btn_shake.Location = new System.Drawing.Point(105, 186);
|
||||
this.btn_shake.Name = "btn_shake";
|
||||
this.btn_shake.Size = new System.Drawing.Size(75, 23);
|
||||
this.btn_shake.TabIndex = 19;
|
||||
this.btn_shake.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// Reassign
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(192, 338);
|
||||
this.Controls.Add(this.lbl_shake);
|
||||
this.Controls.Add(this.btn_shake);
|
||||
this.Controls.Add(this.btn_active_gyro);
|
||||
this.Controls.Add(this.lbl_activate_gyro);
|
||||
this.Controls.Add(this.lbl_reset_mouse);
|
||||
this.Controls.Add(this.btn_reset_mouse);
|
||||
this.Controls.Add(this.btn_apply);
|
||||
this.Controls.Add(this.btn_close);
|
||||
this.Controls.Add(this.lbl_sr_r);
|
||||
this.Controls.Add(this.btn_sr_r);
|
||||
this.Controls.Add(this.lbl_sl_r);
|
||||
this.Controls.Add(this.btn_sl_r);
|
||||
this.Controls.Add(this.lbl_sr_l);
|
||||
this.Controls.Add(this.btn_sr_l);
|
||||
this.Controls.Add(this.lbl_sl_l);
|
||||
this.Controls.Add(this.btn_sl_l);
|
||||
this.Controls.Add(this.lbl_home);
|
||||
this.Controls.Add(this.btn_home);
|
||||
this.Controls.Add(this.lbl_capture);
|
||||
this.Controls.Add(this.btn_capture);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Reassign";
|
||||
this.Text = "Map Special Buttons";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Reassign_FormClosing);
|
||||
this.Load += new System.EventHandler(this.Reassign_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
|
@ -323,5 +345,7 @@ namespace BetterJoyForCemu {
|
|||
private SplitButton btn_reset_mouse;
|
||||
private Label lbl_activate_gyro;
|
||||
private SplitButton btn_active_gyro;
|
||||
}
|
||||
}
|
||||
private Label lbl_shake;
|
||||
private SplitButton btn_shake;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ namespace BetterJoyForCemu {
|
|||
|
||||
menu_joy_buttons.ItemClicked += Menu_joy_buttons_ItemClicked;
|
||||
|
||||
foreach (SplitButton c in new SplitButton[] { btn_capture, btn_home, btn_sl_l, btn_sl_r, btn_sr_l, btn_sr_r, btn_reset_mouse, btn_active_gyro }) {
|
||||
foreach (SplitButton c in new SplitButton[] { btn_capture, btn_home, btn_sl_l, btn_sl_r, btn_sr_l, btn_sr_r, btn_shake, btn_reset_mouse, btn_active_gyro }) {
|
||||
c.Tag = c.Name.Substring(4);
|
||||
GetPrettyName(c);
|
||||
|
||||
|
|
|
@ -24,7 +24,8 @@ Go to the [Releases tab](https://github.com/Davidobot/BetterJoy/releases/)!
|
|||
1. Install drivers
|
||||
1. Read the READMEs (they're there for a reason!)
|
||||
1. Run *Drivers/ViGEmBus_Setup_1.16.116.exe*
|
||||
2. Run *BetterJoyForCemu.exe*
|
||||
2. Run *BetterJoyForCemu.exe*
|
||||
1. Run as Administrator if your keyboard/mouse button mappings don't work
|
||||
3. Connect your controllers.
|
||||
4. Start Cemu and ensure CemuHook has the controller selected.
|
||||
1. If using Joycons, CemuHook will detect two controllers - each will give all buttons, but choosing one over the other just chooses preference for which hand to use for gyro controls.
|
||||
|
|
Loading…
Add table
Reference in a new issue