public void SetActiveGazeButton(GAZE_BUTTON_TYPE gb)
        {
            gazeButtonsList[(int)gb].BackColor = translucentWhite;

            if (gb != activeGazeButton)
            {
                gazeButtonsList[(int)activeGazeButton].BackColor = Color.Black;

                //set gb as active
                activeGazeButton = gb;
                gazeButtonsList[(int)activeGazeButton].Select();

                Logger.WriteVar(nameof(activeGazeButton), activeGazeButton);

                this.Invalidate(true);
            }
        }
 public DockForm()
 {
     InitializeComponent();
     activeGazeButton = GAZE_BUTTON_TYPE.NONE;
 }
        private void gazeButton_Click(object sender, EventArgs e)
        {
            Logger.WriteEvent();

            Button           clickedButton = (Button)sender;
            GAZE_BUTTON_TYPE gb            = GAZE_BUTTON_TYPE.NONE;

            if (clickedButton.Text.Equals(gazeButtonTextStrings[(int)GAZE_BUTTON_TYPE.UP]))
            {
                PrecisionGazeMouseForm.nextClickType = PrecisionGazeMouseForm.NEXTCLICKTYPE.SCROLLUP;
                gb = GAZE_BUTTON_TYPE.UP;
            }
            else if (clickedButton.Text.Equals(gazeButtonTextStrings[(int)GAZE_BUTTON_TYPE.DOWN]))
            {
                PrecisionGazeMouseForm.nextClickType = PrecisionGazeMouseForm.NEXTCLICKTYPE.SCROLLDOWN;
                gb = GAZE_BUTTON_TYPE.DOWN;
            }
            else if (clickedButton.Text.Equals(gazeButtonTextStrings[(int)GAZE_BUTTON_TYPE.LEFTCLICK]))
            {
                PrecisionGazeMouseForm.nextClickType = PrecisionGazeMouseForm.NEXTCLICKTYPE.LEFT;
                gb = GAZE_BUTTON_TYPE.LEFTCLICK;
            }
            else if (clickedButton.Text.Equals(gazeButtonTextStrings[(int)GAZE_BUTTON_TYPE.DOUBLECLICK]))
            {
                PrecisionGazeMouseForm.nextClickType = PrecisionGazeMouseForm.NEXTCLICKTYPE.DOUBLECLICK;
                gb = GAZE_BUTTON_TYPE.DOUBLECLICK;
            }
            else if (clickedButton.Text.Equals(gazeButtonTextStrings[(int)GAZE_BUTTON_TYPE.RIGHTCLICK]))
            {
                PrecisionGazeMouseForm.nextClickType = PrecisionGazeMouseForm.NEXTCLICKTYPE.RIGHT;
                gb = GAZE_BUTTON_TYPE.RIGHTCLICK;
            }
            else if (clickedButton.Text.Equals(gazeButtonTextStrings[(int)GAZE_BUTTON_TYPE.KEYBOARD]))
            {
                long currentTimestamp = PrecisionGazeMouseForm.GetCurrentTimestamp();
                long timestampDiff    = currentTimestamp - keyboardSelectedTimestamp;

                //Want to give at least a second before it can be toggled again so that user has a chance to move their eyes away from the button
                if (timestampDiff > 1000)
                {
                    //We essentially toggle the keyboard
                    if (IpcServerData.showKeyboard == KEYBOARD_SHOWN_STATUS.NOT_SHOWN)
                    {
                        IpcServerData.showKeyboard = KEYBOARD_SHOWN_STATUS.SHOW_BOTTOM;
                        gb = GAZE_BUTTON_TYPE.KEYBOARD;
                    }
                    else //we hide the keyboard since it was already active
                    {
                        IpcServerData.showKeyboard = KEYBOARD_SHOWN_STATUS.NOT_SHOWN;
                        gb = GAZE_BUTTON_TYPE.LEFTCLICK; //maintain left click status
                    }
                    keyboardSelectedTimestamp = currentTimestamp;
                }
            }
            else //default to NONE
            {
                PrecisionGazeMouseForm.nextClickType = PrecisionGazeMouseForm.NEXTCLICKTYPE.NONE;
            }

            Logger.WriteVar(nameof(gb), gb);
            SetActiveGazeButton(gb);
        }