示例#1
0
        TimeSpan GetTimeToCompleteTrigger(KeyValue keyValue, KeyValue lastKeyValue, int repetition)
        {
            if (keyValue.FunctionKey.HasValue)
            {
                FunctionKeys functionKey = keyValue.FunctionKey.Value;

                if (FunctionKeysWithIgnoredStringValue.Contains(functionKey))
                {
                    keyValue = new KeyValue(functionKey);
                }
            }

            //check if this key has any override times
            if (overrideTimesByKey.TryGetValue(keyValue, out var timeSpanOverrides) && timeSpanOverrides.CompletionTimes != null)
            {
                if (lastKeyValue == null || keyValue != lastKeyValue)
                {
                    return(TimeSpan.FromMilliseconds(Convert.ToDouble(timeSpanOverrides.CompletionTimes.First())));
                }
                else if (timeSpanOverrides.CompletionTimes.Count() > repetition)
                {
                    return(TimeSpan.FromMilliseconds(Convert.ToDouble(timeSpanOverrides.CompletionTimes[repetition])));
                }
                else
                {
                    return(TimeSpan.FromMilliseconds(Convert.ToDouble(timeSpanOverrides.CompletionTimes.Last())));
                }
            }
            //if this key does not have overrides then get the time from setting or use the default
            else
            {
                return(timeToCompleteTriggerByKey.GetValueOrDefault(keyValue, defaultTimeToCompleteTrigger));
            }
        }
示例#2
0
        public override ScriptSecrets Refresh(IKeyValueConverterFactory factory)
        {
            var secrets = new HostSecrets
            {
                MasterKey    = factory.WriteKey(MasterKey),
                FunctionKeys = FunctionKeys.Select(k => factory.WriteKey(k)).ToList()
            };

            return(secrets);
        }
 private void PublishKeyPress(FunctionKeys functionKey)
 {
     if (keyStateService.SimulateKeyStrokes)
     {
         var virtualKeyCode = functionKey.ToVirtualKeyCode();
         if (virtualKeyCode != null)
         {
             Log.InfoFormat("Publishing function key '{0}' => as virtual key code {1}", functionKey, virtualKeyCode);
             publishService.KeyDownUp(virtualKeyCode.Value);
         }
     }
 }
示例#4
0
 void Awake()
 {
     if (Instance != null && Instance != this)
     {
         Destroy(gameObject);
     }
     else
     {
         Instance = this;
         DontDestroyOnLoad(gameObject);
     }
 }
        private void PublishKeyPress(FunctionKeys functionKey)
        {
            if (keyStateService.SimulateKeyStrokes)
            {
                Log.DebugFormat("KeyDownUp called with functionKey '{0}'.", functionKey);

                var virtualKeyCode = functionKey.ToVirtualKeyCode();
                if (virtualKeyCode != null)
                {
                    publishService.KeyDownUp(virtualKeyCode.Value);
                }
            }
        }
示例#6
0
        private bool CurrentUserHasAccess(
            FunctionKeys functionKey,
            IList <string> userRoleNames,
            IDictionary <FunctionKeys, AppFunction> appFunctionDict)
        {
            AppFunction appFunc;

            if (!appFunctionDict.TryGetValue(functionKey, out appFunc))
            {
                return(false);
            }
            return(appFunc.GetRoles().Any(r => userRoleNames.Contains(r.Name)));
        }
示例#7
0
        TimeSpan GetTimeToCompleteTrigger(KeyValue keyValue)
        {
            if (keyValue.FunctionKey.HasValue)
            {
                FunctionKeys functionKey = keyValue.FunctionKey.Value;

                if (FunctionKeysWithIgnoredStringValue.Contains(functionKey))
                {
                    keyValue = new KeyValue(functionKey);
                }
            }

            return(timeToCompleteTriggerByKey.GetValueOrDefault(keyValue, defaultTimeToCompleteTrigger));
        }
示例#8
0
        TimeSpan GetTimeToLockOn(KeyValue keyValue)
        {
            if (keyValue.FunctionKey.HasValue)
            {
                FunctionKeys functionKey = keyValue.FunctionKey.Value;

                if (FunctionKeysWithIgnoredStringValue.Contains(functionKey))
                {
                    keyValue = new KeyValue(functionKey);
                }
            }

            if (overrideTimesByKey.TryGetValue(keyValue, out var timeSpanOverrides))
            {
                return(timeSpanOverrides.LockOnTime);
            }

            return(defaultLockOnTime);
        }
