X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin2_src%2FWM%2Finput.c;h=85c649d1f264abed3ecd8c538f8ae47fcfbeb4ef;hb=637ff4245d413a9269a4450c17e48b784ecf0694;hp=f69e0562590831fafed7e41315d2f77a30000005;hpb=7428b02ff9e335e8a3c958d156bd221e6e86b051;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin2_src/WM/input.c b/Usermode/Applications/axwin2_src/WM/input.c index f69e0562..85c649d1 100644 --- a/Usermode/Applications/axwin2_src/WM/input.c +++ b/Usermode/Applications/axwin2_src/WM/input.c @@ -3,8 +3,30 @@ * By John Hodge (thePowersGang) */ #include "common.h" +#include // === CODE === +int Input_Init(void) +{ + struct { + int Num, Value; + } num_value; + + // Open mouse for RW + giMouseFD = open(gsMouseDevice, 3); + + // Set mouse limits + num_value.Num = 0; + num_value.Value = giScreenWidth; + ioctl(giMouseFD, 6, &num_value); + + num_value.Num = 1; + num_value.Value = giScreenHeight; + ioctl(giMouseFD, 6, &num_value); + + return 0; +} + void Input_FillSelect(int *nfds, fd_set *set) { if(*nfds < giTerminalFD) *nfds = giTerminalFD; @@ -17,6 +39,38 @@ void Input_HandleSelect(fd_set *set) { if(FD_ISSET(giTerminalFD, set)) { + uint32_t codepoint; + if( read(giTerminalFD, sizeof(codepoint), &codepoint) != sizeof(codepoint) ) + { + // oops, error + } + // TODO: pass on to message handler + _SysDebug("Keypress 0x%x", codepoint); + } + + if(FD_ISSET(giMouseFD, set)) + { + struct sMouseInfo { + uint16_t NAxies, NButtons; + struct sMouseAxis { + int16_t MinValue, MaxValue; + int16_t CurValue; + uint16_t CursorPos; + } Axies[2]; + uint8_t Buttons[3]; + } mouseinfo; + + _SysDebug("Cursor event"); + + seek(giMouseFD, 0, SEEK_SET); + if( read(giMouseFD, sizeof(mouseinfo), &mouseinfo) != sizeof(mouseinfo) ) + { + // Not a 3 button mouse, oops + return ; + } + // Handle movement +// Video_SetCursorPos( mouseinfo.Axies[0], mouseinfo.Axies[1] ); + _SysDebug("Cursor to %i,%i\n", mouseinfo.Axies[0], mouseinfo.Axies[1]); } }