本人前段时间在开发MacOS项目的时候遇到一个问题,我用的框架是以SDL2为窗口、CEF3为浏览器加载HTML,当我想要用"Command+C"拷贝输入框账号时,发现无法全选,更不用说拷贝了,于是在某度上搜索了大半天愣是没找到解决方案,最后在CEF官网上找到了答案,这应该是CEF3的一个bug,在这里分享一下自己解决的经验。
PS:本人第一次写博客,多有不足之处,多多包涵。
代码片段
主线程cpp片段(手动实现macOS的键盘组合键的全选、拷贝、粘贴以及剪切功能)
SDL_Event e;
uint32 modifiers = 0; /* 记录上一次的组合键键值 */
CefRefPtr<CefBrowser> browser;
browser = CefBrowserHost::CreateBrowserSync(window_info, this, url, browserSettings, nullptr);
while (SDL_PollEvent(&e) != 0)
{
switch (e.type)
{
case SDL_KEYDOWN:
{
CefKeyEvent event;
event.modifiers = keyboard_mod(e.key.keysym.mod);
event.windows_key_code = keyboard_code(e.key.keysym.scancode);
event.native_key_code = native_keyboard_code(e.key.keysym.scancode);
event.type = KEYEVENT_RAWKEYDOWN;
browser->GetHost()->SendKeyEvent(event);
/* 记录Command命令并实现对应的功能 */
if