singrdk/base/Contracts/Io.Contracts/KeyboardDeviceContract.sg

123 lines
3.1 KiB
Plaintext
Raw Permalink Normal View History

2008-03-05 09:52:00 -05:00
////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: KeyboardDeviceContract.sg - Contract between apps and keyboards.
//
using System;
using System.Runtime.InteropServices;
using Microsoft.SingSharp;
using Microsoft.Singularity;
using Microsoft.Singularity.Channels;
using Microsoft.Singularity.Io;
namespace Microsoft.Singularity.Io
{
public contract KeyboardDeviceContract : DeviceContract {
in message GetKey();
in message PollKey();
out message AckKey(uint key);
out message NakKey();
out message Success();
override state Start: one {
Success! -> Ready;
}
state Ready: one {
GetKey? -> Waiting;
PollKey? -> (AckKey! or NakKey!) -> Ready;
}
state Waiting: one {
AckKey! -> Ready;
NakKey! -> Ready;
}
}
}
namespace Microsoft.Singularity.Io.Keyboard
{
[Flags]
[CLSCompliant(false)]
public enum Qualifiers {
KEY_MOUSE = 0x40000000,
KEY_UP = 0x20000000,
KEY_DOWN = 0x10000000,
KEY_MODIFIERS = 0x0f000000,
KEY_SHIFT = 0x08000000,
KEY_CTRL = 0x04000000,
KEY_ALT = 0x02000000,
KEY_WINDOWS = 0x01000000,
KEY_EXTENDED = 0x00800000,
KEY_SHIFTED = 0x00020000,
KEY_NUMPAD = 0x00010000,
KEY_ALT_CODE = 0x0000ff00,
KEY_BASE_CODE = 0x000000ff,
MOUSE_ALIVE = 0x00000008,
MOUSE_BUTTON_0 = 0x00000001,
MOUSE_BUTTON_1 = 0x00000002,
MOUSE_BUTTON_2 = 0x00000004,
MOUSE_BUTTON_ALL = 0x00000007,
}
public enum Keys {
ESCAPE = 0x1b,
PAGE_UP = 0x80,
PAGE_DOWN = 0x81,
UP_ARROW = 0x82,
DOWN_ARROW = 0x83,
LEFT_ARROW = 0x84,
RIGHT_ARROW = 0x85,
HOME = 0x86,
END = 0x87,
INSERT = 0x88,
DELETE = 0x89,
CAPS_LOCK = 0x90,
LEFT_SHIFT = 0x91,
RIGHT_SHIFT = 0x92,
LEFT_CTRL = 0x93,
RIGHT_CTRL = 0x94,
LEFT_ALT = 0x95,
RIGHT_ALT = 0x96,
LEFT_WINDOWS = 0x97,
RIGHT_WINDOWS = 0x98,
MENU = 0x99,
PRINT_SCRN = 0x9a,
SCROLL_LOCK = 0x9b,
NUM_LOCK = 0x9c,
BREAK = 0x9d,
SYS_REQ = 0x9e,
F1 = 0xa1,
F2 = 0xa2,
F3 = 0xa3,
F4 = 0xa4,
F5 = 0xa5,
F6 = 0xa6,
F7 = 0xa7,
F8 = 0xa8,
F9 = 0xa9,
F10 = 0xaa,
F11 = 0xab,
F12 = 0xac,
}
}