MCPcopy Create free account
hub / github.com/SFML/SFML / translateKeyCode

Function translateKeyCode

src/SFML/Window/Unix/KeyboardImpl.cpp:65–279  ·  view source on GitHub ↗

///////////////////////////////////////////////////////

Source from the content-addressed store, hash-verified

63
64////////////////////////////////////////////////////////////
65sf::Keyboard::Scancode translateKeyCode(Display* display, KeyCode keycode)
66{
67 if (!isValidKeycode(keycode))
68 return sf::Keyboard::Scan::Unknown;
69
70 // Try secondary keysym, for numeric keypad keys
71 // Note: This way we always force "NumLock = ON", which is intentional
72 // since the returned key code should correspond to a physical location.
73 KeySym keySym = XkbKeycodeToKeysym(display, keycode, 0, 1);
74
75 // clang-format off
76 switch (keySym)
77 {
78 case XK_KP_0: return sf::Keyboard::Scan::Numpad0;
79 case XK_KP_1: return sf::Keyboard::Scan::Numpad1;
80 case XK_KP_2: return sf::Keyboard::Scan::Numpad2;
81 case XK_KP_3: return sf::Keyboard::Scan::Numpad3;
82 case XK_KP_4: return sf::Keyboard::Scan::Numpad4;
83 case XK_KP_5: return sf::Keyboard::Scan::Numpad5;
84 case XK_KP_6: return sf::Keyboard::Scan::Numpad6;
85 case XK_KP_7: return sf::Keyboard::Scan::Numpad7;
86 case XK_KP_8: return sf::Keyboard::Scan::Numpad8;
87 case XK_KP_9: return sf::Keyboard::Scan::Numpad9;
88 case XK_KP_Separator: return sf::Keyboard::Scan::NumpadDecimal;
89 case XK_KP_Decimal: return sf::Keyboard::Scan::NumpadDecimal;
90 case XK_KP_Equal: return sf::Keyboard::Scan::NumpadEqual;
91 case XK_KP_Enter: return sf::Keyboard::Scan::NumpadEnter;
92 default: break;
93 }
94 // clang-format on
95
96 // Now try primary keysym for function keys (non-printable keys)
97 // These should not depend on the current keyboard layout
98 keySym = XkbKeycodeToKeysym(display, keycode, 0, 0);
99
100 // clang-format off
101 switch (keySym)
102 {
103 case XK_Return: return sf::Keyboard::Scan::Enter;
104 case XK_Escape: return sf::Keyboard::Scan::Escape;
105 case XK_BackSpace: return sf::Keyboard::Scan::Backspace;
106 case XK_Tab: return sf::Keyboard::Scan::Tab;
107 case XK_Shift_L: return sf::Keyboard::Scan::LShift;
108 case XK_Shift_R: return sf::Keyboard::Scan::RShift;
109 case XK_Control_L: return sf::Keyboard::Scan::LControl;
110 case XK_Control_R: return sf::Keyboard::Scan::RControl;
111 case XK_Alt_L: return sf::Keyboard::Scan::LAlt;
112 case XK_ISO_Level3_Shift: // AltGr on at least some machines
113 case XK_Alt_R: return sf::Keyboard::Scan::RAlt;
114 case XK_Meta_L:
115 case XK_Super_L: return sf::Keyboard::Scan::LSystem;
116 case XK_Meta_R:
117 case XK_Super_R: return sf::Keyboard::Scan::RSystem;
118 case XK_Menu: return sf::Keyboard::Scan::Menu;
119
120 case XK_Num_Lock: return sf::Keyboard::Scan::NumLock;
121 case XK_Caps_Lock: return sf::Keyboard::Scan::CapsLock;
122 case XK_Execute: return sf::Keyboard::Scan::Execute;

Callers 1

ensureMappingFunction · 0.85

Calls 1

isValidKeycodeFunction · 0.85

Tested by

no test coverage detected