示例#9
0
        TimeSpan GetTimeToCompleteTrigger(KeyValue keyValue, KeyValue lastKeyValue, int keystroke)
        {
            if (keyValue.FunctionKey.HasValue)
            {
                FunctionKeys functionKey = keyValue.FunctionKey.Value;

                if (FunctionKeysWithIgnoredStringValue.Contains(functionKey))
                {
                    keyValue = new KeyValue(functionKey);
                }
            }

            //check if this key has any override times
            var hasOverride = overrideTimesByKey.TryGetValue(keyValue, out TimeSpanOverrides timeSpanOverrides);

            if (hasOverride && timeSpanOverrides.TimeRequiredToLockDown > TimeSpan.Zero && keystroke == 2)
            {
                return(timeSpanOverrides.TimeRequiredToLockDown);
            }

            var completionTimes = hasOverride && timeSpanOverrides.CompletionTimes != null && timeSpanOverrides.CompletionTimes.Any()
                ? timeSpanOverrides.CompletionTimes
                : timeToCompleteTriggerByKey.GetValueOrDefault(keyValue, defaultTimeToCompleteTrigger).Split(',').ToList();

            if (lastKeyValue == null || keyValue != lastKeyValue)
            {
                return(TimeSpan.FromMilliseconds(double.Parse(completionTimes.First())));
            }

            if (completionTimes.Count > keystroke)
            {
                return(TimeSpan.FromMilliseconds(double.Parse(completionTimes[keystroke])));
            }

            return(TimeSpan.FromMilliseconds(double.Parse(completionTimes.Last())));
        }
