---
id: "T:cAlgo.API.ModifierKeys"
kind: "enum"
namespace: "cAlgo.API"
url: "https://help.ctrader.com/ctrader-algo/references/Utility/ModifierKeys/"
---

> Documentation index for agents: https://help.ctrader.com/ctrader-algo/llms.txt · machine index: https://help.ctrader.com/ctrader-algo/api.json

# ModifierKeys (enum)

Specifies the set of modifier keys.

Environments: Desktop supported · CLI supported · Cloud supported.

## Definition

```csharp
public enum ModifierKeys
```

## Examples

C#:

```csharp
using cAlgo.API;

namespace cAlgo
{
    // This sample shows how to use the ModifierKeys
    public partial class Test : Indicator
    {
        private double _mouseBarIndex, _mousePrice;

        protected override void Initialize()
        {
            Chart.MouseMove += Chart_MouseMove;
            Chart.MouseEnter += ResetMouseLocation;
            Chart.MouseLeave += ResetMouseLocation;

            ResetMouseLocation(null);

            Chart.AddHotkey(DrawLines, HotKey, HotKeyModifier);
        }

        private void ResetMouseLocation(ChartMouseEventArgs obj)
        {
            _mouseBarIndex = -1;
            _mousePrice = double.NaN;
        }

        private void Chart_MouseMove(ChartMouseEventArgs obj)
        {
            _mouseBarIndex = obj.BarIndex;
            _mousePrice = obj.YValue;
        }

        private void DrawLines()
        {
            if (_mouseBarIndex == -1 || double.IsNaN(_mousePrice)) return;

            Chart.DrawVerticalLine(_mouseBarIndex.ToString(), (int)_mouseBarIndex, Color.Red);
            Chart.DrawHorizontalLine(_mousePrice.ToString(), _mousePrice, Color.Red);
        }

        public override void Calculate(int index)
        {
        }
    }
}
```

Python:

```python
import clr
clr.AddReference("cAlgo.API")

from cAlgo.API import *
from System import Action
from math import nan, isnan

class Test():
    def initialize(self):
        api.Chart.MouseMove += self.on_chart_mouse_move
        api.Chart.MouseEnter += lambda _: self.reset_mouse_location()
        api.Chart.MouseLeave += lambda _: self.reset_mouse_location()

        self.reset_mouse_location()

        api.Chart.AddHotkey(Action(self.draw_lines), api.HotKey, api.HotKeyModifier)

    def on_chart_mouse_move(self, args):
        self.mouseBarIndex = args.BarIndex
        self.mousePrice = args.YValue

    def reset_mouse_location(self):
        self.mouseBarIndex = -1
        self.mousePrice = nan

    def draw_lines(self):
        if self.mouseBarIndex == -1 or isnan(self.mousePrice):
            return

        api.Chart.DrawVerticalLine(str(self.mouseBarIndex), int(self.mouseBarIndex), Color.Red)
        api.Chart.DrawHorizontalLine(str(self.mousePrice), self.mousePrice, Color.Red)
```

config.json:

```json
{
  "AccessRights": "None",
  "TimeZone": "UTC",
  "IsOverlay": true,
  "Parameters": [
    {
      "Name": "HotKey",
      "Type": "Enum",
      "EnumTypeFullName": "cAlgo.API.Key",
      "DefaultValue": "R"
    },
    {
      "Name": "HotKeyModifier",
      "Type": "Enum",
      "EnumTypeFullName": "cAlgo.API.ModifierKeys",
      "DefaultValue": "Control"
    }
  ]
}
```

## Values

- `ModifierKeys.None` — No modifiers are pressed.
- `ModifierKeys.Alt` — The ALT key.
- `ModifierKeys.Control` — The CTRL key.
- `ModifierKeys.Shift` — The SHIFT key.

