using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using DS4WinWPF.DS4Forms.ViewModels;
namespace DS4WinWPF.DS4Forms
{
///
/// Interaction logic for BindingWindow.xaml
///
public partial class BindingWindow : Window
{
private Dictionary associatedBindings =
new Dictionary();
private Dictionary keyBtnMap = new Dictionary();
private Dictionary conBtnMap =
new Dictionary();
private Dictionary mouseBtnMap =
new Dictionary();
private BindingWindowViewModel bindingVM;
private Button highlightBtn;
private ExposeMode expose;
public enum ExposeMode : uint
{
Full,
Keyboard,
}
public BindingWindow(int deviceNum, DS4Windows.DS4ControlSettings settings,
ExposeMode expose = ExposeMode.Full)
{
InitializeComponent();
this.expose = expose;
bindingVM = new BindingWindowViewModel(deviceNum, settings);
if (settings.control != DS4Windows.DS4Controls.None)
{
Title = $"Select action for {DS4Windows.Global.ds4inputNames[settings.control]}";
}
else
{
Title = "Select action";
}
guideBtn.Content = "";
highlightImg.Visibility = Visibility.Hidden;
highlightLb.Visibility = Visibility.Hidden;
if (expose == ExposeMode.Full)
{
InitButtonBindings();
}
InitKeyBindings();
InitInfoMaps();
if (!bindingVM.Using360Mode)
{
InitDS4Canvas();
}
bindingVM.ActionBinding = bindingVM.CurrentOutBind;
if (expose == ExposeMode.Full)
{
regBindRadio.IsChecked = !bindingVM.ShowShift;
shiftBindRadio.IsChecked = bindingVM.ShowShift;
}
else
{
//topGrid.Visibility = Visibility.Collapsed;
topGrid.ColumnDefinitions.RemoveAt(3);
keyMouseTopTxt.Visibility = Visibility.Collapsed;
macroOnLb.Visibility = Visibility.Collapsed;
recordMacroBtn.Visibility = Visibility.Collapsed;
mouseCanvas.Visibility = Visibility.Collapsed;
bottomPanel.Visibility = Visibility.Collapsed;
extrasSidePanel.Visibility = Visibility.Collapsed;
mouseGridColumn.Width = new GridLength(0);
//otherKeysMouseGrid.Columns = 2;
Width = 950;
Height = 300;
}
ChangeForCurrentAction();
}
private void OutConBtn_MouseEnter(object sender, MouseEventArgs e)
{
Button button = sender as Button;
//string name = button.Tag.ToString();
string name = GetControlString(button);
highlightLb.Content = name;
double left = Canvas.GetLeft(button);
double top = Canvas.GetTop(button);
Canvas.SetLeft(highlightImg, left + (button.Width / 2.0) - (highlightImg.Height / 2.0));
Canvas.SetTop(highlightImg, top + (button.Height / 2.0) - (highlightImg.Height / 2.0));
Canvas.SetLeft(highlightLb, left + (button.Width / 2.0) - (highlightLb.ActualWidth / 2.0));
Canvas.SetTop(highlightLb, top - 30);
highlightImg.Visibility = Visibility.Visible;
highlightLb.Visibility = Visibility.Visible;
}
private string GetControlString(Button button)
{
string result;
if (bindingVM.Using360Mode)
{
DS4Windows.X360Controls xboxcontrol = associatedBindings[button].control;
result = DS4Windows.Global.xboxDefaultNames[xboxcontrol];
}
else
{
DS4Windows.X360Controls xboxcontrol = associatedBindings[button].control;
result = DS4Windows.Global.ds4DefaultNames[xboxcontrol];
}
return result;
}
private void OutConBtn_MouseLeave(object sender, MouseEventArgs e)
{
highlightImg.Visibility = Visibility.Hidden;
highlightLb.Visibility = Visibility.Hidden;
}
private void OutputKeyBtn_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
OutBinding binding = bindingVM.ActionBinding;
binding.outputType = OutBinding.OutType.Key;
if (associatedBindings.TryGetValue(button, out BindAssociation bind))
{
binding.outputType = OutBinding.OutType.Key;
binding.outkey = bind.outkey;
}
Close();
}
private void OutputButtonBtn_Click(object sender, RoutedEventArgs e)
{
OutBinding binding = bindingVM.ActionBinding;
DS4Windows.X360Controls defaultControl = DS4Windows.Global.defaultButtonMapping[(int)binding.input];
Button button = sender as Button;
if (associatedBindings.TryGetValue(button, out BindAssociation bind))
{
if (defaultControl == bind.control)
{
binding.outputType = OutBinding.OutType.Default;
}
else
{
binding.outputType = OutBinding.OutType.Button;
binding.control = bind.control;
}
}
Close();
}
private void ChangeForCurrentAction()
{
OutBinding bind = bindingVM.ActionBinding;
topOptsPanel.DataContext = bind;
if (expose == ExposeMode.Full)
{
extrasGB.DataContext = bind;
modePanel.DataContext = bind;
shiftTriggerCombo.Visibility = bind.IsShift() ? Visibility.Visible : Visibility.Hidden;
macroOnLb.DataContext = bind;
}
FindCurrentHighlightButton();
}
private void FindCurrentHighlightButton()
{
if (highlightBtn != null)
{
highlightBtn.Background = SystemColors.ControlBrush;
}
OutBinding binding = bindingVM.ActionBinding;
if (binding.outputType == OutBinding.OutType.Default)
{
DS4Windows.X360Controls defaultBind = DS4Windows.Global.defaultButtonMapping[(int)binding.input];
if (!OutBinding.IsMouseRange(defaultBind))
{
if (conBtnMap.TryGetValue(defaultBind, out Button tempBtn))
{
OutConBtn_MouseEnter(tempBtn, null);
//tempBtn.Background = new SolidColorBrush(Colors.LimeGreen);
}
}
else
{
if (mouseBtnMap.TryGetValue(defaultBind, out Button tempBtn))
{
tempBtn.Background = new SolidColorBrush(Colors.LimeGreen);
highlightBtn = tempBtn;
}
}
}
else if (binding.outputType == OutBinding.OutType.Button)
{
if (!binding.IsMouse())
{
if (conBtnMap.TryGetValue(binding.control, out Button tempBtn))
{
OutConBtn_MouseEnter(tempBtn, null);
//tempBtn.Background = new SolidColorBrush(Colors.LimeGreen);
}
}
else
{
if (mouseBtnMap.TryGetValue(binding.control, out Button tempBtn))
{
tempBtn.Background = new SolidColorBrush(Colors.LimeGreen);
highlightBtn = tempBtn;
}
}
}
else if (binding.outputType == OutBinding.OutType.Key)
{
if (keyBtnMap.TryGetValue(binding.outkey, out Button tempBtn))
{
tempBtn.Background = new SolidColorBrush(Colors.LimeGreen);
highlightBtn = tempBtn;
}
}
}
private void InitInfoMaps()
{
foreach(KeyValuePair pair in associatedBindings)
{
Button button = pair.Key;
BindAssociation binding = pair.Value;
if (binding.outputType == BindAssociation.OutType.Button)
{
if (!binding.IsMouse())
{
conBtnMap.Add(binding.control, button);
}
else
{
mouseBtnMap.Add(binding.control, button);
}
}
else if (binding.outputType == BindAssociation.OutType.Key)
{
if (!keyBtnMap.ContainsKey(binding.outkey))
{
keyBtnMap.Add(binding.outkey, button);
}
}
}
}
private void InitButtonBindings()
{
associatedBindings.Add(aBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.A });
aBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(bBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.B });
bBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(xBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.X });
xBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(yBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.Y });
yBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(lbBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LB });
lbBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(ltBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LT });
ltBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rbBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RB });
rbBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rtBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RT });
rtBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(backBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.Back });
backBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(startBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.Start });
startBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(guideBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.Guide });
guideBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(lsbBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LS });
lsbBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(lsuBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LYNeg });
lsuBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(lsrBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LXPos });
lsrBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(lsdBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LYPos });
lsdBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(lslBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LXNeg });
lslBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(dpadUBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.DpadUp });
dpadUBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(dpadRBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.DpadRight });
dpadRBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(dpadDBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.DpadDown });
dpadDBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(dpadLBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.DpadLeft });
dpadLBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rsbBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RS });
rsbBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rsuBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RYNeg });
rsuBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rsrBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RXPos });
rsrBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rsdBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RYPos });
rsdBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(rslBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RXNeg });
rslBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseUpBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.MouseUp });
mouseUpBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseDownBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.MouseDown });
mouseDownBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseLeftBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.MouseLeft });
mouseLeftBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseRightBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.MouseRight });
mouseRightBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseLBBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.LeftMouse });
mouseLBBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseMBBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.MiddleMouse });
mouseMBBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseRBBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.RightMouse });
mouseRBBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouse4Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.FourthMouse });
mouse4Btn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouse5Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.FifthMouse });
mouse5Btn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseWheelUBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.WUP });
mouseWheelUBtn.Click += OutputButtonBtn_Click;
associatedBindings.Add(mouseWheelDBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Button, control = DS4Windows.X360Controls.WDOWN });
mouseWheelDBtn.Click += OutputButtonBtn_Click;
}
private void InitKeyBindings()
{
associatedBindings.Add(escBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x1B });
escBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f1Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x70 });
f1Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f2Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x71 });
f2Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f3Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x72 });
f3Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f4Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x73 });
f4Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f5Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x74 });
f5Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f6Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x75 });
f6Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f7Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x76 });
f7Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f8Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x77 });
f8Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f9Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x78 });
f9Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f10Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x79 });
f10Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f11Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x7A });
f11Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(f12Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x7B });
f12Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(oem3Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xC0 });
oem3Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(oneBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x31 });
oneBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(twoBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x32 });
twoBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(threeBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x33 });
threeBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(fourBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x34 });
fourBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(fiveBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x35 });
fiveBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(sixBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x36 });
sixBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(sevenBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x37 });
sevenBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(eightBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x38 });
eightBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(nineBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x39 });
nineBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(zeroBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x30 });
zeroBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(minusBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xBD });
minusBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(equalBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xBB });
equalBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(bsBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x08 });
bsBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(tabBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x09 });
tabBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(qKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x51 });
qKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(wKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x57 });
wKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(eKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x45 });
eKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(rKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x52 });
rKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(tKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x54 });
tKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(yKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x59 });
yKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(uKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x55 });
uKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(iKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x49 });
iKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(oKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x4F });
oKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(pKey,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x50 });
pKey.Click += OutputKeyBtn_Click;
associatedBindings.Add(lbracketBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xDB });
lbracketBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(rbracketBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xDD });
rbracketBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(bSlashBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xDC });
bSlashBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(capsLBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x14 });
capsLBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(aKeyBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x41 });
aKeyBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(sBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x53 });
sBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(dBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x44 });
dBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(fBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x46 });
fBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(gBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x47 });
gBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(hBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x48 });
hBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(jBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x4A });
jBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(kBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x4B });
kBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(lBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x4C });
lBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(semicolonBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xBA });
semicolonBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(aposBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xDE });
aposBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(enterBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x0D });
enterBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(lshiftBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x10 });
lshiftBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(zBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x5A });
zBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(xKeyBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x58 });
xKeyBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(cBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x43 });
cBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(vBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x56 });
vBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(bKeyBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x42 });
bKeyBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(nBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x4E });
nBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(mBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x4D });
mBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(commaBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xBC });
commaBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(periodBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xBE });
periodBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(bslashBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xBF });
bslashBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(rshiftBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xA1 });
rshiftBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(lctrlBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xA2 });
lctrlBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(lWinBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x5B });
lWinBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(laltBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x12 });
laltBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(spaceBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x20 });
spaceBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(raltBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xA5 });
raltBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(rctrlBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xA3 });
rctrlBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(prtBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x2C });
prtBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(sclBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x91 });
sclBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(brkBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x13 });
brkBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(insBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x2D });
insBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(homeBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x24 });
homeBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(pgupBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x21 });
pgupBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(delBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x2E });
delBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(endBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x23 });
endBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(pgdwBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x22 });
pgdwBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(uarrowBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x26 });
uarrowBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(larrowBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x25 });
larrowBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(darrowBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x28 });
darrowBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(rarrowBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x27 });
rarrowBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(prevTrackBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xB1 });
prevTrackBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(stopBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xB2 });
stopBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(playBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xB3 });
playBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(nextTrackBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xB0 });
nextTrackBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(volupBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xAF });
volupBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(numlockBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x90 });
numlockBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(numdivideBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x64 });
numdivideBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(nummultiBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x6A });
nummultiBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(numminusBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x6D });
numminusBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(voldownBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xAE });
voldownBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num7Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x67 });
num7Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num8Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x68 });
num8Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num9Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x69 });
num9Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(numplusBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x6B });
numplusBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(volmuteBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0xAD });
volmuteBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num4Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x64 });
num4Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num5Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x65 });
num5Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num6Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x66 });
num6Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num1Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x61 });
num1Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num2Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x62 });
num2Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num3Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x63 });
num3Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(num0Btn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x60 });
num0Btn.Click += OutputKeyBtn_Click;
associatedBindings.Add(numPeriodBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x6E });
numPeriodBtn.Click += OutputKeyBtn_Click;
associatedBindings.Add(numEnterBtn,
new BindAssociation() { outputType = BindAssociation.OutType.Key, outkey = 0x13 });
numEnterBtn.Click += OutputKeyBtn_Click;
}
private void InitDS4Canvas()
{
ImageSourceConverter sourceConverter = new ImageSourceConverter();
ImageSource temp = sourceConverter.
ConvertFromString("pack://application:,,,/DS4Windows;component/Resources/DS4 Config.png") as ImageSource;
conImageBrush.ImageSource = temp;
Canvas.SetLeft(aBtn, 442); Canvas.SetTop(aBtn, 148);
Canvas.SetLeft(bBtn, 474); Canvas.SetTop(bBtn, 120);
Canvas.SetLeft(xBtn, 408); Canvas.SetTop(xBtn, 116);
Canvas.SetLeft(yBtn, 440); Canvas.SetTop(yBtn, 90);
Canvas.SetLeft(lbBtn, 154); Canvas.SetTop(lbBtn, 24);
lbBtn.Width = 46; lbBtn.Height = 20;
Canvas.SetLeft(rbBtn, 428); Canvas.SetTop(rbBtn, 24);
rbBtn.Width = 46; rbBtn.Height = 20;
Canvas.SetLeft(ltBtn, 162); Canvas.SetTop(ltBtn, 6);
ltBtn.Width = 46; ltBtn.Height = 20;
Canvas.SetLeft(rtBtn, 428); Canvas.SetTop(rtBtn, 6);
rtBtn.Width = 46; rtBtn.Height = 20;
Canvas.SetLeft(backBtn, 218); Canvas.SetTop(backBtn, 76);
Canvas.SetLeft(startBtn, 395); Canvas.SetTop(startBtn, 76);
Canvas.SetLeft(guideBtn, 303); Canvas.SetTop(guideBtn, 162);
Canvas.SetLeft(lsbBtn, 238); Canvas.SetTop(lsbBtn, 182);
Canvas.SetLeft(lsuBtn, 230); Canvas.SetTop(lsuBtn, 160);
lsuBtn.Width = 32; lsuBtn.Height = 16;
Canvas.SetLeft(lsrBtn, 264); Canvas.SetTop(lsrBtn, 176);
lsrBtn.Width = 16; lsrBtn.Height = 28;
Canvas.SetLeft(lsdBtn, 232); Canvas.SetTop(lsdBtn, 202);
lsdBtn.Width = 32; lsdBtn.Height = 16;
Canvas.SetLeft(lslBtn, 216); Canvas.SetTop(lslBtn, 176);
lslBtn.Width = 16; lslBtn.Height = 28;
Canvas.SetLeft(rsbBtn, 377); Canvas.SetTop(rsbBtn, 184);
Canvas.SetLeft(rsuBtn, 370); Canvas.SetTop(rsuBtn, 160);
rsuBtn.Width = 32; rsuBtn.Height = 16;
Canvas.SetLeft(rsrBtn, 400); Canvas.SetTop(rsrBtn, 176);
rsrBtn.Width = 16; rsrBtn.Height = 28;
Canvas.SetLeft(rsdBtn, 370); Canvas.SetTop(rsdBtn, 200);
rsdBtn.Width = 32; rsdBtn.Height = 16;
Canvas.SetLeft(rslBtn, 352); Canvas.SetTop(rslBtn, 176);
rslBtn.Width = 16; rslBtn.Height = 28;
Canvas.SetLeft(dpadUBtn, 170); Canvas.SetTop(dpadUBtn, 100);
Canvas.SetLeft(dpadRBtn, 194); Canvas.SetTop(dpadRBtn, 112);
Canvas.SetLeft(dpadDBtn, 170); Canvas.SetTop(dpadDBtn, 144);
Canvas.SetLeft(dpadLBtn, 144); Canvas.SetTop(dpadLBtn, 112);
}
private void RegBindRadio_Click(object sender, RoutedEventArgs e)
{
if (regBindRadio.IsChecked == true)
{
bindingVM.ActionBinding = bindingVM.CurrentOutBind;
ChangeForCurrentAction();
}
}
private void ShiftBindRadio_Click(object sender, RoutedEventArgs e)
{
if (shiftBindRadio.IsChecked == true)
{
bindingVM.ActionBinding = bindingVM.ShiftOutBind;
ChangeForCurrentAction();
}
}
private void TestRumbleBtn_Click(object sender, RoutedEventArgs e)
{
int deviceNum = bindingVM.DeviceNum;
if (deviceNum < 4)
{
DS4Windows.DS4Device d = App.rootHub.DS4Controllers[deviceNum];
if (d != null)
{
if (!bindingVM.RumbleActive)
{
bindingVM.RumbleActive = true;
d.setRumble((byte)Math.Min(255, bindingVM.ActionBinding.LightRumble),
(byte)Math.Min(255, bindingVM.ActionBinding.HeavyRumble));
testRumbleBtn.Content = Properties.Resources.StopText;
}
else
{
bindingVM.RumbleActive = false;
d.setRumble(0, 0);
testRumbleBtn.Content = Properties.Resources.TestText;
}
}
}
}
private void ExtrasColorChoosebtn_Click(object sender, RoutedEventArgs e)
{
ColorPickerWindow dialog = new ColorPickerWindow();
dialog.Owner = Application.Current.MainWindow;
OutBinding actBind = bindingVM.ActionBinding;
Color tempcolor = actBind.ExtrasColorMedia;
dialog.colorPicker.SelectedColor = tempcolor;
bindingVM.StartForcedColor(tempcolor);
dialog.ColorChanged += (sender2, color) =>
{
bindingVM.UpdateForcedColor(color);
};
dialog.ShowDialog();
bindingVM.EndForcedColor();
actBind.UpdateExtrasColor(dialog.colorPicker.SelectedColor.GetValueOrDefault());
}
private void DefaultBtn_Click(object sender, RoutedEventArgs e)
{
OutBinding actBind = bindingVM.ActionBinding;
if (!actBind.shiftBind)
{
actBind.outputType = OutBinding.OutType.Default;
actBind.control = DS4Windows.Global.defaultButtonMapping[(int)actBind.input];
}
else
{
actBind.outputType = OutBinding.OutType.Default;
}
Close();
}
private void UnboundBtn_Click(object sender, RoutedEventArgs e)
{
OutBinding actBind = bindingVM.ActionBinding;
actBind.outputType = OutBinding.OutType.Button;
actBind.control = DS4Windows.X360Controls.Unbound;
Close();
}
private void RecordMacroBtn_Click(object sender, RoutedEventArgs e)
{
RecordBox box = new RecordBox(bindingVM.DeviceNum, bindingVM.Settings,
bindingVM.ActionBinding.IsShift());
box.Visibility = Visibility.Visible;
mapBindingPanel.Visibility = Visibility.Collapsed;
extrasGB.IsEnabled = false;
fullPanel.Children.Add(box);
box.Cancel += (sender2, args) =>
{
box.Visibility = Visibility.Collapsed;
fullPanel.Children.Remove(box);
box = null;
mapBindingPanel.Visibility = Visibility.Visible;
extrasGB.IsEnabled = true;
};
box.Save += (sender2, args) =>
{
box.Visibility = Visibility.Collapsed;
fullPanel.Children.Remove(box);
box = null;
//mapBindingPanel.Visibility = Visibility.Visible;
bindingVM.PopulateCurrentBinds();
Close();
};
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
bindingVM.WriteBinds();
}
}
}