keyboard stuff
at master 86 lines 2.3 kB view raw
1// Copyright 2023 QMK 2// SPDX-License-Identifier: GPL-2.0-or-later 3 4#include "keyboard_report_util.hpp" 5#include "keycode.h" 6#include "test_common.hpp" 7#include "test_keymap_key.hpp" 8 9using testing::_; 10 11class Unicode : public TestFixture {}; 12 13TEST_F(Unicode, sends_bmp_unicode_sequence) { 14 TestDriver driver; 15 16 set_unicode_input_mode(UNICODE_MODE_LINUX); 17 18 EXPECT_UNICODE(driver, 0x03A8); // Ψ 19 register_unicode(0x03A8); 20 21 VERIFY_AND_CLEAR(driver); 22} 23 24TEST_F(Unicode, sends_smp_unicode_sequence) { 25 TestDriver driver; 26 27 set_unicode_input_mode(UNICODE_MODE_LINUX); 28 29 EXPECT_UNICODE(driver, 0x1F9D9); // 🧙 30 register_unicode(0x1F9D9); 31 32 VERIFY_AND_CLEAR(driver); 33} 34 35TEST_F(Unicode, sends_surrogate_pair_for_macos) { 36 TestDriver driver; 37 38 set_unicode_input_mode(UNICODE_MODE_MACOS); 39 40 // EXPECT_UNICODE() assumes Linux input mode 41 { 42 testing::InSequence s; 43 44 // Alt+D83EDDD9 🧙 45 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 46 EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT)); 47 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 48 EXPECT_REPORT(driver, (KC_8, KC_LEFT_ALT)); 49 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 50 EXPECT_REPORT(driver, (KC_3, KC_LEFT_ALT)); 51 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 52 EXPECT_REPORT(driver, (KC_E, KC_LEFT_ALT)); 53 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 54 EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT)); 55 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 56 EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT)); 57 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 58 EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT)); 59 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 60 EXPECT_REPORT(driver, (KC_9, KC_LEFT_ALT)); 61 EXPECT_REPORT(driver, (KC_LEFT_ALT)); 62 EXPECT_EMPTY_REPORT(driver); 63 } 64 65 register_unicode(0x1F9D9); 66 67 VERIFY_AND_CLEAR(driver); 68} 69 70TEST_F(Unicode, sends_unicode_string) { 71 TestDriver driver; 72 73 set_unicode_input_mode(UNICODE_MODE_LINUX); 74 75 { 76 testing::InSequence s; 77 78 EXPECT_UNICODE(driver, 0xFF31); 79 EXPECT_UNICODE(driver, 0xFF2D); 80 EXPECT_UNICODE(driver, 0xFF2B); 81 EXPECT_UNICODE(driver, 0xFF01); 82 } 83 send_unicode_string("QMK!"); 84 85 VERIFY_AND_CLEAR(driver); 86}