Der Code tut nicht das was du willst, weil man Variablen nicht mit = sondern mit == vergleicht. Mit einem einfachen Gleichheitszeichen weist du einer Variablen nur einen neuen Wert zu.
Deine Abfragen überprüfen also letztlich ob -1 bzw. 3 true ist – was immer zutrifft. Daher wird $smi auch jedesmal auf 0 gesetzt, wenn du nach rechts drückst.