1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "ui/base/emoji/emoji_panel_helper.h"
- #include <windows.h>
- #include "base/win/windows_version.h"
- #include "ui/events/keycodes/keyboard_code_conversion_win.h"
- namespace ui {
- bool IsEmojiPanelSupported() {
- // Emoji picker is supported on Windows 10's Spring 2018 Update and
- // above.
- return base::win::GetVersion() >= base::win::Version::WIN10_RS4;
- }
- void ShowEmojiPanel() {
- // This sends Windows Key + '.' (both keydown and keyup events).
- // "SendInput" is used because Windows needs to receive these events and
- // open the Emoji picker.
- // TODO(crbug.com/827404): Move to a specialized Windows API once it is
- // available.
- INPUT input[4] = {};
- input[0].type = INPUT_KEYBOARD;
- input[0].ki.wVk = ui::WindowsKeyCodeForKeyboardCode(ui::VKEY_COMMAND);
- input[1].type = INPUT_KEYBOARD;
- input[1].ki.wVk = ui::WindowsKeyCodeForKeyboardCode(ui::VKEY_OEM_PERIOD);
- input[2].type = INPUT_KEYBOARD;
- input[2].ki.wVk = ui::WindowsKeyCodeForKeyboardCode(ui::VKEY_COMMAND);
- input[2].ki.dwFlags |= KEYEVENTF_KEYUP;
- input[3].type = INPUT_KEYBOARD;
- input[3].ki.wVk = ui::WindowsKeyCodeForKeyboardCode(ui::VKEY_OEM_PERIOD);
- input[3].ki.dwFlags |= KEYEVENTF_KEYUP;
- ::SendInput(4, input, sizeof(INPUT));
- }
- } // namespace ui
|