Regarding the „strange feature“ with the encoder, this is just a function of the program that you use to read the encoder. You can edit the IQ_rot.c file to change this (currentVolume = currentVolume + 1;) and re-compile the program with „gcc IQ_rot.c -oIQ_rot -lwiringPi -lasound“
I found another program for the encoder that is easier to use as it can take parameters from the command line, and also allows control of the linear/log nature of adjustment. You may also be able to use your button with this.
However, this is still useless for me at this time because Jivelite does not seem to play nicely with volume set through ALSA.