// Copyright 2017 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;

/// Common mouse buttons report constants
@available(deprecated=13, removed=14)
const kMouseButtonPrimary uint32 = 1;
@available(deprecated=13, removed=14)
const kMouseButtonSecondary uint32 = 2;
@available(deprecated=13, removed=14)
const kMouseButtonTertiary uint32 = 4;

/// Common stylus buttons report constants
@available(deprecated=13, removed=14)
const kStylusBarrel uint32 = 1;

/// Used as mask bits (2^N) against ButtonDescriptor.buttons.
@available(deprecated=13, removed=14)
const kVolumeUp uint32 = 1;
@available(deprecated=13, removed=14)
const kVolumeDown uint32 = 2;
@available(deprecated=13, removed=14)
const kMicMute uint32 = 4;
@available(deprecated=13, removed=14)
const kReset uint32 = 8;
@available(deprecated=13, removed=14)
const kPause uint32 = 16;
@available(deprecated=13, removed=14)
const kCameraDisable uint32 = 32;
