input editor improvements

This commit is contained in:
Frank Skare
2019-07-27 23:46:53 +02:00
parent ecd5b01161
commit 0a8397652f
4 changed files with 47 additions and 51 deletions

View File

@@ -4,8 +4,11 @@
[mpv-repl](https://github.com/rossy/mpv-repl) is currently the best choice
- many [wiki pages](https://github.com/stax76/mpv.net/wiki) were improved
- the logo/icon had a very small cosmetic change
- the help in the context menu was improved
- the help in the context menu was improved,
for quick access consider the command palette (F1 key)
- config options specific to mpv.net are now available from the command line
- the input editor no longer as known limitations, 'alt gr' and ctrl+alt are working now
- the help in the input editor was simplified and the filter logic was improved
### 5.0

View File

@@ -48,16 +48,21 @@ namespace mpvnet
CollectionView.Refresh();
if (SearchControl.SearchTextBox.Text == "?")
Msg.Show("Filtering works by searching in the Input, Menu and Command but it's possible to reduce the filter scope to either of Input, Menu or Command by prefixing as follows:\n\ni <input search>\ni: <input search>\n\nm <menu search>\nm: <menu search>\n\nc <command search>\nc: <command search>\n\nIf only one character is entered the search will be performed only in the input.", "Filtering");
{
SearchControl.SearchTextBox.Text = "";
Msg.Show("Filtering", "Reduce the filter scope with:\n\ni input\n\nm menu\n\nc command\n\nIf only one character is entered input search is performed.");
}
}
bool Filter(CommandItem item)
{
if (item.Command == "") return false;
string searchText = SearchControl.SearchTextBox.Text.ToLower();
if (searchText == "") return true;
if (searchText == "" || searchText == "?") return true;
if (searchText.StartsWith("i ") || searchText.StartsWith("i:") || searchText.Length == 1)
if (searchText.Length == 1)
return item.Input.ToLower().Replace("ctrl+", "").Replace("shift+", "").Replace("alt+", "") == searchText.ToLower();
else if (searchText.StartsWith("i ") || searchText.StartsWith("i:") || searchText.Length == 1)
{
if (searchText.Length > 1)
searchText = searchText.Substring(2).Trim();

View File

@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Learn Input" Height="200" Width="400" WindowStartupLocation="CenterOwner"
ResizeMode="NoResize" Loaded="Window_Loaded" Background="Black" MouseWheel="Window_MouseWheel" MouseUp="Window_MouseUp" MouseDoubleClick="Window_MouseDoubleClick">
ResizeMode="NoResize" Loaded="Window_Loaded" Background="Black" MouseWheel="Window_MouseWheel" MouseUp="Window_MouseUp" MouseDoubleClick="Window_MouseDoubleClick" TextInput="Window_TextInput">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />

View File

@@ -10,7 +10,8 @@ namespace mpvnet
public partial class LearnWindow : Window
{
public CommandItem InputItem { get; set; }
public string NewKey { get; set; } = "";
string NewKey = "";
string KeyChar = "";
public LearnWindow() => InitializeComponent();
@@ -60,9 +61,9 @@ namespace mpvnet
case WF.Keys.NumPad9:
text = "KP" + e.KeyCode.ToString()[6].ToString(); break;
case WF.Keys.Space:
text = "SPACE"; break;
text = "Space"; break;
case WF.Keys.Enter:
text = "ENTER"; break;
text = "Enter"; break;
case WF.Keys.Tab:
text = "TAB"; break;
case WF.Keys.Back:
@@ -72,7 +73,7 @@ namespace mpvnet
case WF.Keys.Insert:
text = "INS"; break;
case WF.Keys.Home:
text = "HOME"; break;
text = "Home"; break;
case WF.Keys.End:
text = "END"; break;
case WF.Keys.PageUp:
@@ -82,56 +83,56 @@ namespace mpvnet
case WF.Keys.Escape:
text = "ESC"; break;
case WF.Keys.PrintScreen:
text = "PRINT"; break;
text = "Print"; break;
case WF.Keys.Play:
text = "PLAY"; break;
text = "Play"; break;
case WF.Keys.Pause:
text = "PAUSE"; break;
text = "Pause"; break;
case WF.Keys.MediaPlayPause:
text = "PLAYPAUSE"; break;
text = "PlayPause"; break;
case WF.Keys.MediaStop:
text = "STOP"; break;
text = "Stop"; break;
case WF.Keys.MediaNextTrack:
text = "NEXT"; break;
text = "Next"; break;
case WF.Keys.MediaPreviousTrack:
text = "PREV"; break;
text = "Prev"; break;
case WF.Keys.VolumeUp:
text = "VOLUME_UP"; break;
text = "Volume_Up"; break;
case WF.Keys.VolumeDown:
text = "VOLUME_DOWN"; break;
text = "Volume_Down"; break;
case WF.Keys.VolumeMute:
text = "MUTE"; break;
text = "Mute"; break;
case WF.Keys.BrowserHome:
text = "HOMEPAGE"; break;
text = "Homepage"; break;
case WF.Keys.LaunchMail:
text = "MAIL"; break;
text = "Mail"; break;
case WF.Keys.BrowserFavorites:
text = "FAVORITES"; break;
text = "Favorites"; break;
case WF.Keys.BrowserSearch:
text = "SEARCH"; break;
text = "Search"; break;
case WF.Keys.Sleep:
text = "SLEEP"; break;
text = "Sleep"; break;
case WF.Keys.Cancel:
text = "CANCEL"; break;
text = "Cancel"; break;
}
bool shiftWasHandled = false;
bool wasModified = false;
bool isAlt = GetKeyState(18) < (short)0;
bool isShift = GetKeyState(16) < (short)0;
bool isCtrl = GetKeyState(17) < (short)0;
if (text.Length == 1 && isShift && text[0] != GetModifiedKey(text[0]))
if (text.Length == 1 && KeyChar != text)
{
text = GetModifiedKey(text[0]).ToString();
shiftWasHandled = true;
text = KeyChar;
wasModified = true;
}
if (text == "#") text = "Sharp";
if (text == "#") text = "SHARP";
if (isAlt) text = "Alt+" + text;
if (isShift && !shiftWasHandled) text = "Shift+" + text;
if (isCtrl) text = "Ctrl+" + text;
if (isAlt && !wasModified) text = "ALT+" + text;
if (isShift && !wasModified) text = "SHIFT+" + text;
if (isCtrl && !wasModified) text = "CTRL+" + text;
if (!string.IsNullOrEmpty(text))
SetKey(text);
@@ -163,24 +164,6 @@ namespace mpvnet
}
}
public static char GetModifiedKey(char c)
{
short vkKeyScanResult = VkKeyScan(c);
if (vkKeyScanResult == -1)
return c;
uint code = (uint)vkKeyScanResult & 0xff;
byte[] b = new byte[256];
b[0x10] = 0x80;
uint r;
if (1 != ToAscii(code, code, b, out r, 0))
return c;
return (char)r;
}
void ProcessKeyEventArgs(ref WF.Message m)
{
int WM_KEYUP = 0x0101, WM_SYSKEYUP = 0x0105, WM_APPCOMMAND = 0x0319;
@@ -382,5 +365,10 @@ namespace mpvnet
BlockMBTN_LEFT = true;
}
}
private void Window_TextInput(object sender, TextCompositionEventArgs e)
{
KeyChar = e.Text;
}
}
}