/// <summary> /// Send a keypress to the application if it's running /// </summary> /// <param name="key">The keypress to send</param> /// <param name="isSelectedTab">True when this tab is currently selected in the UI</param> /// <returns>True when sent, false otherwise</returns> public virtual bool SendKey(CecKeypress key, bool isSelectedTab) { if (isSelectedTab) { UiControl.SelectKeypressRow(UiControl, CecButtonGridView, key); } if (isSelectedTab && SuppressKeypressWhenSelected.Value) { return(false); } if (!ControlApplication.Value) { return(false); } var mappedButton = ButtonConfig[key]; if (mappedButton == null || mappedButton.Value.Empty()) { return(false); } var controlWindow = ProcessName == "" ? IntPtr.Zero : FindInstance(); if ((ProcessName == "" || controlWindow != IntPtr.Zero) && (key.Duration == 0 || key.Duration > 500)) { return(mappedButton.Value.Transmit(controlWindow)); } return(false); }
/// <summary> /// Selects the row with the given CecKeypress for a datagrid /// </summary> /// <param name="container">The datagrid container</param> /// <param name="dgView">The datagrid</param> /// <param name="key">The key to selected</param> public static void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key) { if (dgView.InvokeRequired) { SelectKeypressRowCallback d = SelectKeypressRow; try { container.Invoke(d, new object[] { container, dgView, key }); } catch (Exception) { } } else { var rowIndex = -1; foreach (DataGridViewRow row in dgView.Rows) { CecButtonConfigItem item = row.DataBoundItem as CecButtonConfigItem; if (item != null && item.Key.Keycode == key.Keycode) { rowIndex = row.Index; row.Selected = true; item.Enabled = true; } else { row.Selected = false; } } if (rowIndex > -1) { dgView.FirstDisplayedScrollingRowIndex = rowIndex; } } }
public static ApplicationAction DefaultValue(CecKeypress key) { switch (key.Keycode) { case CecUserControlCode.Power: case CecUserControlCode.PowerOnFunction: case CecUserControlCode.PowerOffFunction: case CecUserControlCode.PowerToggleFunction: return(new ApplicationActionCloseController(null)); } return(null); }
public static ApplicationAction DefaultValue(CecKeypress key) { switch (key.Keycode) { case CecUserControlCode.Power: case CecUserControlCode.PowerOnFunction: case CecUserControlCode.PowerOffFunction: case CecUserControlCode.PowerToggleFunction: return new ApplicationActionCloseController(null); } return null; }
public void Init() { _keyTimeStamp = DateTime.Now; _connected = false; _keyDown = false; _keyCount = 0; _currentKeycode = 0; _wakeUpByAutoEvent = true; // Assume that user is not present. Set to false after user input. _currentButton = new CecKeypress(CecUserControlCode.Unknown, 0); LoadConfig(); }
public CecButtonConfigItem this[CecKeypress key] { get { foreach (var item in this) { if (item.Key.Keycode == key.Keycode) { return(item); } } return(null); } }
public override int ReceiveKeypress(CecKeypress key) { foreach (var app in _applications) { bool keySent = app.SendKey(key, app.UiName == _gui.SelectedTabName); if (keySent) { string strLog = string.Format("sent key '{0}' to '{1}'", (int)key.Keycode, app.UiName) + Environment.NewLine; _gui.AddLogMessage(strLog); break; } } return(1); }
public override int ReceiveCommand(CecCommand command) { if (command.Opcode == CecOpcode.Standby && (command.Destination == CecLogicalAddress.Broadcast || command.Destination == _lib.GetLogicalAddresses().Primary)) { if (Settings.StopTvStandby.Value) { var key = new CecKeypress(CecUserControlCode.Stop, 0); foreach (var app in _applications) { app.SendKey(key, false); } Lib.DisableCallbacks(); Application.SetSuspendState(PowerState.Suspend, false, false); } } return(0); }
/// <summary> /// Handler for commands from the remote control via the TV - does nothing /// </summary> /// <param name="command"></param> /// <returns></returns> public override int ReceiveKeypress(CecKeypress key) { return(1); }
public override int ReceiveKeypress(CecKeypress key) { return 1; }
public override ApplicationAction DefaultValue(CecKeypress key) { return null; }
public override ApplicationAction DefaultValue(CecKeypress key) { KeyInput keyInput = new KeyInput(null); switch (key.Keycode) { case CecUserControlCode.RightUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_UP); break; case CecUserControlCode.LeftUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_UP); break; case CecUserControlCode.Up: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_UP); break; case CecUserControlCode.RightDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_DOWN); break; case CecUserControlCode.LeftDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_DOWN); break; case CecUserControlCode.Down: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_DOWN); break; case CecUserControlCode.Left: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); break; case CecUserControlCode.Right: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); break; case CecUserControlCode.Select: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RETURN); break; case CecUserControlCode.Exit: case CecUserControlCode.SamsungReturn: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_BACK); break; case CecUserControlCode.RootMenu: case CecUserControlCode.SetupMenu: case CecUserControlCode.ContentsMenu: case CecUserControlCode.FavoriteMenu: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MENU); break; case CecUserControlCode.Number0: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD0); break; case CecUserControlCode.Number1: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD1); break; case CecUserControlCode.Number2: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD2); break; case CecUserControlCode.Number3: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD3); break; case CecUserControlCode.Number4: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD4); break; case CecUserControlCode.Number5: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD5); break; case CecUserControlCode.Number6: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD6); break; case CecUserControlCode.Number7: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD7); break; case CecUserControlCode.Number8: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD8); break; case CecUserControlCode.Number9: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD9); break; case CecUserControlCode.Dot: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_SELECT); break; case CecUserControlCode.Enter: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RETURN); break; case CecUserControlCode.Clear: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_CLEAR); break; case CecUserControlCode.F1Blue: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F1); break; case CecUserControlCode.F2Red: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F2); break; case CecUserControlCode.F3Green: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F3); break; case CecUserControlCode.F4Yellow: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F4); break; case CecUserControlCode.F5: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F5); break; case CecUserControlCode.ChannelUp: case CecUserControlCode.PageUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_NEXT_TRACK); break; case CecUserControlCode.ChannelDown: case CecUserControlCode.PageDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_PREV_TRACK); break; case CecUserControlCode.VolumeUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_VOLUME_UP); break; case CecUserControlCode.VolumeDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_VOLUME_DOWN); break; case CecUserControlCode.Mute: case CecUserControlCode.MuteFunction: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_VOLUME_MUTE); break; case CecUserControlCode.Play: case CecUserControlCode.PlayFunction: case CecUserControlCode.Pause: case CecUserControlCode.PausePlayFunction: case CecUserControlCode.PauseRecord: case CecUserControlCode.PauseRecordFunction: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_PLAY_PAUSE); break; case CecUserControlCode.Stop: case CecUserControlCode.StopFunction: case CecUserControlCode.StopRecord: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_STOP); break; case CecUserControlCode.Rewind: case CecUserControlCode.Backward: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); break; case CecUserControlCode.Forward: case CecUserControlCode.FastForward: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); break; //currently unmapped //case CecUserControlCode.NextFavorite: //case CecUserControlCode.PreviousChannel: //case CecUserControlCode.SoundSelect: //case CecUserControlCode.InputSelect: //case CecUserControlCode.DisplayInformation: //case CecUserControlCode.Help: //case CecUserControlCode.Record: //case CecUserControlCode.Eject: //case CecUserControlCode.Angle: //case CecUserControlCode.SubPicture: //case CecUserControlCode.VideoOnDemand: //case CecUserControlCode.ElectronicProgramGuide: //case CecUserControlCode.TimerProgramming: //case CecUserControlCode.RecordFunction: //case CecUserControlCode.RestoreVolumeFunction: //case CecUserControlCode.TuneFunction: //case CecUserControlCode.SelectMediaFunction: //case CecUserControlCode.SelectAVInputFunction: //case CecUserControlCode.SelectAudioInputFunction: //case CecUserControlCode.Data: //default: // break; } return(keyInput.Empty() ? null : keyInput); }
public override ApplicationAction DefaultValue(CecKeypress key) { KeyInput keyInput = new KeyInput(null); switch (key.Keycode) { case CecUserControlCode.RightUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_UP); break; case CecUserControlCode.LeftUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_UP); break; case CecUserControlCode.Up: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_UP); break; case CecUserControlCode.RightDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_DOWN); break; case CecUserControlCode.LeftDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_DOWN); break; case CecUserControlCode.Down: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_DOWN); break; case CecUserControlCode.Left: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); break; case CecUserControlCode.Right: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); break; case CecUserControlCode.Select: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RETURN); break; case CecUserControlCode.Exit: case CecUserControlCode.SamsungReturn: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_BACK); break; case CecUserControlCode.RootMenu: case CecUserControlCode.SetupMenu: case CecUserControlCode.ContentsMenu: case CecUserControlCode.FavoriteMenu: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MENU); break; case CecUserControlCode.Number0: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD0); break; case CecUserControlCode.Number1: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD1); break; case CecUserControlCode.Number2: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD2); break; case CecUserControlCode.Number3: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD3); break; case CecUserControlCode.Number4: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD4); break; case CecUserControlCode.Number5: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD5); break; case CecUserControlCode.Number6: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD6); break; case CecUserControlCode.Number7: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD7); break; case CecUserControlCode.Number8: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD8); break; case CecUserControlCode.Number9: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_NUMPAD9); break; case CecUserControlCode.Dot: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_SELECT); break; case CecUserControlCode.Enter: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RETURN); break; case CecUserControlCode.Clear: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_CLEAR); break; case CecUserControlCode.F1Blue: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F1); break; case CecUserControlCode.F2Red: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F2); break; case CecUserControlCode.F3Green: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F3); break; case CecUserControlCode.F4Yellow: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F4); break; case CecUserControlCode.F5: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_F5); break; case CecUserControlCode.ChannelUp: case CecUserControlCode.PageUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_NEXT_TRACK); break; case CecUserControlCode.ChannelDown: case CecUserControlCode.PageDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_PREV_TRACK); break; case CecUserControlCode.VolumeUp: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_VOLUME_UP); break; case CecUserControlCode.VolumeDown: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_VOLUME_DOWN); break; case CecUserControlCode.Mute: case CecUserControlCode.MuteFunction: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_VOLUME_MUTE); break; case CecUserControlCode.Play: case CecUserControlCode.PlayFunction: case CecUserControlCode.Pause: case CecUserControlCode.PausePlayFunction: case CecUserControlCode.PauseRecord: case CecUserControlCode.PauseRecordFunction: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_PLAY_PAUSE); break; case CecUserControlCode.Stop: case CecUserControlCode.StopFunction: case CecUserControlCode.StopRecord: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_MEDIA_STOP); break; case CecUserControlCode.Rewind: case CecUserControlCode.Backward: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_LEFT); break; case CecUserControlCode.Forward: case CecUserControlCode.FastForward: keyInput.AddKey(WindowsAPI.VirtualKeyCode.VK_RIGHT); break; //currently unmapped //case CecUserControlCode.NextFavorite: //case CecUserControlCode.PreviousChannel: //case CecUserControlCode.SoundSelect: //case CecUserControlCode.InputSelect: //case CecUserControlCode.DisplayInformation: //case CecUserControlCode.Help: //case CecUserControlCode.Record: //case CecUserControlCode.Eject: //case CecUserControlCode.Angle: //case CecUserControlCode.SubPicture: //case CecUserControlCode.VideoOnDemand: //case CecUserControlCode.ElectronicProgramGuide: //case CecUserControlCode.TimerProgramming: //case CecUserControlCode.RecordFunction: //case CecUserControlCode.RestoreVolumeFunction: //case CecUserControlCode.TuneFunction: //case CecUserControlCode.SelectMediaFunction: //case CecUserControlCode.SelectAVInputFunction: //case CecUserControlCode.SelectAudioInputFunction: //case CecUserControlCode.Data: //default: // break; } return keyInput.Empty() ? null : keyInput; }
public static ApplicationAction DefaultValue(CecKeypress key) { return(null); }
public static ApplicationAction DefaultValue(ApplicationController controller, CecKeypress key) { return controller.HasDefaultValue(key) ? controller.DefaultValue(key) : new ApplicationInput(null); }
/// <summary> /// Selects the row with the given CecKeypress for a datagrid /// </summary> /// <param name="container">The datagrid container</param> /// <param name="dgView">The datagrid</param> /// <param name="key">The key to selected</param> public void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key) { AsyncControls.SelectKeypressRow(container, dgView, key); }
public override int ReceiveKeypress(CecKeypress key) { Trace.WriteLine(string.Format("CEC keypress: {0} Duration:{1} Empty: {2}", key.Keycode.ToString(), key.Duration.ToString(), key.Empty.ToString())); return(1); }
public override int ReceiveKeypress(CecKeypress key) { return Gui.ReceiveKeypress(key); }
public override int ReceiveCommand(CecCommand command) { if (command.Opcode == CecOpcode.Standby && (command.Destination == CecLogicalAddress.Broadcast || command.Destination == _lib.GetLogicalAddresses().Primary)) if (Settings.StopTvStandby.Value) { var key = new CecKeypress(CecUserControlCode.Stop, 0); foreach (var app in _applications) app.SendKey(key, false); Lib.DisableCallbacks(); Application.SetSuspendState(PowerState.Suspend, false, false); } return 0; }
public override int ReceiveKeypress(CecKeypress key) { Console.WriteLine("ReceiveKeypress triggered, key = " + key.Keycode.ToString() + ", duration = " + key.Duration.ToString()); // if duration is 0 means keydown, duration > 0 means keyup if (key.Duration == 0) { WindowsAPI.VirtualKeyCode?keyCode = null; switch (key.Keycode) { case CecUserControlCode.Up: keyCode = WindowsAPI.VirtualKeyCode.VK_UP; break; case CecUserControlCode.Down: keyCode = WindowsAPI.VirtualKeyCode.VK_DOWN; break; case CecUserControlCode.Left: keyCode = WindowsAPI.VirtualKeyCode.VK_LEFT; break; case CecUserControlCode.Right: keyCode = WindowsAPI.VirtualKeyCode.VK_RIGHT; break; case CecUserControlCode.F1Blue: StartKodi(); break; //case CecUserControlCode.F2Red: case CecUserControlCode.F3Green: StartProgram(@"C:\Users\PX\Desktop", @"bigpicture.bat"); break; case CecUserControlCode.F4Yellow: ToggleProgram(@"C:\Program Files (x86)\Fraps", "fraps.exe"); break; case CecUserControlCode.Select: keyCode = WindowsAPI.VirtualKeyCode.VK_RETURN; break; case CecUserControlCode.Power: ShutdownComputer(); break; case CecUserControlCode.RootMenu: // Home Type shellType = Type.GetTypeFromProgID("Shell.Application"); dynamic shellInst = Activator.CreateInstance(shellType); shellInst.ToggleDesktop(); break; case CecUserControlCode.ContentsMenu: // Menü break; case CecUserControlCode.DisplayInformation: // Info break; case (CecUserControlCode)17: // Titel break; case CecUserControlCode.Backward: case CecUserControlCode.Play: case CecUserControlCode.Pause: case CecUserControlCode.Forward: case CecUserControlCode.Exit: break; //currently unmapped //case CecUserControlCode.SamsungReturn: //case CecUserControlCode.SetupMenu: //case CecUserControlCode.FavoriteMenu: //case CecUserControlCode.Number0: //case CecUserControlCode.Number1: //case CecUserControlCode.Number2: //case CecUserControlCode.Number3: //case CecUserControlCode.Number4: //case CecUserControlCode.Number5: //case CecUserControlCode.Number6: //case CecUserControlCode.Number7: //case CecUserControlCode.Number8: //case CecUserControlCode.Number9: //case CecUserControlCode.Dot: //case CecUserControlCode.Enter: //case CecUserControlCode.Clear: //case CecUserControlCode.ChannelUp: //case CecUserControlCode.PageUp: //case CecUserControlCode.ChannelDown: //case CecUserControlCode.PageDown: //case CecUserControlCode.VolumeUp: //case CecUserControlCode.VolumeDown: //case CecUserControlCode.Mute: //case CecUserControlCode.MuteFunction: //case CecUserControlCode.PlayFunction: //case CecUserControlCode.PausePlayFunction: //case CecUserControlCode.PauseRecord: //case CecUserControlCode.PauseRecordFunction: //case CecUserControlCode.Stop: //case CecUserControlCode.StopFunction: //case CecUserControlCode.StopRecord: //case CecUserControlCode.Rewind: //case CecUserControlCode.FastForward: //case CecUserControlCode.RightUp: //case CecUserControlCode.LeftUp: //case CecUserControlCode.RightDown: //case CecUserControlCode.LeftDown: //case CecUserControlCode.NextFavorite: //case CecUserControlCode.PreviousChannel: //case CecUserControlCode.SoundSelect: //case CecUserControlCode.InputSelect: //case CecUserControlCode.DisplayInformation: //case CecUserControlCode.Help: //case CecUserControlCode.Record: //case CecUserControlCode.Eject: //case CecUserControlCode.Angle: //case CecUserControlCode.SubPicture: //case CecUserControlCode.VideoOnDemand: //case CecUserControlCode.ElectronicProgramGuide: //case CecUserControlCode.TimerProgramming: //case CecUserControlCode.RecordFunction: //case CecUserControlCode.RestoreVolumeFunction: //case CecUserControlCode.TuneFunction: //case CecUserControlCode.SelectMediaFunction: //case CecUserControlCode.SelectAVInputFunction: //case CecUserControlCode.SelectAudioInputFunction: //case CecUserControlCode.Data: } if (keyCode.HasValue) { KeyInput keyInput = new KeyInput(); keyInput.AddKey((WindowsAPI.VirtualKeyCode)keyCode); WindowsAPI.Input[] inputAr = keyInput.ToArray(); WindowsAPI.SendInputTo(IntPtr.Zero, (uint)inputAr.Length, inputAr, System.Runtime.InteropServices.Marshal.SizeOf(typeof(WindowsAPI.Input))); } } return(1); }
public static bool HasDefaultValue(CecKeypress key) { return DefaultValue(key) != null; }
public override ApplicationAction DefaultValue(CecKeypress key) { return(null); }
public override int ReceiveKeypress(CecKeypress key) { int keyCode = (int)key.Keycode; if (_extensiveLogging) { WriteLog(String.Format("Button: {0} Code: {1} Duration: {2}", key.Keycode.ToString(), keyCode, key.Duration)); } if (key.Duration != 0) { if (_currentButton.Keycode == key.Keycode && _currentButton.Duration == 0) { _currentButton = key; return(1); } } if (_requireDelayBetweenKeys) { DateTime current = DateTime.Now; TimeSpan temp = current.Subtract(_keyTimeStamp); _keyTimeStamp = current; if (temp.TotalMilliseconds < _cecConfig.DelayBetweenKeys) { if (_extensiveLogging) { WriteLog("Button press ignored. Last button was received " + temp.TotalMilliseconds.ToString() + " milliseconds ago and required delay is " + _cecConfig.DelayBetweenKeys.ToString() + " milliseconds."); return(1); } } } if (_fastScrolling) { if (_currentButton.Keycode == key.Keycode) { if (_keyCount == _fastScrollingKeyCount && _keyDown == true) { _currentKeycode = (int)key.Keycode; _repeatTimer.Enabled = true; if (_extensiveLogging) { WriteLog("FastScrolling enabled, button repeat rate: " + _cecConfig.FastScrollingRepeatRate.ToString()); } return(1); } else { _keyCount++; } } else { _keyCount = 0; _repeatTimer.Enabled = false; } } KeyPress(keyCode); // Disable screensaver and wake "monitor" after waketimer by sending shift key. TODO: find a better way if (_disableScreensaver || _wakeUpByAutoEvent) { keybd_event(VK_LSHIFT, 0x2A, 0, 0); keybd_event(VK_LSHIFT, 0xAA, KEYEVENTF_KEYUP, 0); } _currentButton = key; return(1); }
public virtual bool HasDefaultValue(CecKeypress key) { return(DefaultValue(key) != null); }
public static bool HasDefaultValue(CecKeypress key) { return(DefaultValue(key) != null); }
public override int ReceiveKeypress(CecKeypress key) { int keyCode = (int)key.Keycode; if (_extensiveLogging) { WriteLog(String.Format("Button: {0} Code: {1} Duration: {2}", key.Keycode.ToString(), keyCode, key.Duration)); } if (key.Duration != 0) { if (_currentButton.Keycode == key.Keycode && _currentButton.Duration == 0) { _currentButton = key; return 1; } } if (_requireDelayBetweenKeys) { DateTime current = DateTime.Now; TimeSpan temp = current.Subtract(_keyTimeStamp); _keyTimeStamp = current; if (temp.TotalMilliseconds < _cecConfig.DelayBetweenKeys) { if (_extensiveLogging) { WriteLog("Button press ignored. Last button was received " + temp.TotalMilliseconds.ToString() + " milliseconds ago and required delay is " + _cecConfig.DelayBetweenKeys.ToString() + " milliseconds."); return 1; } } } if (_fastScrolling) { if (_currentButton.Keycode == key.Keycode) { if (_keyCount == _fastScrollingKeyCount && _keyDown == true) { _currentKeycode = (int)key.Keycode; _repeatTimer.Enabled = true; if (_extensiveLogging) { WriteLog("FastScrolling enabled, button repeat rate: " + _cecConfig.FastScrollingRepeatRate.ToString()); } return 1; } else { _keyCount++; } } else { _keyCount = 0; _repeatTimer.Enabled = false; } } KeyPress(keyCode); // Disable screensaver and wake "monitor" after waketimer by sending shift key. TODO: find a better way if (_disableScreensaver || _wakeUpByAutoEvent) { keybd_event(VK_LSHIFT, 0x2A, 0, 0); keybd_event(VK_LSHIFT, 0xAA, KEYEVENTF_KEYUP, 0); } _currentButton = key; return 1; }
public static ApplicationAction DefaultValue(ApplicationController controller, CecKeypress key) { return(controller.HasDefaultValue(key) ? controller.DefaultValue(key) : new ApplicationInput(null)); }
public static ApplicationAction DefaultValue(CecKeypress key) { return null; }
public int ReceiveKeypress(CecKeypress key) { SelectKeypressRow(key); return 1; }
public CecButtonConfigItem(ApplicationController controller, CecKeypress key) : base(CECSettingType.Button, null, ButtonName(key.Keycode), ApplicationInput.DefaultValue(controller, key).AsString(), null) { Key = key; }
/// <summary> /// Selects the row with the given CecKeypress for a datagrid /// </summary> /// <param name="container">The datagrid container</param> /// <param name="dgView">The datagrid</param> /// <param name="key">The key to selected</param> public static void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key) { if (dgView.InvokeRequired) { SelectKeypressRowCallback d = SelectKeypressRow; try { container.Invoke(d, new object[] { container, dgView, key }); } catch (Exception) { } } else { var rowIndex = -1; foreach (DataGridViewRow row in dgView.Rows) { CecButtonConfigItem item = row.DataBoundItem as CecButtonConfigItem; if (item != null && item.Key.Keycode == key.Keycode) { rowIndex = row.Index; row.Selected = true; item.Enabled = true; } else { row.Selected = false; } } if (rowIndex > -1) dgView.FirstDisplayedScrollingRowIndex = rowIndex; } }
public virtual ApplicationAction DefaultValue(CecKeypress key) { return null; }
public virtual bool HasDefaultValue(CecKeypress key) { return DefaultValue(key) != null; }
public virtual ApplicationAction DefaultValue(CecKeypress key) { return(null); }
/// <summary> /// Send a keypress to the application if it's running /// </summary> /// <param name="key">The keypress to send</param> /// <param name="isSelectedTab">True when this tab is currently selected in the UI</param> /// <returns>True when sent, false otherwise</returns> public virtual bool SendKey(CecKeypress key, bool isSelectedTab) { if (isSelectedTab) UiControl.SelectKeypressRow(UiControl, CecButtonGridView, key); if (isSelectedTab && SuppressKeypressWhenSelected.Value) return false; if (!ControlApplication.Value) return false; var mappedButton = ButtonConfig[key]; if (mappedButton == null || mappedButton.Value.Empty()) return false; var controlWindow = FindInstance(); if (controlWindow != IntPtr.Zero && key.Duration == 0) return mappedButton.Value.Transmit(controlWindow); return false; }
public override int ReceiveKeypress(CecKeypress key) { foreach (var app in _applications) { bool keySent = app.SendKey(key, app.UiName == _gui.SelectedTabName); if (keySent) { string strLog = string.Format("sent key '{0}' to '{1}'", (int) key.Keycode, app.UiName) + Environment.NewLine; _gui.AddLogMessage(strLog); break; } } return 1; }
/// <summary>Dummy RecieveKeypress callback</summary> /// <param name="key"></param> /// <returns>Always 1</returns> public override int ReceiveKeypress(CecKeypress key) => 1;