/// <summary> /// Lookup the key combination for the given Unicode character on the Spectrum /// These mappings only make sense in the BASIC editor or other applications that use those combinations. /// </summary> /// <param name="c">The character to find the combination for.</param> /// <returns>An array of keys that when pressed produce the Unicode character, or an empty array if it can't be typed.</returns> public static Key[] GetKeys(char c) { if (KeysMap.TryGetValue(c, out var keys)) { return(keys); } return(Array.Empty <Key>()); }
public void ShouldOutputSingleEscape() { var test = new TestEmitter(); var data = $"{ESC}"; var buffer = CreateBufferFromString(data, 16); var map = new InputMapper(); var keys = new KeysMap(test.Emitter); keys.Register(map); map.Process(buffer); Assert.AreEqual(data.Length, test.Keys.Count); Assert.IsTrue(test.Keys[0].Key == ConsoleKey.Escape); }
public override int GetHashCode() { return(KeysMap.GetHashCode()); }
private void Config_Load(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(255); WinAPI.GetClassName(Handle, sb, 255); Dll.SetConfigClassName(sb.ToString().ToCharArray()); Dll.SetConfigText(Text.ToCharArray()); ConfigTabControl.SelectedIndex = Page; BringToFront(); ComboBoxLauncherPos.Select(); Activate(); KeysMap.Init(); // 現在の設定を退避 GHManager.SavePoint(1); // コントロールに現在の設定を設定 // ランチャーページ ComboBoxLauncherPos.SelectedIndex = (int)GHManager.Settings.Launcher.Pos; UpDownLauncherReactRange.Value = GHManager.Settings.Launcher.ReactRange; CheckLauncherMouseButton.Checked = GHManager.Settings.Launcher.ShownMouseButton; UpDownLauncherDelayTime.Value = GHManager.Settings.Animate.Launcher_DelayTime; UpDownLauncherAnimateTime.Value = GHManager.Settings.Animate.Launcher_AnimateTime; CheckLauncherSlide.Checked = GHManager.Settings.Animate.Launcher_Slide; CheckLauncherFade.Checked = GHManager.Settings.Animate.Launcher_Fade; UpDownMysetlistDelayTime.Value = GHManager.Settings.Animate.MysetList_DelayTime; UpDownMysetlistAnimateTime.Value = GHManager.Settings.Animate.MysetList_AnimateTime; CheckMysetlistSlide.Checked = GHManager.Settings.Animate.MysetList_Slide; CheckMysetlistFade.Checked = GHManager.Settings.Animate.MysetList_Fade; UpDownItemlistDelayTime.Value = GHManager.Settings.Animate.ItemList_DelayTime; UpDownItemlistAnimateTime.Value = GHManager.Settings.Animate.ItemList_AnimateTime; CheckItemlistSlide.Checked = GHManager.Settings.Animate.ItemList_Slide; CheckItemlistFade.Checked = GHManager.Settings.Animate.ItemList_Fade; // キーボードページ Dictionary <int, string> ShortcutStrMap = new Dictionary <int, string> { { GH_SHID.Show, "表示" }, { GH_SHID.Hide, "非表示" }, { GH_SHID.ShowConfig, "設定を表示" }, { GH_SHID.OpenSelectItem, "選択項目を実行" }, { GH_SHID.DeleteSelectItem, "選択項目を削除" }, { GH_SHID.SelectNextItem, "次の項目を選択" }, { GH_SHID.SelectPrevItem, "前の項目を選択" }, { GH_SHID.SelectNextGroup, "次のグループを選択" }, { GH_SHID.SelectPrevGroup, "前のグループを選択" }, { GH_SHID.SelectGroupTile, "グループのウィンドウを左右に並べて表示" }, { GH_SHID.SelectGroupTile2, "グループのウィンドウを上下に並べて表示" } }; foreach (var item in GHManager.Settings.Hotkey.HotKeys.Select((kv, i) => new { kv, i })) { if (item.i > ListViewShortcut.Items.Count) { break; } string keystr = KeysToString(item.kv.Value.ModKey, item.kv.Value.Key); ListViewShortcut.Items[item.i].SubItems[1].Text = keystr; ListViewShortcut.Items[item.i].Tag = item.kv.Key; ListViewShortcut.Items[item.i].Text = ShortcutStrMap[item.kv.Key]; PrevKeyStr.Add(item.kv.Key, keystr); } Dictionary <uint, string> wpKeyMap = new Dictionary <uint, string> { { (uint)Keys.Menu, "Alt" }, { (uint)Keys.ControlKey, "Ctrl" }, { (uint)Keys.ShiftKey, "Shift" } }; uint[] key = new uint[2] { (uint)Keys.ShiftKey, (uint)Keys.ControlKey }; if (wpKeyMap.ContainsKey(GHManager.TempSettings.Magnet.GroupKey)) { key[0] = GHManager.TempSettings.Magnet.GroupKey; } if (wpKeyMap.ContainsKey(GHManager.TempSettings.Magnet.MoveKey)) { key[1] = GHManager.TempSettings.Magnet.MoveKey; } ((RadioButton)PanelGroup.Controls["RadioButtonGroup" + wpKeyMap[key[0]]]).Checked = true; ((RadioButton)PanelMove.Controls["RadioButtonMove" + wpKeyMap[key[0]]]).Enabled = false; ((RadioButton)PanelGroup.Controls["RadioButtonGroup" + wpKeyMap[key[1]]]).Enabled = false; ((RadioButton)PanelMove.Controls["RadioButtonMove" + wpKeyMap[key[1]]]).Checked = true; // マグネットページ TrackBarFitRange.Value = GHManager.Settings.Magnet.FitRange; LabelFitRange.Text = TrackBarFitRange.Value.ToString() + "px"; CheckFitScreen.Checked = GHManager.Settings.Magnet.FitDisplay; CheckFitTaskbar.Checked = GHManager.Settings.Magnet.FitTaskbar; CheckFitWindow.Checked = GHManager.Settings.Magnet.FitWindows; //Dll.GetNoFitWindows(GHManager.settings.Magnet.NoFitWindows, 255); long[] arr = new long[255]; Dll.GetAllWindows(arr); StringBuilder windowText = new StringBuilder(255); StringBuilder className = new StringBuilder(255); for (int i = 0; i < 255; ++i) { if (WinAPI.GetWindowText((IntPtr)arr[i], windowText, 255) != 0 && WinAPI.GetClassName((IntPtr)arr[i], className, 255) != 0) { ListBoxWindows.Items.Add("[" + i.ToString("000") + "] [class:" + className.ToString() + "] [caption:" + windowText.ToString() + "]"); } } //for(int i = 0; i < 255; ++i) { // if (GHManager.settings.Magnet.NoFitWindows[i].classname != "" && // GHManager.settings.Magnet.NoFitWindows[i].text != "") { // ListBoxNoFitWindows.Items.Add("[" + i.ToString("000") + "] [class:" + GHManager.settings.Magnet.NoFitWindows[i].classname + "] [caption:" + GHManager.settings.Magnet.NoFitWindows[i].text + "]"); // } //} // スタイルページ UpDownLauncherItemSize.Value = GHManager.Settings.Style.Launcher.ItemSize; UpDownLauncherItemSpace.Value = GHManager.Settings.Style.Launcher.ItemSpace; ComboBoxGroupIcon.SelectedIndex = GHManager.Settings.GroupIconStyle; UpDownMysetItemSize.Value = GHManager.Settings.Style.MysetList.ItemSize; UpDownMysetItemSpace.Value = GHManager.Settings.Style.MysetList.ItemSpace; ComboBoxMysetIcon.SelectedIndex = GHManager.Settings.MysetIconStyle; UpDownItemListItemSizeHeight.Value = GHManager.Settings.Style.ItemList.ItemSizeHeight; UpDownItemListItemSizeWidth.Value = GHManager.Settings.Style.ItemList.ItemSizeWidth; UpDownItemListItemSpace.Value = GHManager.Settings.Style.ItemList.ItemSpace; UpDownItemList_Column.Value = GHManager.Settings.Style.ItemList.Column; UpDownItemListIconSize.Value = GHManager.Settings.Style.ItemList.IconSize; ComboboxUseIconSize.Text = GHManager.Settings.Style.ItemList.GetUseIconSize().ToString(); ComboBoxDrawQuality.SelectedIndex = GHManager.Settings.DrawQuality; Load_Skin(); }