/// <summary> /// Gets all pressed additional device buttons. /// </summary> /// <param name="state">The state.</param> /// <returns>Flag of all pressed additional device buttons</returns> public static BrailleIO_AdditionalButton GetAllDownAdditionalButtons(BrailleIO_AdditionalButtonStates state) { BrailleIO_AdditionalButton result = BrailleIO_AdditionalButton.None; try { result = (BrailleIO_AdditionalButton)ShiftDownButtonsToUpButtonStates(GetButtonDownFlags((int)state)); } catch (Exception) { } return(result); }
/// <summary> /// Gets all released additional device buttons. /// </summary> /// <param name="state">The state.</param> /// <returns>Flag of all released additional device buttons</returns> public static BrailleIO_AdditionalButton GetAllUpAdditionalButtons(BrailleIO_AdditionalButtonStates state) { BrailleIO_AdditionalButton result = BrailleIO_AdditionalButton.None; try { result = (BrailleIO_AdditionalButton)GetButtonUpFlags((int)state); } catch (Exception) { } return(result); }
/// <summary> /// Gets the additional device button for one certain button state. /// </summary> /// <param name="state">The state.</param> /// <returns>the button related to this state</returns> public static BrailleIO_AdditionalButton GetDeviceButtonFlagsOfState(BrailleIO_AdditionalButtonStates state) { BrailleIO_AdditionalButton buttons = BrailleIO_AdditionalButton.None; try { buttons = (BrailleIO_AdditionalButton)ShiftDownButtonsToUpButtonStates((int)state); } catch (Exception) { } return(buttons); }
/// <summary> /// Gets the 'down' state value for a certain additional device button. /// </summary> /// <param name="button">The button.</param> /// <returns>the enum value for the 'down' state of the button</returns> public static BrailleIO_AdditionalButtonStates GetDownStateForDeviceButton(BrailleIO_AdditionalButton button) { int val = (int)button; BrailleIO_AdditionalButtonStates result = BrailleIO_AdditionalButtonStates.None; try { result = (BrailleIO_AdditionalButtonStates)ShiftUpButtonsToUpDownStates(GetButtonUpFlags(val)); } catch (Exception) { } return(result); }
internal void fireKeyStateChangeEvent(BrailleIO_DeviceButtonStates states, BrailleIO_BrailleKeyboardButtonStates keyboardCode, BrailleIO_AdditionalButtonStates[] additionalKeyCode, List <string> pressedKeys, List <string> releasedKeys, int timeStampTickCount) { if (Ctr) { //check if pressed or released if (releasedKeys == null || releasedKeys.Count < 1) //pressed keys { if (pressedKeys != null && pressedKeys.Count > 0) { foreach (string pk in pressedKeys) { if (_pressedButtons.Contains(pk)) { UnmarkButtons(new List <String> { pk }); _pressedButtons.Remove(pk); _pressedStates.Remove(states); _pressedKeyboradStates.Remove(keyboardCode); if (additionalKeyCode != null && additionalKeyCode.Length > 0) { _pressedFncStates.Remove(additionalKeyCode[0]); } } else { _pressedButtons.Add(pk); _pressedStates.Add(states); _pressedKeyboradStates.Add(keyboardCode); if (additionalKeyCode != null && additionalKeyCode.Length > 0) { _pressedFncStates.Add(additionalKeyCode[0]); } } } } } else // released keys { if (releasedKeys != null && releasedKeys.Count > 0) { foreach (string rk in releasedKeys) { if (_releasedButtons.Contains(rk)) { UnmarkButtons(new List <String> { rk }); _releasedButtons.Remove(rk); _releasedStates.Remove(states); _releasedKeybordStates.Remove(keyboardCode); if (additionalKeyCode != null && additionalKeyCode.Length > 0) { _releasedFncStates.Remove(additionalKeyCode[0]); } } else { _releasedButtons.Add(rk); _releasedStates.Add(states); _releasedKeybordStates.Add(keyboardCode); if (additionalKeyCode != null && additionalKeyCode.Length > 0) { _releasedFncStates.Add(additionalKeyCode[0]); } } } } } MarkButtonAsPressed(_pressedButtons); } BrailleIO_DeviceButtonStates ps = BrailleIO_DeviceButtonStates.None; foreach (BrailleIO_DeviceButtonStates s in _pressedStates) { ps = ps | s; } BrailleIO_BrailleKeyboardButtonStates ks = BrailleIO_BrailleKeyboardButtonStates.None; foreach (BrailleIO_BrailleKeyboardButtonStates item in _pressedKeyboradStates) { ks |= item; } BrailleIO_AdditionalButtonStates ads = BrailleIO_AdditionalButtonStates.None; foreach (BrailleIO_AdditionalButtonStates item in _pressedFncStates) { ads |= item; } // fire always button pressed but wait for release if (ShowOffAdapter != null && pressedKeys != null && pressedKeys.Count > 0) { ShowOffAdapter.firekeyStateChangedEvent(ps, ks, new BrailleIO_AdditionalButtonStates[1] { ads }, _pressedButtons, new List <String>(), timeStampTickCount); } // ShowOffAdapter.firekeyStateChangedEvent(ps, _pressedButtons, new List<String>(), timeStampTickCount); if (Ctr) { return; // break the release or reset functions } if (states == BrailleIO_DeviceButtonStates.None && pressedKeys == null && releasedKeys == null && timeStampTickCount == 0) { //check if this is because the ctr is released if (ShowOffAdapter != null) { BrailleIO_DeviceButtonStates rs = BrailleIO_DeviceButtonStates.None; foreach (BrailleIO_DeviceButtonStates s in _releasedStates) { rs = rs | s; } BrailleIO_BrailleKeyboardButtonStates rks = BrailleIO_BrailleKeyboardButtonStates.None; foreach (BrailleIO_BrailleKeyboardButtonStates item in _releasedKeybordStates) { rks |= item; } // TODO: do for additional buttons BrailleIO_AdditionalButtonStates rads = BrailleIO_AdditionalButtonStates.None; foreach (BrailleIO_AdditionalButtonStates item in _releasedFncStates) { rads |= item; } ShowOffAdapter.firekeyStateChangedEvent(rs, rks, new BrailleIO_AdditionalButtonStates[1] { rads }, new List <String>(), _releasedButtons, timeStampTickCount); //ShowOffAdapter.firekeyStateChangedEvent(rs, new List<String>(), _releasedButtons, timeStampTickCount); UnmarkButtons(_releasedButtons); _pressedButtons.Clear(); _releasedButtons.Clear(); _pressedStates.Clear(); _pressedKeyboradStates.Clear(); _pressedFncStates.Clear(); _releasedStates.Clear(); _releasedKeybordStates.Clear(); _releasedFncStates.Clear(); } } else { if (ShowOffAdapter != null) { ShowOffAdapter.firekeyStateChangedEvent(states, keyboardCode, additionalKeyCode, pressedKeys, releasedKeys, timeStampTickCount); //ShowOffAdapter.firekeyStateChangedEvent(states, pressedKeys, releasedKeys, timeStampTickCount); } } }