# penStatus

> Specifies the state of the pen. For example, whether the pen is in contact with the screen or tablet, whether the pen is inverted, and whether buttons are pressed.

## Definition

* **Type:** Property
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.IMGUIModule

```csharp
public PenStatus penStatus { get; set; }
```

### Remarks

On macOS, penStatus will not reflect changes to button mappings.

Before you process an event as a pen event, you should check the [PointerType](/engine/6000.0/script-reference/unityengine/pointertype.md) of a mouse event (e.g. [EventType.MouseDown](/engine/6000.0/script-reference/unityengine/eventtype/mousedown.md)).

When a user uses a pen, some mouse events are often mixed with pen events in the event stream, and you can't distinguish them by type because mouse and pen events share the same [EventType](/engine/6000.0/script-reference/unityengine/eventtype.md). Instead, use [PointerType](/engine/6000.0/script-reference/unityengine/pointertype.md) to distinguish them. Otherwise, Unity processes all incoming mouse events as pen events, which can lead to unexpected behavior because the mouse events (pointerType = Mouse) do not have pen event fields, like [PenStatus](/engine/6000.0/script-reference/unityengine/penstatus.md), set.

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    void OnGUI()
    {
        Event m_Event = Event.current;

        if (m_Event.type == EventType.MouseDown)
        {
            if (m_Event.pointerType == PointerType.Pen)     //Check if it's a pen event.
            {
                if (m_Event.penStatus == PenStatus.Contact)
                    Debug.Log("Pen is in contact with screen or tablet.");
            }
        else
            Debug.Log("Mouse Down.");                   //If it's not a pen event, it's a mouse event. 
        }
    }
}
```
