Here is a solution that a friend gave me for NT and 2000 systems that works. Really! It does not solve the CPU utilization problem on 98 and Me, but you may find (as I did) that your 98/Me fix is compatible with this and can be installed along with this fix.
-------------------------------------------
I am not sure if this will help, but I created a work around a couple of years ago for the getsys and inkey() that has stayed in our programs since which does not use the third party libraries. I wrote a simple inkey substitute that, even though it looks like it is cranking, drops the CPU utilization from over 40% to under 2%.
I created a function called new_Inkey() at the end of getSys.prg
FUNCTION new_Inkey(x)
LOCAL nKey := 0
DO CASE
CASE x == Nil .OR. valType(x) <> "N"
nKey := inkey()
CASE x <> 0
nKey := inkey(abs(x))
OTHERWISE
WHILE ( (nKey := inkey(.1) ) == 0 ) ; ENDDO
ENDCASE
RETURN nKey
In getSys(), there is only one call to inkey() and this I replaced with new_Inkey()
In my header files I add the following. ( not for getSys.prg )
#ifdef _NEWGETSYS_
#translate inkey(<x>) => new_Inkey( <x> )
#endif
Not sure if this will help you, but has worked for us over ther years.