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