diff --git a/FCHost/fchost/fchost_handler.cc b/FCHost/fchost/fchost_handler.cc index 367b5f8ac471c536ec587b85929e140389934e91..970b4e0176ba2f2a0737b16bd18949f5a91d2bac 100644 --- a/FCHost/fchost/fchost_handler.cc +++ b/FCHost/fchost/fchost_handler.cc @@ -190,10 +190,18 @@ bool FCHostHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser, { CEF_REQUIRE_UI_THREAD(); - if (event.type == cef_key_event_type_t::KEYEVENT_CHAR) + // for nonwindows platforms, we need to know the windows equivalent keycode, because CEF will convert to them for us + const int key_f = 0x46; + const int key_j = 0x4A; + const int key_plus = 0xBB; + const int key_numpad_plus = 0x6B; + const int key_minus = 0xBD; + const int key_numpad_minus = 0x6D; + + if (event.type == cef_key_event_type_t::KEYEVENT_RAWKEYDOWN) { // CTRL+SHIFT+J - bring up the Javascript debugger - if ((event.modifiers == (cef_event_flags_t::EVENTFLAG_CONTROL_DOWN | cef_event_flags_t::EVENTFLAG_SHIFT_DOWN)) && event.unmodified_character == 10 /* j? maybe only on windows? whatever */) + if ((event.modifiers == (cef_event_flags_t::EVENTFLAG_CONTROL_DOWN | cef_event_flags_t::EVENTFLAG_SHIFT_DOWN)) && event.windows_key_code == key_j) { CefWindowInfo windowInfo; CefBrowserSettings settings; @@ -204,12 +212,24 @@ bool FCHostHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser, return true; } // CTRL+F - bring up Find In Page - else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && event.unmodified_character == 6 /* f? maybe only on windows? whatever */) + else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && event.windows_key_code == key_f) { // probably can do this at some point by ripping off code from the full-fat cefclient, but damn there's a lot of it... // return true; } - } + // CTRL++ - zoom in + else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && (event.windows_key_code == key_plus || event.windows_key_code == key_numpad_plus)) + { + double curZoom = browser->GetHost()->GetZoomLevel(); + browser->GetHost()->SetZoomLevel(curZoom + 1.0); + } + // CTRL+- - zoom out + else if (event.modifiers == cef_event_flags_t::EVENTFLAG_CONTROL_DOWN && (event.windows_key_code == key_minus || event.windows_key_code == key_numpad_minus)) + { + double curZoom = browser->GetHost()->GetZoomLevel(); + browser->GetHost()->SetZoomLevel(curZoom - 1.0); + } + } return false; }