コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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;
         }
     }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: ApplicationInput.cs プロジェクト: n8o/libcec
 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;
 }
コード例 #5
0
ファイル: CecClientBase.cs プロジェクト: Ndreu/cecremote
        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();
        }
コード例 #6
0
 public CecButtonConfigItem this[CecKeypress key]
 {
     get
     {
         foreach (var item in this)
         {
             if (item.Key.Keycode == key.Keycode)
             {
                 return(item);
             }
         }
         return(null);
     }
 }
コード例 #7
0
ファイル: CecClientBase.cs プロジェクト: bpietroiu/cecremote
    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();

    }
コード例 #8
0
        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);
        }
コード例 #9
0
 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);
 }
コード例 #10
0
ファイル: CecClient.cs プロジェクト: brianavid/Avid4G.Net
 /// <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);
 }
コード例 #11
0
 public override int ReceiveKeypress(CecKeypress key)
 {
   return 1;
 }
コード例 #12
0
ファイル: XBMCController.cs プロジェクト: n8o/libcec
 public override ApplicationAction DefaultValue(CecKeypress key)
 {
     return null;
 }
コード例 #13
0
        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);
        }
コード例 #14
0
ファイル: WMCController.cs プロジェクト: jajoflo/libcec
        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;
        }
コード例 #15
0
 public static ApplicationAction DefaultValue(CecKeypress key)
 {
     return(null);
 }
コード例 #16
0
ファイル: ApplicationInput.cs プロジェクト: n8o/libcec
 public static ApplicationAction DefaultValue(ApplicationController controller, CecKeypress key)
 {
     return controller.HasDefaultValue(key) ? controller.DefaultValue(key) : new ApplicationInput(null);
 }
コード例 #17
0
ファイル: AsyncForm.cs プロジェクト: jajoflo/libcec
 /// <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);
 }
コード例 #18
0
 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);
 }
コード例 #19
0
ファイル: CecConfigGUI.cs プロジェクト: behaviour/libcec
 public override int ReceiveKeypress(CecKeypress key)
 {
     return Gui.ReceiveKeypress(key);
 }
コード例 #20
0
ファイル: CECController.cs プロジェクト: RedsGT/libcec
 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;
 }
コード例 #21
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);
        }
コード例 #22
0
ファイル: ApplicationInput.cs プロジェクト: n8o/libcec
 public static bool HasDefaultValue(CecKeypress key)
 {
     return DefaultValue(key) != null;
 }
コード例 #23
0
 public override ApplicationAction DefaultValue(CecKeypress key)
 {
     return(null);
 }
コード例 #24
0
ファイル: CecClientBase.cs プロジェクト: Ndreu/cecremote
        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);
        }
コード例 #25
0
 public virtual bool HasDefaultValue(CecKeypress key)
 {
     return(DefaultValue(key) != null);
 }
コード例 #26
0
 public static bool HasDefaultValue(CecKeypress key)
 {
     return(DefaultValue(key) != null);
 }
コード例 #27
0
ファイル: CecClientBase.cs プロジェクト: bpietroiu/cecremote
    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;

    }
コード例 #28
0
 public static ApplicationAction DefaultValue(ApplicationController controller, CecKeypress key)
 {
     return(controller.HasDefaultValue(key) ? controller.DefaultValue(key) : new ApplicationInput(null));
 }
コード例 #29
0
ファイル: ApplicationInput.cs プロジェクト: n8o/libcec
 public static ApplicationAction DefaultValue(CecKeypress key)
 {
     return null;
 }
コード例 #30
0
ファイル: CecConfigGUI.cs プロジェクト: behaviour/libcec
 public int ReceiveKeypress(CecKeypress key)
 {
     SelectKeypressRow(key);
       return 1;
 }
コード例 #31
0
 public CecButtonConfigItem(ApplicationController controller, CecKeypress key) :
     base(CECSettingType.Button, null, ButtonName(key.Keycode), ApplicationInput.DefaultValue(controller, key).AsString(), null)
 {
     Key = key;
 }
コード例 #32
0
ファイル: AsyncForm.cs プロジェクト: jajoflo/libcec
 /// <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;
       }
 }
コード例 #33
0
 public virtual ApplicationAction DefaultValue(CecKeypress key)
 {
     return null;
 }
コード例 #34
0
 /// <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);
 }
コード例 #35
0
 public virtual bool HasDefaultValue(CecKeypress key)
 {
     return DefaultValue(key) != null;
 }
コード例 #36
0
 public virtual ApplicationAction DefaultValue(CecKeypress key)
 {
     return(null);
 }
コード例 #37
0
        /// <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;
        }
コード例 #38
0
ファイル: CECController.cs プロジェクト: n8o/libcec
        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;
        }
コード例 #39
0
ファイル: CecBus.cs プロジェクト: Dlizzz/Catspaw
 /// <summary>Dummy RecieveKeypress callback</summary>
 /// <param name="key"></param>
 /// <returns>Always 1</returns>
 public override int ReceiveKeypress(CecKeypress key) => 1;