--- src/UI/VirKeyboard.fl.orig 2008-05-12 10:32:23.000000000 +0200 +++ src/UI/VirKeyboard.fl 2008-05-12 11:50:13.000000000 +0200 @@ -136,7 +136,7 @@ if ((event==FL_PUSH)||(event==FL_DRAG)|| }; if ((event==FL_PUSH)&&(Fl::event_shift()!=0)) { - if (pressed[kpos]==0) presskey(kpos,0,1); + if (kpos <=0 || pressed[kpos]==0) presskey(kpos,0,1); else relasekey(kpos,1); }; if ((event==FL_RELEASE)&&(Fl::event_shift()==0)) @@ -168,8 +168,10 @@ return(1);} {} } Function {presskey(int nk,int exclusive,int type)} {} { code {if (nk>=N_OCT*12) return; -if ((nk<0)&&(exclusive==0)) { - relaseallkeys(type); +if (nk<0) { + if (exclusive==0) { + relaseallkeys(type); + } return; }; if (pressed[nk]!=0) return;//the key is already pressed