186 lines
5.4 KiB
C#
186 lines
5.4 KiB
C#
/*
|
|
* libcaca .NET bindings for libcaca
|
|
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
|
|
* 2007 Sam Hocevar <sam@hocevar.net>
|
|
* All Rights Reserved
|
|
*
|
|
* This library is free software. It comes without any warranty, to
|
|
* the extent permitted by applicable law. You can redistribute it
|
|
* and/or modify it under the terms of the Do What the Fuck You Want
|
|
* to Public License, Version 2, as published by Sam Hocevar. See
|
|
* http://www.wtfpl.net/ for more details.
|
|
*/
|
|
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
using System.Drawing;
|
|
|
|
namespace Caca
|
|
{
|
|
public enum EventType
|
|
{
|
|
NONE = 0x0000,
|
|
|
|
KEY_PRESS = 0x0001,
|
|
KEY_RELEASE = 0x0002,
|
|
MOUSE_PRESS = 0x0004,
|
|
MOUSE_RELEASE = 0x0008,
|
|
MOUSE_MOTION = 0x0010,
|
|
RESIZE = 0x0020,
|
|
QUIT = 0x0040,
|
|
|
|
ANY = 0xffff,
|
|
}
|
|
|
|
public enum EventKey
|
|
{
|
|
UNKNOWN = 0x00,
|
|
|
|
CTRL_A = 0x01,
|
|
CTRL_B = 0x02,
|
|
CTRL_C = 0x03,
|
|
CTRL_D = 0x04,
|
|
CTRL_E = 0x05,
|
|
CTRL_F = 0x06,
|
|
CTRL_G = 0x07,
|
|
BACKSPACE = 0x08,
|
|
TAB = 0x09,
|
|
CTRL_J = 0x0a,
|
|
CTRL_K = 0x0b,
|
|
CTRL_L = 0x0c,
|
|
RETURN = 0x0d,
|
|
CTRL_N = 0x0e,
|
|
CTRL_O = 0x0f,
|
|
CTRL_P = 0x10,
|
|
CTRL_Q = 0x11,
|
|
CTRL_R = 0x12,
|
|
PAUSE = 0x13,
|
|
CTRL_T = 0x14,
|
|
CTRL_U = 0x15,
|
|
CTRL_V = 0x16,
|
|
CTRL_W = 0x17,
|
|
CTRL_X = 0x18,
|
|
CTRL_Y = 0x19,
|
|
CTRL_Z = 0x1a,
|
|
ESCAPE = 0x1b,
|
|
DELETE = 0x7f,
|
|
|
|
UP = 0x111,
|
|
DOWN = 0x112,
|
|
LEFT = 0x113,
|
|
RIGHT = 0x114,
|
|
|
|
INSERT = 0x115,
|
|
HOME = 0x116,
|
|
END = 0x117,
|
|
PAGEUP = 0x118,
|
|
PAGEDOWN = 0x119,
|
|
|
|
F1 = 0x11a,
|
|
F2 = 0x11b,
|
|
F3 = 0x11c,
|
|
F4 = 0x11d,
|
|
F5 = 0x11e,
|
|
F6 = 0x11f,
|
|
F7 = 0x120,
|
|
F8 = 0x121,
|
|
F9 = 0x122,
|
|
F10 = 0x123,
|
|
F11 = 0x124,
|
|
F12 = 0x125,
|
|
F13 = 0x126,
|
|
F14 = 0x127,
|
|
F15 = 0x128,
|
|
}
|
|
|
|
public class Event : IDisposable
|
|
{
|
|
public IntPtr cevent;
|
|
private IntPtr _utf8;
|
|
|
|
public Event()
|
|
{
|
|
cevent = Marshal.AllocHGlobal(32);
|
|
_utf8 = Marshal.AllocHGlobal(8);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
Marshal.FreeHGlobal(cevent);
|
|
Marshal.FreeHGlobal(_utf8);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_type(IntPtr ev);
|
|
public EventType Type
|
|
{
|
|
get { return (EventType)caca_get_event_type(cevent); }
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_key_ch(IntPtr ev);
|
|
public int KeyCh
|
|
{
|
|
get { return caca_get_event_key_ch(cevent); }
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern uint caca_get_event_key_utf32(IntPtr ev);
|
|
public uint KeyUtf32
|
|
{
|
|
get { return caca_get_event_key_utf32(cevent); }
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_key_utf8(IntPtr ev,
|
|
IntPtr _utf8);
|
|
public string KeyUtf8
|
|
{
|
|
get
|
|
{
|
|
caca_get_event_key_utf8(cevent, _utf8);
|
|
return Marshal.PtrToStringAnsi(_utf8);
|
|
}
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_mouse_button(IntPtr ev);
|
|
public int MouseButton
|
|
{
|
|
get { return caca_get_event_mouse_button(cevent); }
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_mouse_x(IntPtr ev);
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_mouse_y(IntPtr ev);
|
|
public Point MousePos
|
|
{
|
|
get { return new Point(caca_get_event_mouse_x(cevent),
|
|
caca_get_event_mouse_y(cevent)); }
|
|
}
|
|
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_resize_width(IntPtr ev);
|
|
[DllImport("libcaca.dll", CallingConvention=CallingConvention.Cdecl),
|
|
SuppressUnmanagedCodeSecurity]
|
|
private static extern int caca_get_event_resize_height(IntPtr ev);
|
|
public Size ResizeSize
|
|
{
|
|
get { return new Size(caca_get_event_resize_width(cevent),
|
|
caca_get_event_resize_height(cevent)); }
|
|
}
|
|
}
|
|
}
|
|
|