diff --git a/README.md b/README.md
index e42107b..76e4ced 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
| Key | Action |
| --- | ------ |
| `F1` | Open Settings Window |
-| `F2` / `Enter` | Load New Image |
+| `F2` | Load New Image |
| `Space` | Toggle Play / Pause |
| `Esc` | Stop Playback |
| `→` | Next Track |
diff --git a/RedBookPlayer/GUI/MainWindow.xaml.cs b/RedBookPlayer/GUI/MainWindow.xaml.cs
index 5cff6d5..235ff12 100644
--- a/RedBookPlayer/GUI/MainWindow.xaml.cs
+++ b/RedBookPlayer/GUI/MainWindow.xaml.cs
@@ -118,68 +118,68 @@ namespace RedBookPlayer.GUI
PlayerView playerView = ContentControl.Content as PlayerView;
// Open settings window
- if(e.Key == Key.F1)
+ if(e.Key == App.Settings.OpenSettingsKey)
{
settingsWindow = new SettingsWindow(App.Settings);
settingsWindow.Show();
}
// Load image
- else if (e.Key == Key.F2 || e.Key == Key.Enter)
+ else if (e.Key == App.Settings.LoadImageKey)
{
playerView?.LoadButton_Click(this, null);
}
// Toggle playback
- else if(e.Key == Key.Space || e.Key == Key.MediaPlayPause)
+ else if(e.Key == App.Settings.TogglePlaybackKey || e.Key == Key.MediaPlayPause)
{
playerView?.PlayPauseButton_Click(this, null);
}
// Stop playback
- else if(e.Key == Key.Escape || e.Key == Key.MediaStop)
+ else if(e.Key == App.Settings.StopPlaybackKey || e.Key == Key.MediaStop)
{
playerView?.StopButton_Click(this, null);
}
// Next Track
- else if(e.Key == Key.Right || e.Key == Key.MediaNextTrack)
+ else if(e.Key == App.Settings.NextTrackKey || e.Key == Key.MediaNextTrack)
{
playerView?.NextTrackButton_Click(this, null);
}
// Previous Track
- else if(e.Key == Key.Left || e.Key == Key.MediaPreviousTrack)
+ else if(e.Key == App.Settings.PreviousTrackKey || e.Key == Key.MediaPreviousTrack)
{
playerView?.PreviousTrackButton_Click(this, null);
}
// Next Index
- else if(e.Key == Key.OemCloseBrackets)
+ else if(e.Key == App.Settings.NextIndexKey)
{
playerView?.NextIndexButton_Click(this, null);
}
// Previous Index
- else if(e.Key == Key.OemOpenBrackets)
+ else if(e.Key == App.Settings.PreviousIndexKey)
{
playerView?.PreviousIndexButton_Click(this, null);
}
// Fast Foward
- else if(e.Key == Key.OemPeriod)
+ else if(e.Key == App.Settings.FastForwardPlaybackKey)
{
playerView?.FastForwardButton_Click(this, null);
}
// Rewind
- else if(e.Key == Key.OemComma)
+ else if(e.Key == App.Settings.RewindPlaybackKey)
{
playerView?.RewindButton_Click(this, null);
}
// Emphasis Toggle
- else if(e.Key == Key.E)
+ else if(e.Key == App.Settings.ToggleDeEmphasisKey)
{
playerView?.EnableDisableDeEmphasisButton_Click(this, null);
}
diff --git a/RedBookPlayer/Settings.cs b/RedBookPlayer/Settings.cs
index fe144a0..2e2e607 100644
--- a/RedBookPlayer/Settings.cs
+++ b/RedBookPlayer/Settings.cs
@@ -1,12 +1,15 @@
using System;
using System.IO;
using System.Text.Json;
+using Avalonia.Input;
using RedBookPlayer.GUI;
namespace RedBookPlayer
{
public class Settings
{
+ #region Player Settings
+
///
/// Indicates if discs should start playing on load
///
@@ -42,6 +45,67 @@ namespace RedBookPlayer
///
public string SelectedTheme { get; set; } = "default";
+ #endregion
+
+ #region Key Mappings
+
+ ///
+ /// Key assigned to open settings
+ ///
+ public Key OpenSettingsKey { get; set; } = Key.F1;
+
+ ///
+ /// Key assigned to load a new image
+ ///
+ public Key LoadImageKey { get; set; } = Key.F2;
+
+ ///
+ /// Key assigned to toggle play and pause
+ ///
+ public Key TogglePlaybackKey { get; set; } = Key.Space;
+
+ ///
+ /// Key assigned to stop playback
+ ///
+ public Key StopPlaybackKey { get; set; } = Key.Escape;
+
+ ///
+ /// Key assigned to move to the next track
+ ///
+ public Key NextTrackKey { get; set; } = Key.Right;
+
+ ///
+ /// Key assigned to move to the previous track
+ ///
+ public Key PreviousTrackKey { get; set; } = Key.Left;
+
+ ///
+ /// Key assigned to move to the next index
+ ///
+ public Key NextIndexKey { get; set; } = Key.OemCloseBrackets;
+
+ ///
+ /// Key assigned to move to the previous index
+ ///
+ public Key PreviousIndexKey { get; set; } = Key.OemOpenBrackets;
+
+ ///
+ /// Key assigned to fast forward playback
+ ///
+ public Key FastForwardPlaybackKey { get; set; } = Key.OemPeriod;
+
+ ///
+ /// Key assigned to rewind playback
+ ///
+ public Key RewindPlaybackKey { get; set; } = Key.OemComma;
+
+ ///
+ /// Key assigned to toggle de-emphasis
+ ///
+ public Key ToggleDeEmphasisKey { get; set; } = Key.E;
+
+ #endregion
+
///
/// Path to the settings file
///