示例#10
0
        public void ProcessFunctionKey(FunctionKeys functionKey)
        {
            Log.DebugFormat("Processing captured function key '{0}'", functionKey);

            lastTextChangeWasSuggestion = false;

            switch (functionKey)
            {
            case FunctionKeys.BackMany:
                if (!string.IsNullOrEmpty(Text))
                {
                    var backManyCount = Text.CountBackToLastCharCategoryBoundary();

                    dictionaryService.DecrementEntryUsageCount(Text.Substring(Text.Length - backManyCount, backManyCount).Trim());

                    var textAfterBackMany     = Text.Substring(0, Text.Length - backManyCount);
                    var textChangedByBackMany = Text != textAfterBackMany;
                    Text = textAfterBackMany;

                    if (backManyCount == 0)
                    {
                        backManyCount = 1;                         //Always publish at least one backspace
                    }
                    for (int i = 0; i < backManyCount; i++)
                    {
                        PublishKeyPress(FunctionKeys.BackOne);
                        ReleaseUnlockedKeys();
                    }

                    if (textChangedByBackMany ||
                        string.IsNullOrEmpty(Text))
                    {
                        AutoPressShiftIfAppropriate();
                    }

                    StoreLastTextChange(null);
                    GenerateAutoCompleteSuggestions();

                    Log.Debug("Suppressing next auto space.");
                    suppressNextAutoSpace = true;
                }
                else
                {
                    //Scratchpad is empty, but publish 1 backspace anyway, as per the behaviour for 'BackOne'
                    PublishKeyPress(FunctionKeys.BackOne);
                }
                break;

            case FunctionKeys.BackOne:
                var backOneCount = string.IsNullOrEmpty(lastTextChange)
                        ? 1 //Default to removing one character if no lastTextChange
                        : lastTextChange.Length;

                var textChangedByBackOne = false;

                if (!string.IsNullOrEmpty(Text))
                {
                    if (Text.Length < backOneCount)
                    {
                        backOneCount = Text.Length;     //Coallesce backCount if somehow the Text length is less
                    }

                    var textAfterBackOne = Text.Substring(0, Text.Length - backOneCount);
                    textChangedByBackOne = Text != textAfterBackOne;

                    if (backOneCount > 1)
                    {
                        //Removing more than one character - only decrement removed string
                        dictionaryService.DecrementEntryUsageCount(Text.Substring(Text.Length - backOneCount, backOneCount).Trim());
                    }
                    else if (!string.IsNullOrEmpty(lastTextChange) &&
                             lastTextChange.Length == 1 &&
                             !char.IsWhiteSpace(lastTextChange[0]))
                    {
                        dictionaryService.DecrementEntryUsageCount(Text.InProgressWord(Text.Length));             //We are removing a non-whitespace character - decrement the in progress word
                        dictionaryService.IncrementEntryUsageCount(textAfterBackOne.InProgressWord(Text.Length)); //And increment the in progress word that is left after the removal
                    }

                    Text = textAfterBackOne;
                }

                for (int i = 0; i < backOneCount; i++)
                {
                    PublishKeyPress(FunctionKeys.BackOne);
                    ReleaseUnlockedKeys();
                }

                if (textChangedByBackOne ||
                    string.IsNullOrEmpty(Text))
                {
                    AutoPressShiftIfAppropriate();
                }

                StoreLastTextChange(null);
                GenerateAutoCompleteSuggestions();

                Log.Debug("Suppressing next auto space.");
                suppressNextAutoSpace = true;
                break;

            case FunctionKeys.ClearScratchpad:
                Text = null;
                StoreLastTextChange(null);
                ClearSuggestions();
                AutoPressShiftIfAppropriate();
                Log.Debug("Suppressing next auto space.");
                suppressNextAutoSpace = true;
                break;

            case FunctionKeys.Suggestion1:
                SwapLastTextChangeForSuggestion(0);
                lastTextChangeWasSuggestion = true;
                break;

            case FunctionKeys.Suggestion2:
                SwapLastTextChangeForSuggestion(1);
                lastTextChangeWasSuggestion = true;
                break;

            case FunctionKeys.Suggestion3:
                SwapLastTextChangeForSuggestion(2);
                lastTextChangeWasSuggestion = true;
                break;

            case FunctionKeys.Suggestion4:
                SwapLastTextChangeForSuggestion(3);
                lastTextChangeWasSuggestion = true;
                break;

            case FunctionKeys.Suggestion5:
                SwapLastTextChangeForSuggestion(4);
                lastTextChangeWasSuggestion = true;
                break;

            case FunctionKeys.Suggestion6:
                SwapLastTextChangeForSuggestion(5);
                lastTextChangeWasSuggestion = true;
                break;

            default:
                if (functionKey.ToVirtualKeyCode() != null)
                {
                    //Key corresponds to physical keyboard key
                    GenerateAutoCompleteSuggestions();

                    //If the key cannot be pressed or locked down (these are handled in
                    //ReactToPublishableKeyDownStateChanges) then publish it and release unlocked keys
                    var keyValue = new KeyValue(functionKey);
                    if (!KeyValues.KeysWhichCanBePressedOrLockedDown.Contains(keyValue))
                    {
                        PublishKeyPress(functionKey);
                        ReleaseUnlockedKeys();
                    }
                }

                if (functionKey == FunctionKeys.LeftShift)
                {
                    shiftStateSetAutomatically = false;
                }
                break;
            }
        }
 public KeyValue(FunctionKeys functionKey)
 {
     this.functionKey = functionKey;
     this.str         = null;
 }
        //http://inputsimulator.codeplex.com/SourceControl/latest#WindowsInput/Native/VirtualKeyCode.cs
        //http://msdn.microsoft.com/en-gb/library/windows/desktop/dd375731(v=vs.85).aspx
        public static VirtualKeyCode?ToVirtualKeyCode(this FunctionKeys functionKey)
        {
            switch (functionKey)
            {
            case FunctionKeys.BackOne:
                return(VirtualKeyCode.BACK);

            case FunctionKeys.LeftShift:
                return(VirtualKeyCode.LSHIFT);

            case FunctionKeys.LeftAlt:
                return(VirtualKeyCode.LMENU);    //This is not a typo ALT=MENU

            case FunctionKeys.LeftCtrl:
                return(VirtualKeyCode.LCONTROL);

            case FunctionKeys.LeftWin:
                return(VirtualKeyCode.LWIN);

            case FunctionKeys.F1:
                return(VirtualKeyCode.F1);

            case FunctionKeys.F2:
                return(VirtualKeyCode.F2);

            case FunctionKeys.F3:
                return(VirtualKeyCode.F3);

            case FunctionKeys.F4:
                return(VirtualKeyCode.F4);

            case FunctionKeys.F5:
                return(VirtualKeyCode.F5);

            case FunctionKeys.F6:
                return(VirtualKeyCode.F6);

            case FunctionKeys.F7:
                return(VirtualKeyCode.F7);

            case FunctionKeys.F8:
                return(VirtualKeyCode.F8);

            case FunctionKeys.F9:
                return(VirtualKeyCode.F9);

            case FunctionKeys.F10:
                return(VirtualKeyCode.F10);

            case FunctionKeys.F11:
                return(VirtualKeyCode.F11);

            case FunctionKeys.F12:
                return(VirtualKeyCode.F12);

            case FunctionKeys.PrintScreen:
                return(VirtualKeyCode.SNAPSHOT);    //This is not a typo

            case FunctionKeys.ScrollLock:
                return(VirtualKeyCode.SCROLL);

            case FunctionKeys.NumberLock:
                return(VirtualKeyCode.NUMLOCK);

            case FunctionKeys.Menu:
                return(VirtualKeyCode.APPS);    //This is not a typo

            case FunctionKeys.ArrowUp:
                return(VirtualKeyCode.UP);

            case FunctionKeys.ArrowDown:
                return(VirtualKeyCode.DOWN);

            case FunctionKeys.ArrowLeft:
                return(VirtualKeyCode.LEFT);

            case FunctionKeys.ArrowRight:
                return(VirtualKeyCode.RIGHT);

            case FunctionKeys.Break:
                return(VirtualKeyCode.CANCEL);

            case FunctionKeys.Insert:
                return(VirtualKeyCode.INSERT);

            case FunctionKeys.Home:
                return(VirtualKeyCode.HOME);

            case FunctionKeys.PgUp:
                return(VirtualKeyCode.PRIOR);

            case FunctionKeys.PgDn:
                return(VirtualKeyCode.NEXT);

            case FunctionKeys.Delete:
                return(VirtualKeyCode.DELETE);

            case FunctionKeys.End:
                return(VirtualKeyCode.END);

            case FunctionKeys.Escape:
                return(VirtualKeyCode.ESCAPE);

            default:
                return(null);
            }
        }
