예제 #1
0
파일: Keyboard.cs 프로젝트: Arlorean/Casper
 /// <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>());
 }
예제 #2
0
        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);
        }
예제 #3
0
 public override int GetHashCode()
 {
     return(KeysMap.GetHashCode());
 }
예제 #4
0
        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();
        }