1200 lines
31 KiB
C#
1200 lines
31 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
|
|
using BizHawk.Emulation.Common;
|
|
using BizHawk.Emulation.Cores.Nintendo.NES;
|
|
using BizHawk.Emulation.Cores.Nintendo.SubNESHawk;
|
|
using BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES;
|
|
|
|
namespace BizHawk.Client.EmuHawk
|
|
{
|
|
[Schema("NES")]
|
|
public class NesSchema : IVirtualPadSchema
|
|
{
|
|
public IEnumerable<PadSchema> GetPadSchemas(IEmulator core)
|
|
{
|
|
if (core is NES)
|
|
{
|
|
var nes = (NES)core;
|
|
|
|
var ss = nes.GetSyncSettings();
|
|
|
|
var isFds = nes.IsFDS;
|
|
if (ss.Controls.Famicom)
|
|
{
|
|
yield return StandardController(1);
|
|
yield return Famicom2ndController();
|
|
|
|
switch (ss.Controls.FamicomExpPort)
|
|
{
|
|
default:
|
|
case "UnpluggedFam":
|
|
break;
|
|
case "Zapper":
|
|
yield return Zapper(3);
|
|
break;
|
|
case "ArkanoidFam":
|
|
yield return ArkanoidPaddle(3);
|
|
break;
|
|
case "Famicom4P":
|
|
yield return StandardController(3);
|
|
yield return StandardController(4);
|
|
break;
|
|
case "FamilyBasicKeyboard":
|
|
yield return FamicomFamilyKeyboard(3);
|
|
break;
|
|
case "OekaKids":
|
|
yield return OekaKidsTablet(3);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var currentControlerNo = 1;
|
|
switch (ss.Controls.NesLeftPort)
|
|
{
|
|
default:
|
|
case "UnpluggedNES":
|
|
break;
|
|
case "ControllerNES":
|
|
yield return StandardController(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "Zapper":
|
|
yield return Zapper(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "ArkanoidNES":
|
|
yield return ArkanoidPaddle(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "FourScore":
|
|
yield return StandardController(1);
|
|
yield return StandardController(2);
|
|
currentControlerNo += 2;
|
|
break;
|
|
case "PowerPad":
|
|
yield return PowerPad(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "ControllerSNES":
|
|
throw new Exception("TODO");
|
|
}
|
|
|
|
switch (ss.Controls.NesRightPort)
|
|
{
|
|
default:
|
|
case "UnpluggedNES":
|
|
break;
|
|
case "ControllerNES":
|
|
yield return StandardController(currentControlerNo);
|
|
break;
|
|
case "Zapper":
|
|
yield return Zapper(currentControlerNo);
|
|
break;
|
|
case "ArkanoidNES":
|
|
yield return ArkanoidPaddle(currentControlerNo);
|
|
break;
|
|
case "FourScore":
|
|
yield return StandardController(currentControlerNo);
|
|
yield return StandardController(currentControlerNo + 1);
|
|
currentControlerNo += 2;
|
|
break;
|
|
case "PowerPad":
|
|
yield return PowerPad(currentControlerNo);
|
|
break;
|
|
case "ControllerSNES":
|
|
throw new Exception("TODO");
|
|
}
|
|
|
|
if (currentControlerNo == 0)
|
|
{
|
|
yield return null;
|
|
}
|
|
}
|
|
|
|
if (isFds)
|
|
{
|
|
yield return FdsConsoleButtons(core.ControllerDefinition.BoolButtons.Count(b => b.StartsWith("FDS Insert ")));
|
|
}
|
|
else
|
|
{
|
|
yield return NesConsoleButtons();
|
|
}
|
|
}
|
|
else if (core is SubNESHawk)
|
|
{
|
|
{
|
|
var nes = (SubNESHawk)core;
|
|
|
|
var ss = nes.GetSyncSettings();
|
|
|
|
var isFds = nes.IsFDS;
|
|
if (ss.Controls.Famicom)
|
|
{
|
|
yield return StandardController(1);
|
|
yield return Famicom2ndController();
|
|
|
|
switch (ss.Controls.FamicomExpPort)
|
|
{
|
|
default:
|
|
case "UnpluggedFam":
|
|
break;
|
|
case "Zapper":
|
|
yield return Zapper(3);
|
|
break;
|
|
case "ArkanoidFam":
|
|
yield return ArkanoidPaddle(3);
|
|
break;
|
|
case "Famicom4P":
|
|
yield return StandardController(3);
|
|
yield return StandardController(4);
|
|
break;
|
|
case "FamilyBasicKeyboard":
|
|
yield return FamicomFamilyKeyboard(3);
|
|
break;
|
|
case "OekaKids":
|
|
yield return OekaKidsTablet(3);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var currentControlerNo = 1;
|
|
switch (ss.Controls.NesLeftPort)
|
|
{
|
|
default:
|
|
case "UnpluggedNES":
|
|
break;
|
|
case "ControllerNES":
|
|
yield return StandardController(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "Zapper":
|
|
yield return Zapper(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "ArkanoidNES":
|
|
yield return ArkanoidPaddle(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "FourScore":
|
|
yield return StandardController(1);
|
|
yield return StandardController(2);
|
|
currentControlerNo += 2;
|
|
break;
|
|
case "PowerPad":
|
|
yield return PowerPad(1);
|
|
currentControlerNo++;
|
|
break;
|
|
case "ControllerSNES":
|
|
throw new Exception("TODO");
|
|
}
|
|
|
|
switch (ss.Controls.NesRightPort)
|
|
{
|
|
default:
|
|
case "UnpluggedNES":
|
|
break;
|
|
case "ControllerNES":
|
|
yield return StandardController(currentControlerNo);
|
|
break;
|
|
case "Zapper":
|
|
yield return Zapper(currentControlerNo);
|
|
break;
|
|
case "ArkanoidNES":
|
|
yield return ArkanoidPaddle(currentControlerNo);
|
|
break;
|
|
case "FourScore":
|
|
yield return StandardController(currentControlerNo);
|
|
yield return StandardController(currentControlerNo + 1);
|
|
currentControlerNo += 2;
|
|
break;
|
|
case "PowerPad":
|
|
yield return PowerPad(currentControlerNo);
|
|
break;
|
|
case "ControllerSNES":
|
|
throw new Exception("TODO");
|
|
}
|
|
|
|
if (currentControlerNo == 0)
|
|
{
|
|
yield return null;
|
|
}
|
|
}
|
|
|
|
if (isFds)
|
|
{
|
|
yield return FdsConsoleButtons(core.ControllerDefinition.BoolButtons.Count(b => b.StartsWith("FDS Insert ")));
|
|
}
|
|
else
|
|
{
|
|
yield return NesConsoleButtons();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
// Quicknes Can support none, one or two controllers.
|
|
{
|
|
var ss = ((QuickNES)core).GetSyncSettings();
|
|
if (ss.LeftPortConnected == true && ss.RightPortConnected == true)
|
|
{
|
|
// Set both controllers
|
|
yield return StandardController(1);
|
|
yield return StandardController(2);
|
|
}
|
|
else if (ss.LeftPortConnected == true && ss.RightPortConnected == false)
|
|
{
|
|
yield return StandardController(1);
|
|
}
|
|
else if (ss.LeftPortConnected == false && ss.RightPortConnected == true)
|
|
{
|
|
yield return StandardController(1);
|
|
}
|
|
|
|
yield return NesConsoleButtons();
|
|
}
|
|
}
|
|
|
|
private static PadSchema NesConsoleButtons()
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Console",
|
|
IsConsole = true,
|
|
DefaultSize = new Size(150, 50),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = "Reset",
|
|
DisplayName = "Reset",
|
|
Location = new Point(10, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = "Power",
|
|
DisplayName = "Power",
|
|
Location = new Point(58, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema FdsConsoleButtons(int diskSize)
|
|
{
|
|
var buttons = new List<PadSchema.ButtonSchema>
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = "Reset",
|
|
DisplayName = "Reset",
|
|
Location = new Point(10, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = "Power",
|
|
DisplayName = "Power",
|
|
Location = new Point(58, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = "FDS Eject",
|
|
DisplayName = "Eject",
|
|
Location = new Point(108, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
};
|
|
|
|
for (var i = 0; i < diskSize; i++)
|
|
{
|
|
buttons.Add(new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"FDS Insert {i}",
|
|
DisplayName = $"Insert {i}",
|
|
Location = new Point(10 + (i * 58), 50),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
});
|
|
}
|
|
|
|
var width = 20 + (diskSize * 58);
|
|
if (width < 160)
|
|
{
|
|
width = 160;
|
|
}
|
|
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Console",
|
|
IsConsole = true,
|
|
DefaultSize = new Size(width, 100),
|
|
Buttons = buttons
|
|
};
|
|
}
|
|
|
|
private static PadSchema StandardController(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = $"Player {controller}",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(174, 74),
|
|
MaxSize = new Size(174, 74),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Up",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.BlueUp,
|
|
Location = new Point(23, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Down",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.BlueDown,
|
|
Location = new Point(23, 36),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Left",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.Back,
|
|
Location = new Point(2, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Right",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.Forward,
|
|
Location = new Point(44, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} B",
|
|
DisplayName = "B",
|
|
Location = new Point(124, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} A",
|
|
DisplayName = "A",
|
|
Location = new Point(147, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Select",
|
|
DisplayName = "s",
|
|
Location = new Point(72, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Start",
|
|
DisplayName = "S",
|
|
Location = new Point(93, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema Famicom2ndController()
|
|
{
|
|
var controller = 2;
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Player 2",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(174, 74),
|
|
MaxSize = new Size(174, 74),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Up",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.BlueUp,
|
|
Location = new Point(23, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Down",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.BlueDown,
|
|
Location = new Point(23, 36),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Left",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.Back,
|
|
Location = new Point(2, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Right",
|
|
DisplayName = "",
|
|
Icon = Properties.Resources.Forward,
|
|
Location = new Point(44, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} B",
|
|
DisplayName = "B",
|
|
Location = new Point(124, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} A",
|
|
DisplayName = "A",
|
|
Location = new Point(147, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Microphone",
|
|
DisplayName = "Mic",
|
|
Location = new Point(72, 24),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema Zapper(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Zapper",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(356, 290),
|
|
MaxSize = new Size(356, 290),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Zapper X",
|
|
Location = new Point(14, 17),
|
|
Type = PadSchema.PadInputType.TargetedPair,
|
|
TargetSize = new Size(256, 240),
|
|
SecondaryNames = new[]
|
|
{
|
|
$"P{controller} Zapper Y",
|
|
}
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Fire",
|
|
DisplayName = "Fire",
|
|
Location = new Point(284, 17),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema ArkanoidPaddle(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Arkanoid Paddle",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(380, 110),
|
|
MaxSize = new Size(380, 110),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Paddle",
|
|
DisplayName = "Arkanoid Paddle",
|
|
Location = new Point(14, 17),
|
|
Type = PadSchema.PadInputType.FloatSingle,
|
|
TargetSize = new Size(380, 69),
|
|
MaxValue = 160
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Fire",
|
|
DisplayName = "Fire",
|
|
Location = new Point(14, 85),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema PowerPad(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Power Pad",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(154, 114),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP1",
|
|
DisplayName = "1 ",
|
|
Location = new Point(14, 17),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP2",
|
|
DisplayName = "2 ",
|
|
Location = new Point(45, 17),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP3",
|
|
DisplayName = "3 ",
|
|
Location = new Point(76, 17),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP4",
|
|
DisplayName = "4 ",
|
|
Location = new Point(107, 17),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP5",
|
|
DisplayName = "5 ",
|
|
Location = new Point(14, 48),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP6",
|
|
DisplayName = "6 ",
|
|
Location = new Point(45, 48),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP7",
|
|
DisplayName = "7 ",
|
|
Location = new Point(76, 48),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP8",
|
|
DisplayName = "8 ",
|
|
Location = new Point(107, 48),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP9",
|
|
DisplayName = "9 ",
|
|
Location = new Point(14, 79),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP10",
|
|
DisplayName = "10",
|
|
Location = new Point(45, 79),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP11",
|
|
DisplayName = "11",
|
|
Location = new Point(76, 79),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} PP12",
|
|
DisplayName = "12",
|
|
Location = new Point(107, 79),
|
|
Type = PadSchema.PadInputType.Boolean,
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema OekaKidsTablet(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Tablet",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(356, 290),
|
|
MaxSize = new Size(356, 290),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Pen X",
|
|
Location = new Point(14, 17),
|
|
Type = PadSchema.PadInputType.TargetedPair,
|
|
TargetSize = new Size(256, 240),
|
|
SecondaryNames = new[]
|
|
{
|
|
$"P{controller} Pen Y",
|
|
}
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Click",
|
|
DisplayName = "Click",
|
|
Location = new Point(284, 17),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Touch",
|
|
DisplayName = "Touch",
|
|
Location = new Point(284, 48),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema FamicomFamilyKeyboard(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Family Basic Keyboard",
|
|
IsConsole = false,
|
|
DefaultSize = new Size(560, 180),
|
|
Buttons = new[]
|
|
{
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F1",
|
|
DisplayName = " F1 ",
|
|
Location = new Point(23, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F2",
|
|
DisplayName = " F2 ",
|
|
Location = new Point(76, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F3",
|
|
DisplayName = " F3 ",
|
|
Location = new Point(129, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F4",
|
|
DisplayName = " F4 ",
|
|
Location = new Point(182, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F5",
|
|
DisplayName = " F5 ",
|
|
Location = new Point(235, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F6",
|
|
DisplayName = " F6 ",
|
|
Location = new Point(288, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F7",
|
|
DisplayName = " F7 ",
|
|
Location = new Point(341, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F8",
|
|
DisplayName = " F8 ",
|
|
Location = new Point(394, 15),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 1",
|
|
DisplayName = "1",
|
|
Location = new Point(36, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 2",
|
|
DisplayName = "2",
|
|
Location = new Point(60, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 3",
|
|
DisplayName = "3",
|
|
Location = new Point(84, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 4",
|
|
DisplayName = "4",
|
|
Location = new Point(108, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 5",
|
|
DisplayName = "5",
|
|
Location = new Point(132, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 6",
|
|
DisplayName = "6",
|
|
Location = new Point(156, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 7",
|
|
DisplayName = "7",
|
|
Location = new Point(180, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 8",
|
|
DisplayName = "8",
|
|
Location = new Point(204, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 9",
|
|
DisplayName = "9",
|
|
Location = new Point(228, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} 0",
|
|
DisplayName = "0",
|
|
Location = new Point(252, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Minus",
|
|
DisplayName = "-",
|
|
Location = new Point(276, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Caret",
|
|
DisplayName = "^",
|
|
Location = new Point(296, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Yen",
|
|
DisplayName = "¥",
|
|
Location = new Point(320, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Stop",
|
|
DisplayName = "STOP",
|
|
Location = new Point(344, 38),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Escape",
|
|
DisplayName = "ESC",
|
|
Location = new Point(15, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Q",
|
|
DisplayName = "Q",
|
|
Location = new Point(54, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} W",
|
|
DisplayName = "W",
|
|
Location = new Point(80, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} E",
|
|
DisplayName = "E",
|
|
Location = new Point(108, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} R",
|
|
DisplayName = "R",
|
|
Location = new Point(132, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} T",
|
|
DisplayName = "T",
|
|
Location = new Point(158, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Y",
|
|
DisplayName = "Y",
|
|
Location = new Point(182, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} U",
|
|
DisplayName = "U",
|
|
Location = new Point(206, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} I",
|
|
DisplayName = "I",
|
|
Location = new Point(232, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} O",
|
|
DisplayName = "O",
|
|
Location = new Point(252, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} P",
|
|
DisplayName = "P",
|
|
Location = new Point(278, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} At",
|
|
DisplayName = "@",
|
|
Location = new Point(302, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Left Bracket",
|
|
DisplayName = "[",
|
|
Location = new Point(330, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Return",
|
|
DisplayName = "RETURN",
|
|
Location = new Point(350, 61),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Control",
|
|
DisplayName = "CTR",
|
|
Location = new Point(30, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} A",
|
|
DisplayName = "A",
|
|
Location = new Point(70, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} S",
|
|
DisplayName = "S",
|
|
Location = new Point(94, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} D",
|
|
DisplayName = "D",
|
|
Location = new Point(118, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} F",
|
|
DisplayName = "F",
|
|
Location = new Point(144, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} G",
|
|
DisplayName = "G",
|
|
Location = new Point(168, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} H",
|
|
DisplayName = "H",
|
|
Location = new Point(194, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} J",
|
|
DisplayName = "J",
|
|
Location = new Point(220, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} K",
|
|
DisplayName = "K",
|
|
Location = new Point(242, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} L",
|
|
DisplayName = "L",
|
|
Location = new Point(266, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Semicolon",
|
|
DisplayName = ";",
|
|
Location = new Point(290, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Colon",
|
|
DisplayName = ":",
|
|
Location = new Point(311, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Right Bracket",
|
|
DisplayName = "]",
|
|
Location = new Point(332, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} カナ",
|
|
DisplayName = "カナ",
|
|
Location = new Point(352, 84),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Left Shift",
|
|
DisplayName = "SHIFT",
|
|
Location = new Point(10, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Z",
|
|
DisplayName = "Z",
|
|
Location = new Point(58, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} X",
|
|
DisplayName = "X",
|
|
Location = new Point(82, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} C",
|
|
DisplayName = "C",
|
|
Location = new Point(106, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} V",
|
|
DisplayName = "V",
|
|
Location = new Point(130, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} B",
|
|
DisplayName = "B",
|
|
Location = new Point(154, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} N",
|
|
DisplayName = "N",
|
|
Location = new Point(178, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} M",
|
|
DisplayName = "M",
|
|
Location = new Point(203, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Comma",
|
|
DisplayName = ",",
|
|
Location = new Point(229, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Period",
|
|
DisplayName = ".",
|
|
Location = new Point(249, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Slash",
|
|
DisplayName = "/",
|
|
Location = new Point(270, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Underscore",
|
|
DisplayName = "_",
|
|
Location = new Point(292, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Right Shift",
|
|
DisplayName = "SHIFT",
|
|
Location = new Point(316, 107),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Graph",
|
|
DisplayName = "GRPH",
|
|
Location = new Point(82, 130),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Space",
|
|
DisplayName = " SPACE ",
|
|
Location = new Point(130, 130),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Clear/Home",
|
|
DisplayName = " CLR\nHOME",
|
|
Location = new Point(420, 46),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Insert",
|
|
DisplayName = "\nINS",
|
|
Location = new Point(470, 46),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Delete",
|
|
DisplayName = "\nDEL",
|
|
Location = new Point(506, 46),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Up",
|
|
DisplayName = " ↑ ",
|
|
Location = new Point(468, 86),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Down",
|
|
DisplayName = " ↓ ",
|
|
Location = new Point(468, 134),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Left",
|
|
DisplayName = " ← ",
|
|
Location = new Point(446, 110),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
},
|
|
new PadSchema.ButtonSchema
|
|
{
|
|
Name = $"P{controller} Right",
|
|
DisplayName = " ➝ ",
|
|
Location = new Point(488, 110),
|
|
Type = PadSchema.PadInputType.Boolean
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|