Guys, I'm totally lost on this one... could someone help?

I have to move smoothly an object from one side of my 3d room to another, every time a single key is pressed. I declare a global variable with the initial x position of it, and then render it:

Code :
glPushMatrix();	  glTranslatef(positionObject, 1, -6);
          object->Render();
	  glPopMatrix();

So I guess that, for the smooth movement, I'll need a timer that shows the object position several times per second, right? I'm doing it like this (not the proper way to do it, I'm aware):

Code :
void Timer(int value)        {
	if (positionObject == -1.5)
	{
		while (positionObject <= -2.3)
		positionObject += -0.1;
	}
	else
	{
		while (positionObject != -1.5)
		positionObject -= -0.1;
	}
 
 
	glutPostRedisplay();
        glutTimerFunc(33, Timer, 1);
}

And my final doubt is: what do I call in my keyboard callback function for it to work?

Code :
void KeyboardCallback(unsigned char key, int x, int y){
	switch (key)
	{
	case 'r':
	case 'R':
		//do sth;
		break;

Any help will be appreciated.