diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx index e59027c77..a3a7ccf47 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx @@ -332,10 +332,11 @@ void Fl_WinAPI_Screen_Driver::get_system_colors() int Fl_WinAPI_Screen_Driver::compose(int &del) { unsigned char ascii = (unsigned char)Fl::e_text[0]; - /* WARNING: The [AltGr] key on international keyboards falsely set FL_CTRL! */ - /* More investigation needed. */ - int condition = (Fl::e_state & (FL_ALT | FL_META | FL_CTRL)) && - !(GetAsyncKeyState(VK_MENU) >> 15) && !(ascii & 128); + /* WARNING: The [AltGr] key on international keyboards sets FL_CTRL. + 2nd line in condition below asks [AltGr] key (a.k.a. VK_RMENU) not to be down. + */ + int condition = (Fl::e_state & (FL_ALT | FL_META | FL_CTRL)) && !(ascii & 128) && + !( (Fl::e_state & FL_CTRL) && (GetAsyncKeyState(VK_RMENU) >> 15) ); if (condition) { // this stuff is to be treated as a function key del = 0; return 0;