1.) it saves by using encodeURIComponent(getUserId())+"dataname" to prevent other users from messing with the registered user values, additionally storing the userID locally in a variable is also a good idea because it will make the calls generally faster to deal with EX:
1: var ID = encodeURIComponent(getUserId());
2: getKeyValue(ID+"color",function(){ }) // note that this also takes time to setup and should be accounted for
^ @see callback statements for specifics since promises aren't a thing in es5
2.) unfortunately for this you do actually need a static value to send things to that is not just visible to the clients rather the host and the clients at the same time, this also means that there needs to be a local storage variable of all the values being kept by the system and by the stored values
3.) it seems like you fixed this one i do have a chat with a bunch of enhanced functionality of a normal keyboard if your interested though it seems like your on your way to being able to fully understand