internal void firekeyStateChangedEvent(BrailleIO_DeviceButtonStates states, List <string> pressedKeys, List <string> releasedKeys, int timeStampTickCount) { OrderedDictionary raw = new OrderedDictionary(); raw.Add("pressedKeys", pressedKeys); raw.Add("releasedKeys", releasedKeys); raw.Add("timeStampTickCount", timeStampTickCount); fireKeyStateChanged(states, ref raw); }
/// <summary> /// Gets the 'down' state value for a certain device button. /// </summary> /// <param name="button">The button.</param> /// <returns>the enum value for the 'down' state of the button</returns> public static BrailleIO_DeviceButtonStates GetDownStateForDeviceButton(BrailleIO_DeviceButton button) { int val = (int)button; BrailleIO_DeviceButtonStates result = BrailleIO_DeviceButtonStates.None; try { result = (BrailleIO_DeviceButtonStates)ShiftUpButtonsToUpDownStates(GetButtonUpFlags(val)); } catch (Exception) { } return(result); }
/// <summary> /// Fires a key state changed event. /// </summary> /// <param name="keyCode">The key code.</param> /// <param name="raw">The raw.</param> /// <param name="keyboardCode">optional combined Braille keyboard button states.</param> /// <param name="additionalKeyCode">list of optional combined additional button states.</param> protected virtual void fireKeyStateChanged( BrailleIO_DeviceButtonStates keyCode, ref OrderedDictionary raw, BrailleIO_BrailleKeyboardButtonStates keyboardCode = BrailleIO_BrailleKeyboardButtonStates.None, BrailleIO_AdditionalButtonStates[] additionalKeyCode = null) { BrailleIO_DeviceButton pressed = BrailleIO_DeviceButton.None; BrailleIO_DeviceButton released = BrailleIO_DeviceButton.None; BrailleIO_BrailleKeyboardButton pressedKbB = BrailleIO_BrailleKeyboardButton.None; BrailleIO_BrailleKeyboardButton releasedKbB = BrailleIO_BrailleKeyboardButton.None; Dictionary <int, BrailleIO_AdditionalButton> pressedAdBs = null; Dictionary <int, BrailleIO_AdditionalButton> releasedAdBs = null; try { // general buttons updatePressedDeviceButtons(keyCode, out pressed, out released); // braille keyboard buttons updatePressedKeyboardButtons(keyboardCode, out pressedKbB, out releasedKbB); // additional buttons updatePressedAdditionalButtons(additionalKeyCode, out pressedAdBs, out releasedAdBs); } catch { System.Diagnostics.Debug.WriteLine("ERROR in updating the current button states"); } finally { // TODO: what to do to get it valid again?! } if (keyStateChanged != null) { try { keyStateChanged(this, new BrailleIO_KeyStateChanged_EventArgs(keyCode, ref raw, keyboardCode, additionalKeyCode)); } catch { } } checkForKeyCombination( pressed, released, pressedKbB, releasedKbB, pressedAdBs, releasedAdBs); }
internal void firekeyStateChangedEvent(BrailleIO_DeviceButtonStates states, BrailleIO_BrailleKeyboardButtonStates keyboardCode, BrailleIO_AdditionalButtonStates[] additionalKeyCode, List <string> pressedKeys, List <string> releasedKeys, int timeStampTickCount) { OrderedDictionary raw = new OrderedDictionary(); raw.Add("pressedKeys", pressedKeys); raw.Add("releasedKeys", releasedKeys); raw.Add("timeStampTickCount", timeStampTickCount); fireKeyStateChanged(states, ref raw, keyboardCode, additionalKeyCode); //fireKeyStateChanged(states, ref raw); }
/// <summary> /// Gets the device buttons contained in the states flags. /// </summary> /// <param name="states">The states.</param> /// <returns>List of buttons contained in that state flag</returns> /// <remarks>DEPRECATED! use flag stuff instead</remarks> public static List <BrailleIO_DeviceButton> GetDeviceButtonsOfStates(BrailleIO_DeviceButtonStates states) { List <BrailleIO_DeviceButton> result = new List <BrailleIO_DeviceButton>(); foreach (BrailleIO_DeviceButtonStates r in Enum.GetValues(typeof(BrailleIO_DeviceButtonStates))) { if (states.HasFlag(r)) { var b = GetDeviceButtonFlagsOfState(r); if (!result.Contains(b)) { result.Add(b); } } } return(result); }
/// <summary> /// Gets all released general buttons. /// </summary> /// <param name="keys">All current keys states.</param> /// <returns>a list of released general buttons</returns> virtual public List<BrailleIO_DeviceButton> GetAllReleasedGeneralButtons(BrailleIO_DeviceButtonStates keys) { List<BrailleIO_DeviceButton> k = new List<BrailleIO_DeviceButton>(); if ((keys == BrailleIO_DeviceButtonStates.None) || keys < 0) return k; if ((keys & BrailleIO_DeviceButtonStates.EnterUp) == BrailleIO_DeviceButtonStates.EnterUp) k.Add(BrailleIO_DeviceButton.Enter); if ((keys & BrailleIO_DeviceButtonStates.AbortUp) == BrailleIO_DeviceButtonStates.AbortUp) k.Add(BrailleIO_DeviceButton.Abort); if ((keys & BrailleIO_DeviceButtonStates.GestureUp) == BrailleIO_DeviceButtonStates.GestureUp) k.Add(BrailleIO_DeviceButton.Gesture); if ((keys & BrailleIO_DeviceButtonStates.LeftUp) == BrailleIO_DeviceButtonStates.LeftUp) k.Add(BrailleIO_DeviceButton.Left); if ((keys & BrailleIO_DeviceButtonStates.RightUp) == BrailleIO_DeviceButtonStates.RightUp) k.Add(BrailleIO_DeviceButton.Right); if ((keys & BrailleIO_DeviceButtonStates.UpUp) == BrailleIO_DeviceButtonStates.UpUp) k.Add(BrailleIO_DeviceButton.Up); if ((keys & BrailleIO_DeviceButtonStates.DownUp) == BrailleIO_DeviceButtonStates.DownUp) k.Add(BrailleIO_DeviceButton.Down); if ((keys & BrailleIO_DeviceButtonStates.ZoomInUp) == BrailleIO_DeviceButtonStates.ZoomInUp) k.Add(BrailleIO_DeviceButton.ZoomIn); if ((keys & BrailleIO_DeviceButtonStates.ZoomOutUp) == BrailleIO_DeviceButtonStates.ZoomOutUp) k.Add(BrailleIO_DeviceButton.ZoomOut); if ((keys & BrailleIO_DeviceButtonStates.Unknown) == BrailleIO_DeviceButtonStates.Unknown) k.Add(BrailleIO_DeviceButton.Unknown); return k; }
/// <summary>Updates the list of pressed device buttons.</summary> /// <param name="keyCode">The key code.</param> /// <param name="pressedDB">The pressed device buttons.</param> /// <param name="releasedDB">The released device buttons.</param> protected virtual void updatePressedDeviceButtons(BrailleIO_DeviceButtonStates keyCode, out BrailleIO_DeviceButton pressedDB, out BrailleIO_DeviceButton releasedDB) { pressedDB = BrailleIO_DeviceButton.None; releasedDB = BrailleIO_DeviceButton.None; if (keyCode != BrailleIO_DeviceButtonStates.None) { lock (_syncLock) { pressedDB = Utils.GetAllDownDeviceButtons(keyCode); PressedDeviceButtons = PressedDeviceButtons | pressedDB; releasedDB = Utils.GetAllUpDeviceButtons(keyCode); PressedDeviceButtons = PressedDeviceButtons & ~releasedDB; } } }
/// <summary>Fires the key pressed event.</summary> /// <param name="keyCode">The key code.</param> /// <param name="raw">The raw hardware data.</param> /// <param name="keyboardButtonStates">The current pressed keyboard button states.</param> /// <param name="additionalButtonStates">The current pressed additional button states.</param> protected virtual void fireKeyPressed( BrailleIO_DeviceButtonStates keyCode, ref OrderedDictionary raw, BrailleIO_BrailleKeyboardButtonStates keyboardButtonStates, BrailleIO_AdditionalButtonStates[] additionalButtonStates ) { if (keyPressed != null) { try { keyPressed.Invoke( this, new BrailleIO_KeyPressed_EventArgs( keyCode, ref raw, keyboardButtonStates, additionalButtonStates)); } catch { } } }
public abstract void HandleInteraction(BrailleIO_DeviceButtonStates keyEvent);
/// <summary> /// Gets the 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_DeviceButton GetDeviceButtonOfState(BrailleIO_DeviceButtonStates state) { return(GetDeviceButtonOfState(state.ToString())); }
private void interpretGeneralButtons(BrailleIO_DeviceButtonStates states, IBrailleIOAdapter sender) { if (states != BrailleIO_DeviceButtonStates.None) { if ((states & BrailleIO_DeviceButtonStates.AbortDown) == BrailleIO_DeviceButtonStates.AbortDown) { invertImage(BS_MAIN_NAME, "center"); } else if ((states & BrailleIO_DeviceButtonStates.AbortUp) == BrailleIO_DeviceButtonStates.AbortUp) { } if ((states & BrailleIO_DeviceButtonStates.DownDown) == BrailleIO_DeviceButtonStates.DownDown) { moveVertical(BS_MAIN_NAME, "center", -5); } else if ((states & BrailleIO_DeviceButtonStates.DownUp) == BrailleIO_DeviceButtonStates.DownUp) { } if ((states & BrailleIO_DeviceButtonStates.EnterDown) == BrailleIO_DeviceButtonStates.EnterDown) { } else if ((states & BrailleIO_DeviceButtonStates.EnterUp) == BrailleIO_DeviceButtonStates.EnterUp) { } if ((states & BrailleIO_DeviceButtonStates.GestureDown) == BrailleIO_DeviceButtonStates.GestureDown) { /*if (io != null) { io.AllPinsDown(); }*/ if (sender == brailleDisAdapter) { interpretBrailleDisGesture = true; } if (sender == showOffAdapter) { interpretShowOfGesture = true; } } else if ((states & BrailleIO_DeviceButtonStates.GestureUp) == BrailleIO_DeviceButtonStates.GestureUp) { /*if (io != null) { io.RestoreLastRendering(); }*/ // evaluate the result if (sender == brailleDisAdapter) { interpretBrailleDisGesture = false; } if (sender == showOffAdapter) { interpretShowOfGesture = false; } recognizeGesture(sender); } if ((states & BrailleIO_DeviceButtonStates.LeftDown) == BrailleIO_DeviceButtonStates.LeftDown) { moveHorizontal(BS_MAIN_NAME, "center", 5); } else if ((states & BrailleIO_DeviceButtonStates.LeftUp) == BrailleIO_DeviceButtonStates.LeftUp) { } if ((states & BrailleIO_DeviceButtonStates.RightDown) == BrailleIO_DeviceButtonStates.RightDown) { moveHorizontal(BS_MAIN_NAME, "center", -5); } else if ((states & BrailleIO_DeviceButtonStates.RightUp) == BrailleIO_DeviceButtonStates.RightUp) { } if ((states & BrailleIO_DeviceButtonStates.UpDown) == BrailleIO_DeviceButtonStates.UpDown) { moveVertical(BS_MAIN_NAME, "center", 5); } else if ((states & BrailleIO_DeviceButtonStates.UpUp) == BrailleIO_DeviceButtonStates.UpUp) { } if ((states & BrailleIO_DeviceButtonStates.ZoomInDown) == BrailleIO_DeviceButtonStates.ZoomInDown) { zoom(BS_MAIN_NAME, "center", 1.3); //zoomPlus(BS_MAIN_NAME, "center", 0.00005); } else if ((states & BrailleIO_DeviceButtonStates.ZoomInUp) == BrailleIO_DeviceButtonStates.ZoomInUp) { } if ((states & BrailleIO_DeviceButtonStates.ZoomOutDown) == BrailleIO_DeviceButtonStates.ZoomOutDown) { //zoomPlus(BS_MAIN_NAME, "center", -0.00005); zoom(BS_MAIN_NAME, "center", 0.6); } else if ((states & BrailleIO_DeviceButtonStates.ZoomOutUp) == BrailleIO_DeviceButtonStates.ZoomOutUp) { } } }
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); } } }
internal void fireKeyStateChangeEvent(BrailleIO_DeviceButtonStates states, 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); } else { _pressedButtons.Add(pk); _pressedStates.Add(states); } } } } 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); } else { _releasedButtons.Add(rk); _releasedStates.Add(states); } } } } MarkButtonAsPressed(_pressedButtons); } BrailleIO_DeviceButtonStates ps = BrailleIO_DeviceButtonStates.None; foreach (BrailleIO_DeviceButtonStates s in _pressedStates) { ps = ps | s; } // fire always button pressed but wait for release if (ShowOffAdapter != null && pressedKeys != null && pressedKeys.Count > 0) { 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; } ShowOffAdapter.firekeyStateChangedEvent(rs, new List <String>(), _releasedButtons, timeStampTickCount); UnmarkButtons(_releasedButtons); _pressedButtons.Clear(); _releasedButtons.Clear(); _pressedStates.Clear(); _releasedStates.Clear(); } } else { if (ShowOffAdapter != null) { ShowOffAdapter.firekeyStateChangedEvent(states, pressedKeys, releasedKeys, timeStampTickCount); } } }
/// <summary> /// Initializes a new instance of the <see cref="BrailleIO_KeyStateChanged_EventArgs"/> class. /// </summary> /// <param name="keyCode">The key code.</param> /// <param name="raw">The original raw event data from the device.</param> public BrailleIO_KeyStateChanged_EventArgs(BrailleIO_DeviceButtonStates keyCode, ref OrderedDictionary raw) { this.keyCode = keyCode; this.raw = raw; }
/// <summary> /// Initializes a new instance of the <see cref="BrailleIO_KeyPressed_EventArgs"/> class. /// </summary> /// <param name="keyCode">The key code.</param> /// <param name="raw">The original raw event data from the device.</param> public BrailleIO_KeyPressed_EventArgs(BrailleIO_DeviceButtonStates keyCode, ref Object raw) { this.keyCode = keyCode; this.raw = raw; }
/// <summary> /// Initializes a new instance of the <see cref="BrailleIO_KeyStateChanged_EventArgs"/> class. /// </summary> /// <param name="keyCode">The key code.</param> /// <param name="raw">The original raw event data from the device.</param> public BrailleIO_KeyStateChanged_EventArgs(BrailleIO_DeviceButtonStates keyCode, ref OrderedDictionary raw, BrailleIO_BrailleKeyboardButtonStates keyboardCode = BrailleIO_BrailleKeyboardButtonStates.None, BrailleIO_AdditionalButtonStates[] additionalKeyCode = null) : base(keyCode, ref raw, keyboardCode, additionalKeyCode) { }
/// <summary> /// Initializes a new instance of the <see cref="BrailleIO_KeyStateChanged_EventArgs" /> class. /// </summary> /// <param name="keyCode">The key code.</param> public BrailleIO_KeyStateChanged_EventArgs(BrailleIO_DeviceButtonStates keyCode) : base(keyCode) { }
/// <summary> /// Initializes a new instance of the <see cref="BrailleIO_KeyStateChanged_EventArgs" /> class. /// </summary> /// <param name="keyCode">The key code.</param> public BrailleIO_KeyStateChanged_EventArgs(BrailleIO_DeviceButtonStates keyCode) { this.keyCode = keyCode; this.raw = null; }