X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin2_src%2FWM%2Finput.c;h=08cefc729e391a1271af4f5420e5acf5e099baa1;hb=6a727b68a2c9796a216e2a71a63f6fff069245de;hp=cb6a03ce5905ec817c0c588011ca52012e69c82a;hpb=15fe58771e11393f0945f6807af77f6966a3a2db;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin2_src/WM/input.c b/Usermode/Applications/axwin2_src/WM/input.c index cb6a03ce..08cefc72 100644 --- a/Usermode/Applications/axwin2_src/WM/input.c +++ b/Usermode/Applications/axwin2_src/WM/input.c @@ -6,6 +6,27 @@ #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; @@ -18,28 +39,46 @@ void Input_HandleSelect(fd_set *set) { if(FD_ISSET(giTerminalFD, set)) { - // TODO: + uint32_t codepoint; + if( read(giTerminalFD, &codepoint, sizeof(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; + uint16_t NAxies; + uint16_t NButtons; struct sMouseAxis { - int16_t MinValue, MaxValue; + int16_t MinValue; + int16_t MaxValue; int16_t CurValue; uint16_t CursorPos; } Axies[2]; uint8_t Buttons[3]; } mouseinfo; - - if( read(giMouseFD, sizeof(mouseinfo), &mouseinfo) != sizeof(mouseinfo) ) + + seek(giMouseFD, 0, SEEK_SET); + if( read(giMouseFD, &mouseinfo, sizeof(mouseinfo)) != sizeof(mouseinfo) ) { // Not a 3 button mouse, oops return ; } - + +// _SysDebug("sizeof(uint16_t) = %i, sizeof(int16_t) = %i", +// sizeof(uint16_t), sizeof(int16_t)); +// _SysDebug("NAxies=%i,NButtons=%i", mouseinfo.NAxies, mouseinfo.NButtons); +// _SysDebug("offsetof(Axies[0].MinValue) = %i", offsetof(struct sMouseInfo, Axies[0].MinValue)); +// _SysDebug("[0] = {MinValue=%i,MaxValue=%i,CurValue=%i}", +// mouseinfo.Axies[0].MinValue, mouseinfo.Axies[0].MaxValue, +// mouseinfo.Axies[0].CurValue +// ); // Handle movement // Video_SetCursorPos( mouseinfo.Axies[0], mouseinfo.Axies[1] ); + _SysDebug("Cursor to %i,%i", mouseinfo.Axies[0].CursorPos, mouseinfo.Axies[1].CursorPos); } }