// Copyright 2014 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.ui.input;

/// Keyboard modifiers
const uint32 kModifierNone = 0;
const uint32 kModifierCapsLock = 1;
const uint32 kModifierLeftShift = 2;
const uint32 kModifierRightShift = 4;
const uint32 kModifierShift = 6; // (kModifierLeftShift | kModifierRightShift);
const uint32 kModifierLeftControl = 8;
const uint32 kModifierRightControl = 16;
const uint32 kModifierControl = 24; // (kModifierLeftControl | kModifierRightControl);
const uint32 kModifierLeftAlt = 32;
const uint32 kModifierRightAlt = 64;
const uint32 kModifierAlt = 96; // (kModifierLeftAlt | kModifierRightAlt);
const uint32 kModifierLeftSuper = 128;
const uint32 kModifierRightSuper = 256;
const uint32 kModifierSuper = 384; // (kModifierLeftSuper | kModifierRightSuper);

/// Mouse buttons
const uint32 kMousePrimaryButton = 1;
const uint32 kMouseSecondaryButton = 2;
const uint32 kMouseTertiaryButton = 4;

/// Stylus buttons
const uint32 kStylusPrimaryButton = 1;
const uint32 kStylusSecondaryButton = 2;

// end-no-format