示例#13
0
 public SchedulingApiService(FunctionKeys functionKeys, IHttpClientFactory httpClientFactory, string baseAddress)
     : base(httpClientFactory, baseAddress)
 {
     this.functionKeys = functionKeys;
 }
示例#14
0
        public MainWindowViewModel(AppConnector appConnector)
        {
            this.appConnector = appConnector;
            M = new MainWindowModel(this.appConnector);

            DialogViewModel                  = new DialogViewModel(M.DialogModel);
            ResultControlViewModel           = new ResultControlViewModel(M.ResultControlModel);
            FullScreenResultControlViewModel = new ResultControlViewModel(M.FullScreenResultControlModel);

            ViewModels = new Dictionary <Screen, IViewModel>()
            {
                { Screen.MainMenu, new MainMenuViewModel() },
                { Screen.GroupMenu, new GroupMenuViewModel() },
                { Screen.OneTouchMenu, new OneTouchMenuViewModel() },
            };
            foreach (KeyValuePair <Screen, IViewModel> p in ViewModels)
            {
                IViewModel vm = p.Value;
                vm.Model = M.Models[p.Key];
            }

            StepColors = new ObservableCollection <SolidColorBrush>()
            {
                Brushes.White,
                Brushes.White,
                Brushes.White,
                Brushes.White,
            };

            ShowVersionDialog = new DelegateCommand(() =>
            {
                M.DialogModel.ShowDialog($"TRS係員操作端末 MS-12\n\n\nVersion {ProductVersion}\n\n{Copyright}\n\n\n\nバージョン及び著作権の詳細は、取扱説明書をご覧下さい。", "バージョン情報");
            });

            List <ITicketPlugin> ticketPlugins = M.Plugins.TicketPlugins.ConvertAll(p => p.Plugin);

            TicketInputControls = ticketPlugins.ConvertAll(t => t.InputControl);
            TicketKeyControls   = ticketPlugins.ConvertAll(t => t.KeyControl);

            FClicked = M.FunctionKeyCommands;

            foreach (KeyValuePair <FunctionKeys, bool> item in FIsChecked)
            {
                M.FunctionKeyToggleButtonsIsChecked.Add(item);
            }


            M.PropertyChanged += new PropertyChangedEventHandler((sender, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(M.CurrentScreen):
                    Screen showedControl = Screen.None;
                    try
                    {
                        showedControl = ViewModels.First(p => p.Value.Visibility == Visibility.Visible).Key;
                        ViewModels[(Screen)showedControl].Visibility = Visibility.Hidden;
                    }
                    catch { }

                    if (M.CurrentScreen == Screen.Tickets)
                    {
                    }
                    else if (M.CurrentScreen != Screen.None)
                    {
                        IModel model = ViewModels[M.CurrentScreen].Model;
                        ViewModels[M.CurrentScreen].Visibility = Visibility.Visible;
                    }

                    if (M.CurrentScreen == Screen.None)
                    {
                        MainGridIsEnabled = false;
                        DoEvents();
                    }
                    else if (showedControl == Screen.None)
                    {
                        MainGridIsEnabled = true;
                    }
                    break;

                case nameof(M.IsTicketSending):
                    MainGridIsEnabled2 = !M.IsTicketSending;
                    DoEvents();
                    break;

                case nameof(M.SendType):
                    foreach (SendTypes type in Enum.GetValues(typeof(SendTypes)))
                    {
                        SendTypeButtonsIsChecked[type] = M.SendType == type;
                    }
                    break;

                case nameof(M.IsOneTimeMode):
                    LogBox4 = M.IsOneTimeMode ? "一件操作中" : "";
                    break;
                }
            });

            M.ResultControlModel.PropertyChanged += new PropertyChangedEventHandler((sender, e) =>
            {
                if (e.PropertyName == nameof(M.ResultControlModel.SendResult))
                {
                    if (M.ResultControlModel.IsVisible)
                    {
                        KeyControlVisibility  = Visibility.Hidden;
                        InputControlIsEnabled = false;
                        KeyControlIsEnabled   = false;
                    }
                    else
                    {
                        KeyControlVisibility  = Visibility.Visible;
                        InputControlIsEnabled = true;
                        KeyControlIsEnabled   = true;
                    }
                    DoEvents();
                }
            });

            M.FullScreenResultControlModel.PropertyChanged += new PropertyChangedEventHandler((sender, e) =>
            {
                if (e.PropertyName == nameof(M.FullScreenResultControlModel.SendResult))
                {
                    if (M.FullScreenResultControlModel.IsVisible)
                    {
                        InputControlVisibility = Visibility.Hidden;
                        KeyControlVisibility   = Visibility.Hidden;
                        InputControlIsEnabled  = false;
                        KeyControlIsEnabled    = false;
                    }
                    else
                    {
                        InputControlVisibility = Visibility.Visible;
                        KeyControlVisibility   = Visibility.Visible;
                        InputControlIsEnabled  = true;
                        KeyControlIsEnabled    = true;
                    }
                    DoEvents();
                }
            });

            M.FunctionKeyToggleButtonsIsChecked.CollectionChanged += new NotifyCollectionChangedEventHandler((sender, e) =>
            {
                try
                {
                    FunctionKeys key = M.FunctionKeyToggleButtonsIsChecked.First(c => c.Value != FIsChecked[c.Key]).Key;
                    FIsChecked[key]  = M.FunctionKeyToggleButtonsIsChecked[key];
                }
                catch { }
            });

            FIsChecked.CollectionChanged += new NotifyCollectionChangedEventHandler((sender, e) =>
            {
                try
                {
                    FunctionKeys key = FIsChecked.First(c => c.Value != M.FunctionKeyToggleButtonsIsChecked[c.Key]).Key;

                    M.FunctionKeyToggleButtonsIsChecked[key] = FIsChecked[key];
                }
                catch { }
            });

            SendTypeButtonsIsChecked.CollectionChanged += new NotifyCollectionChangedEventHandler((sender, e) =>
            {
                SendTypes?currentType = null;
                try
                {
                    currentType = SendTypeButtonsIsChecked.First(b => b.Value).Key;
                }
                catch { }
                M.SendType = currentType;
            });
        }
