//===========================================================================// // File: l4keylight.h // // Project: MUNGA Brick: RGB keyboard lamp mirror // // Contents: Windows Dynamic Lighting bridge (vRIO's KeyboardLampMirror) // //---------------------------------------------------------------------------// // Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // // PROPRIETARY AND CONFIDENTIAL // //===========================================================================// #pragma once //######################################################################## // Mirrors the game-commanded RIO lamp states onto per-key RGB keyboards // through Windows Dynamic Lighting (the WinRT LampArray API), following // vRIO's KeyboardLampMirror: keys bound to lamp addresses glow with the // panel palette (red for the banks, yellow for the Secondary/Screen // columns), flash modes blink at the panel's rates, other keys are // blacked out so the keyboard reads as the button field. Zone-lit // keyboards mirror the strongest lamp board-wide. Dynamic Lighting // grants LED control to the FOREGROUND app - which is the game itself, // so no Windows settings dance is needed. // // The implementation is C++/WinRT on a private worker thread, compiled // with default struct packing (the engine builds /Zp1, which would // break the WinRT ABI) - hence this interface is scalars only. All // functions are safe to call when Dynamic Lighting is unavailable; // failures log once and the mirror stays dormant. //######################################################################## // Where the mirror's status lines go (the caller owns the sink). void KeyLight_SetLogger(void (*logger)(const char *line)); // The key map: parallel arrays of virtual keys, their RIO lamp // addresses (0x00-0x47), and whether each paints yellow (Secondary / // Screen columns) instead of red. void KeyLight_SetMap( const int *virtual_keys, const int *addresses, const unsigned char *yellow, int count ); // Latest game-commanded lamp bytes (indexed by RIO lamp number). void KeyLight_UpdateLamps(const unsigned char *lamp_state, int count); // Claim keyboards and start painting / release the LEDs to Windows. void KeyLight_Start(); void KeyLight_Stop();