Bug 400 implemented synchronisation of CapsLock and NumLock (and ScrollLock) in the native client and in the server. However it did not do any changes to Web Access.
The problem is that the browsers do not expose any way of controlling the local lock state. They also do not expose the current state when needed, so we cannot implement the client-to-server sync the same way as the native viewer.
As such, we are currently relying on the fallback behaviour in the server, which gives a synchronised state even without the client's help in most cases. The most notable case where it doesn't work is when the state is changed on the server but not the client (e.g. a "Toggle CapsLock" function in an application). However it will soon sync back to the clients state when it detects a mismatch.
If the APIs improve then we might be able to fix this, but for now this will have to be a tracking entry.