示例#15
0
        private void PublishKeyPress(FunctionKeys functionKey)
        {
            if (keyStateService.SimulateKeyStrokes)
            {
                Log.DebugFormat("KeyDownUp called with functionKey '{0}'.",  functionKey);

                var virtualKeyCode = functionKey.ToVirtualKeyCode();
                if (virtualKeyCode != null)
                {
                    publishService.KeyDownUp(virtualKeyCode.Value);
                }
            }
        }
示例#16
0
        public void ProcessFunctionKey(FunctionKeys functionKey)
        {
            Log.DebugFormat("Processing captured function key '{0}'", functionKey);

            lastTextChangeWasSuggestion = false;

            switch (functionKey)
            {
                case FunctionKeys.BackMany:
                    if (!string.IsNullOrEmpty(Text))
                    {
                        var backManyCount = Text.CountBackToLastCharCategoryBoundary();

                        dictionaryService.DecrementEntryUsageCount(Text.Substring(Text.Length - backManyCount, backManyCount).Trim());

                        var textAfterBackMany = Text.Substring(0, Text.Length - backManyCount);
                        var textChangedByBackMany = Text != textAfterBackMany;
                        Text = textAfterBackMany;

                        if (backManyCount == 0) backManyCount = 1; //Always publish at least one backspace

                        for (int i = 0; i < backManyCount; i++)
                        {
                            PublishKeyPress(FunctionKeys.BackOne);
                            ReleaseUnlockedKeys();
                        }

                        if (textChangedByBackMany
                            || string.IsNullOrEmpty(Text))
                        {
                            AutoPressShiftIfAppropriate();
                        }

                        StoreLastTextChange(null);
                        GenerateAutoCompleteSuggestions();

                        Log.Debug("Suppressing next auto space.");
                        suppressNextAutoSpace = true;
                    }
                    else
                    {
                        //Scratchpad is empty, but publish 1 backspace anyway, as per the behaviour for 'BackOne'
                        PublishKeyPress(FunctionKeys.BackOne);
                    }
                    break;

                case FunctionKeys.BackOne:
                    var backOneCount = string.IsNullOrEmpty(lastTextChange)
                        ? 1 //Default to removing one character if no lastTextChange
                        : lastTextChange.Length;

                    var textChangedByBackOne = false;

                    if (!string.IsNullOrEmpty(Text))
                    {
                        if (Text.Length < backOneCount)
                        {
                            backOneCount = Text.Length; //Coallesce backCount if somehow the Text length is less
                        }

                        var textAfterBackOne = Text.Substring(0, Text.Length - backOneCount);
                        textChangedByBackOne = Text != textAfterBackOne;

                        if (backOneCount > 1)
                        {
                            //Removing more than one character - only decrement removed string
                            dictionaryService.DecrementEntryUsageCount(Text.Substring(Text.Length - backOneCount, backOneCount).Trim());
                        }
                        else if(!string.IsNullOrEmpty(lastTextChange)
                            && lastTextChange.Length == 1
                            && !Char.IsWhiteSpace(lastTextChange[0]))
                        {
                            dictionaryService.DecrementEntryUsageCount(Text.InProgressWord(Text.Length)); //We are removing a non-whitespace character - decrement the in progress word
                            dictionaryService.IncrementEntryUsageCount(textAfterBackOne.InProgressWord(Text.Length)); //And increment the in progress word that is left after the removal
                        }

                        Text = textAfterBackOne;
                    }

                    for (int i = 0; i < backOneCount; i++)
                    {
                        PublishKeyPress(FunctionKeys.BackOne);
                        ReleaseUnlockedKeys();
                    }

                    if (textChangedByBackOne
                        || string.IsNullOrEmpty(Text))
                    {
                        AutoPressShiftIfAppropriate();
                    }

                    StoreLastTextChange(null);
                    GenerateAutoCompleteSuggestions();

                    Log.Debug("Suppressing next auto space.");
                    suppressNextAutoSpace = true;
                    break;

                case FunctionKeys.ClearScratchpad:
                    Text = null;
                    StoreLastTextChange(null);
                    ClearSuggestions();
                    AutoPressShiftIfAppropriate();
                    Log.Debug("Suppressing next auto space.");
                    suppressNextAutoSpace = true;
                    break;

                case FunctionKeys.Suggestion1:
                    SwapLastTextChangeForSuggestion(0);
                    lastTextChangeWasSuggestion = true;
                    break;

                case FunctionKeys.Suggestion2:
                    SwapLastTextChangeForSuggestion(1);
                    lastTextChangeWasSuggestion = true;
                    break;

                case FunctionKeys.Suggestion3:
                    SwapLastTextChangeForSuggestion(2);
                    lastTextChangeWasSuggestion = true;
                    break;

                case FunctionKeys.Suggestion4:
                    SwapLastTextChangeForSuggestion(3);
                    lastTextChangeWasSuggestion = true;
                    break;

                case FunctionKeys.Suggestion5:
                    SwapLastTextChangeForSuggestion(4);
                    lastTextChangeWasSuggestion = true;
                    break;

                case FunctionKeys.Suggestion6:
                    SwapLastTextChangeForSuggestion(5);
                    lastTextChangeWasSuggestion = true;
                    break;

                default:
                    if (functionKey.ToVirtualKeyCode() != null)
                    {
                        //Key corresponds to physical keyboard key
                        GenerateAutoCompleteSuggestions();

                        //If the key cannot be pressed or locked down (these are handled in
                        //ReactToPublishableKeyDownStateChanges) then publish it and release unlocked keys
                        var keyValue = new KeyValue { FunctionKey = functionKey };
                        if (!KeyValues.KeysWhichCanBePressedDown.Contains(keyValue)
                            && !KeyValues.KeysWhichCanBeLockedDown.Contains(keyValue))
                        {
                            PublishKeyPress(functionKey);
                            ReleaseUnlockedKeys();
                        }
                    }

                    if (functionKey == FunctionKeys.LeftShift)
                    {
                        shiftStateSetAutomatically = false;
                    }
                    break;
            }
        }
