// 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
