There are some difficulties here.
Challenge 1: Sending the Key versus sending the Character
Officially from the RFB protocol VNC sends characters, but this doesn’t work for all VNC servers (including Vine Server I’m sorry to say). To get a capital “A” you need to have first sent a SHIFT-DOWN (sending an “A” without shift just gets an “a”). So right now Vine Viewer sends shifts when it feels like it needs to, but that can cause some side effects if we do it as a result of the Caps Lock key down.
Challenge 2: Dealing with Caps Lock as an actual Modifier
For the servers that actually DO handle the Caps Lock key it could cause some peculiar problems to deal with the Caps Lock state of both machines. Meaning if you hit CapsLock and that DOES go through (setting the remote machine in CAPS state) then you start sending it capital or shifted letters it may or may not treat that properly if the Caps key is already down. Then what if you turn the capslock off locally but not on the remote machine or vice-versa.
Having thought it through though I think the appropriate behavior is to follow the spec, meaning that whatever key is pressed locally should be sent over. The ‘a’ key when caps is down locally should send “A” (and it’s up to the remote server to interpret it properly. Unfortunately this will require some reworking and so it wont be in until the next release (after 1.2).