diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c index 74e14fa6630958a278940b07ef5d18b2bfe88c7a..d581931ebb0c1e671966a9828be1e78864b897b8 100644 --- a/src/conio/win32cio.c +++ b/src/conio/win32cio.c @@ -210,10 +210,14 @@ int win32_getchcode(WORD code, DWORD state) return(keyval[i].ALT); if(state & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED)) return(keyval[i].CTRL); - if(state & (SHIFT_PRESSED)) - return(keyval[i].Shift); - if((state & (CAPSLOCK_ON)) && isalpha(keyval[i].Key)) - return(keyval[i].Shift); + if((state & (CAPSLOCK_ON)) && isalpha(keyval[i].Key)) { + if(!(state & (SHIFT_PRESSED)) + return(keyval[i].Shift); + } + else { + if(state & (SHIFT_PRESSED)) + return(keyval[i].Shift); + } return(keyval[i].Key); } }