Вы говорите о создании системного хука (вызов Windows API SetWindowsHookEx с WM_MOUSE или WM_MOUSELL). Это не для слабонервных. Делать это для отдельного процесса, который у вас есть, немного сложно. Выполнение этого в масштабе всей системы (для процессов, которые вам не принадлежат) действительно, очень сложно - много подводных камней (я почти уверен, что попал в каждую из них), и это одна из недостаточно документированных областей Win32 API.
Для этого абсолютно необходимо использовать Windows API, а также библиотеки DLL, понимание внедрения DLL в различные процессы и множество других вещей. Java не собирается выполнять эту конкретную работу (на самом деле, исходя из вашей спецификации, я не могу себе представить, почему Java будет предпочтительным языком здесь).
Время разбить C.