示例#17
0
        private void PublishKeyPress(FunctionKeys functionKey)
        {
            if (keyboardService.KeyDownStates[KeyValues.SimulateKeyStrokesKey].Value.IsDownOrLockedDown())
            {
                Log.DebugFormat("KeyDownUp called with functionKey '{0}'.",  functionKey);

                var virtualKeyCode = functionKey.ToVirtualKeyCode();
                if (virtualKeyCode != null)
                {
                    publishService.KeyDownUp(virtualKeyCode.Value);
                }
            }
        }
示例#18
0
 public override IEnumerator <Key> GetEnumerator()
 {
     return(FunctionKeys.GetEnumerator());
 }
示例#19
0
 private void PublishKeyPress(FunctionKeys functionKey)
 {
     if (keyStateService.SimulateKeyStrokes)
     {
         var virtualKeyCode = functionKey.ToVirtualKeyCode();
         if (virtualKeyCode != null)
         {
             Log.InfoFormat("Publishing function key '{0}' => as virtual key code {1}", functionKey, virtualKeyCode);
             publishService.KeyDownUp(virtualKeyCode.Value);
         }
     }
 }
 public KeyValue(FunctionKeys functionKey, string str)
 {
     this.functionKey = functionKey;
     this.str         = str;
 }
        //http://inputsimulator.codeplex.com/SourceControl/latest#WindowsInput/Native/VirtualKeyCode.cs
        //http://msdn.microsoft.com/en-gb/library/windows/desktop/dd375731(v=vs.85).aspx
        public static VirtualKeyCode?ToVirtualKeyCode(this FunctionKeys functionKey)
        {
            switch (functionKey)
            {
            case FunctionKeys.BackOne:
                return(VirtualKeyCode.BACK);

            case FunctionKeys.BrowserBack:
                return(VirtualKeyCode.BROWSER_BACK);

            case FunctionKeys.BrowserForward:
                return(VirtualKeyCode.BROWSER_FORWARD);

            case FunctionKeys.BrowserHome:
                return(VirtualKeyCode.BROWSER_HOME);

            case FunctionKeys.BrowserSearch:
                return(VirtualKeyCode.BROWSER_SEARCH);

            case FunctionKeys.LeftShift:
                return(VirtualKeyCode.LSHIFT);

            case FunctionKeys.LeftAlt:
                return(VirtualKeyCode.LMENU);    //This is not a typo ALT=MENU

            case FunctionKeys.LeftCtrl:
                return(VirtualKeyCode.LCONTROL);

            case FunctionKeys.LeftWin:
                return(VirtualKeyCode.LWIN);

            case FunctionKeys.F1:
                return(VirtualKeyCode.F1);

            case FunctionKeys.F2:
                return(VirtualKeyCode.F2);

            case FunctionKeys.F3:
                return(VirtualKeyCode.F3);

            case FunctionKeys.F4:
                return(VirtualKeyCode.F4);

            case FunctionKeys.F5:
                return(VirtualKeyCode.F5);

            case FunctionKeys.F6:
                return(VirtualKeyCode.F6);

            case FunctionKeys.F7:
                return(VirtualKeyCode.F7);

            case FunctionKeys.F8:
                return(VirtualKeyCode.F8);

            case FunctionKeys.F9:
                return(VirtualKeyCode.F9);

            case FunctionKeys.F10:
                return(VirtualKeyCode.F10);

            case FunctionKeys.F11:
                return(VirtualKeyCode.F11);

            case FunctionKeys.F12:
                return(VirtualKeyCode.F12);

            case FunctionKeys.F13:
                return(VirtualKeyCode.F13);

            case FunctionKeys.F14:
                return(VirtualKeyCode.F14);

            case FunctionKeys.F15:
                return(VirtualKeyCode.F15);

            case FunctionKeys.F16:
                return(VirtualKeyCode.F16);

            case FunctionKeys.F17:
                return(VirtualKeyCode.F17);

            case FunctionKeys.F18:
                return(VirtualKeyCode.F18);

            case FunctionKeys.F19:
                return(VirtualKeyCode.F19);

            case FunctionKeys.PrintScreen:
                return(VirtualKeyCode.SNAPSHOT);    //This is not a typo

            case FunctionKeys.ScrollLock:
                return(VirtualKeyCode.SCROLL);

            case FunctionKeys.NumberLock:
                return(VirtualKeyCode.NUMLOCK);

            case FunctionKeys.Menu:
                return(VirtualKeyCode.APPS);    //This is not a typo

            case FunctionKeys.ArrowUp:
                return(VirtualKeyCode.UP);

            case FunctionKeys.ArrowDown:
                return(VirtualKeyCode.DOWN);

            case FunctionKeys.ArrowLeft:
                return(VirtualKeyCode.LEFT);

            case FunctionKeys.ArrowRight:
                return(VirtualKeyCode.RIGHT);

            case FunctionKeys.Break:
                return(VirtualKeyCode.CANCEL);

            case FunctionKeys.Insert:
                return(VirtualKeyCode.INSERT);

            case FunctionKeys.Home:
                return(VirtualKeyCode.HOME);

            case FunctionKeys.NumPad0:
                return(VirtualKeyCode.NUMPAD0);

            case FunctionKeys.NumPad1:
                return(VirtualKeyCode.NUMPAD1);

            case FunctionKeys.NumPad2:
                return(VirtualKeyCode.NUMPAD2);

            case FunctionKeys.NumPad3:
                return(VirtualKeyCode.NUMPAD3);

            case FunctionKeys.NumPad4:
                return(VirtualKeyCode.NUMPAD4);

            case FunctionKeys.NumPad5:
                return(VirtualKeyCode.NUMPAD5);

            case FunctionKeys.NumPad6:
                return(VirtualKeyCode.NUMPAD6);

            case FunctionKeys.NumPad7:
                return(VirtualKeyCode.NUMPAD7);

            case FunctionKeys.NumPad8:
                return(VirtualKeyCode.NUMPAD8);

            case FunctionKeys.NumPad9:
                return(VirtualKeyCode.NUMPAD9);

            case FunctionKeys.PgUp:
                return(VirtualKeyCode.PRIOR);

            case FunctionKeys.PgDn:
                return(VirtualKeyCode.NEXT);

            case FunctionKeys.Delete:
                return(VirtualKeyCode.DELETE);

            case FunctionKeys.End:
                return(VirtualKeyCode.END);

            case FunctionKeys.Escape:
                return(VirtualKeyCode.ESCAPE);

            default:
                return(null);
            }
        }