Changeset 236427 in webkit
- Timestamp:
- Sep 24, 2018 1:47:39 PM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r236424 r236427 1 2018-09-24 Daniel Bates <dabates@apple.com> 2 3 Separate Mac and iOS implementation of windowsKeyCodeForCharCode() 4 https://bugs.webkit.org/show_bug.cgi?id=189898 5 6 Reviewed by Tim Horton. 7 8 Extract the Mac and iOS implementations into a windowsKeyCodeForCharCode() defined in file 9 KeyEventMac.mm and file KeyEventIOS, respectively. 10 11 Mac and iOS have significant differences in how they represent function keys. It is not worthwhile 12 to share windowsKeyCodeForCharCode() between them given these differences. On Mac function keys 13 are represented by a char code in the range 0xF700-0xF8FF. On iOS these keys may not have a unique 14 char code (e.g. F1 = 0x10 = F10) and must be identified either by special string (e.g. UIKeyInputUpArrow) 15 or key code. 16 17 * platform/cocoa/KeyEventCocoa.mm: 18 (WebCore::windowsKeyCodeForCharCode): Deleted. 19 * platform/ios/KeyEventIOS.mm: 20 (WebCore::windowsKeyCodeForCharCode): Added. Remove the handling of NS*FunctionKey char codes 21 as function keys are not represented using them as of iOS 12. 22 * platform/mac/KeyEventMac.mm: 23 (WebCore::windowsKeyCodeForCharCode): Added. 24 1 25 2018-09-21 Simon Fraser <simon.fraser@apple.com> 2 26 -
trunk/Source/WebCore/platform/cocoa/KeyEventCocoa.mm
r236417 r236427 485 485 } 486 486 487 int windowsKeyCodeForCharCode(unichar charCode)488 {489 switch (charCode) {490 #if PLATFORM(IOS)491 case 8: case 0x7F: return VK_BACK;492 case 9: return VK_TAB;493 case 0xD: case 3: return VK_RETURN;494 case 0x1B: return VK_ESCAPE;495 case ' ': return VK_SPACE;496 case NSHomeFunctionKey: return VK_HOME;497 case NSEndFunctionKey: return VK_END;498 case NSPageUpFunctionKey: return VK_PRIOR;499 case NSPageDownFunctionKey: return VK_NEXT;500 case NSUpArrowFunctionKey: return VK_UP;501 case NSDownArrowFunctionKey: return VK_DOWN;502 case NSLeftArrowFunctionKey: return VK_LEFT;503 case NSRightArrowFunctionKey: return VK_RIGHT;504 case NSDeleteFunctionKey: return VK_DELETE;505 506 case '0': case ')': return VK_0;507 case '1': case '!': return VK_1;508 case '2': case '@': return VK_2;509 case '3': case '#': return VK_3;510 case '4': case '$': return VK_4;511 case '5': case '%': return VK_5;512 case '6': case '^': return VK_6;513 case '7': case '&': return VK_7;514 case '8': case '*': return VK_8;515 case '9': case '(': return VK_9;516 #endif517 case 'a': case 'A': return VK_A;518 case 'b': case 'B': return VK_B;519 case 'c': case 'C': return VK_C;520 case 'd': case 'D': return VK_D;521 case 'e': case 'E': return VK_E;522 case 'f': case 'F': return VK_F;523 case 'g': case 'G': return VK_G;524 case 'h': case 'H': return VK_H;525 case 'i': case 'I': return VK_I;526 case 'j': case 'J': return VK_J;527 case 'k': case 'K': return VK_K;528 case 'l': case 'L': return VK_L;529 case 'm': case 'M': return VK_M;530 case 'n': case 'N': return VK_N;531 case 'o': case 'O': return VK_O;532 case 'p': case 'P': return VK_P;533 case 'q': case 'Q': return VK_Q;534 case 'r': case 'R': return VK_R;535 case 's': case 'S': return VK_S;536 case 't': case 'T': return VK_T;537 case 'u': case 'U': return VK_U;538 case 'v': case 'V': return VK_V;539 case 'w': case 'W': return VK_W;540 case 'x': case 'X': return VK_X;541 case 'y': case 'Y': return VK_Y;542 case 'z': case 'Z': return VK_Z;543 544 // AppKit generates Unicode PUA character codes for some function keys; using these when key code is not known.545 case NSPauseFunctionKey: return VK_PAUSE;546 case NSSelectFunctionKey: return VK_SELECT;547 case NSPrintFunctionKey: return VK_PRINT;548 case NSExecuteFunctionKey: return VK_EXECUTE;549 case NSPrintScreenFunctionKey: return VK_SNAPSHOT;550 #if PLATFORM(IOS)551 case NSInsertFunctionKey: case NSHelpFunctionKey: return VK_INSERT;552 553 case NSF1FunctionKey: return VK_F1;554 case NSF2FunctionKey: return VK_F2;555 case NSF3FunctionKey: return VK_F3;556 case NSF4FunctionKey: return VK_F4;557 case NSF5FunctionKey: return VK_F5;558 case NSF6FunctionKey: return VK_F6;559 case NSF7FunctionKey: return VK_F7;560 case NSF8FunctionKey: return VK_F8;561 case NSF9FunctionKey: return VK_F9;562 case NSF10FunctionKey: return VK_F10;563 case NSF11FunctionKey: return VK_F11;564 case NSF12FunctionKey: return VK_F12;565 case NSF13FunctionKey: return VK_F13;566 case NSF14FunctionKey: return VK_F14;567 case NSF15FunctionKey: return VK_F15;568 case NSF16FunctionKey: return VK_F16;569 case NSF17FunctionKey: return VK_F17;570 case NSF18FunctionKey: return VK_F18;571 case NSF19FunctionKey: return VK_F19;572 case NSF20FunctionKey: return VK_F20;573 #else574 case NSInsertFunctionKey: return VK_INSERT;575 #endif576 case NSF21FunctionKey: return VK_F21;577 case NSF22FunctionKey: return VK_F22;578 case NSF23FunctionKey: return VK_F23;579 case NSF24FunctionKey: return VK_F24;580 case NSScrollLockFunctionKey: return VK_SCROLL;581 582 // This is for U.S. keyboard mapping, and doesn't necessarily make sense for different keyboard layouts.583 // For example, '"' on Windows Russian layout is VK_2, not VK_OEM_7.584 case ';': case ':': return VK_OEM_1;585 case '=': case '+': return VK_OEM_PLUS;586 case ',': case '<': return VK_OEM_COMMA;587 case '-': case '_': return VK_OEM_MINUS;588 case '.': case '>': return VK_OEM_PERIOD;589 case '/': case '?': return VK_OEM_2;590 case '`': case '~': return VK_OEM_3;591 case '[': case '{': return VK_OEM_4;592 case '\\': case '|': return VK_OEM_5;593 case ']': case '}': return VK_OEM_6;594 case '\'': case '"': return VK_OEM_7;595 596 }597 598 return 0;599 487 } 600 601 } -
trunk/Source/WebCore/platform/ios/KeyEventIOS.mm
r236417 r236427 197 197 } 198 198 199 int windowsKeyCodeForCharCode(unichar charCode) 200 { 201 switch (charCode) { 202 case 8: case 0x7F: return VK_BACK; 203 case 9: return VK_TAB; 204 case 0xD: case 3: return VK_RETURN; 205 case 0x1B: return VK_ESCAPE; 206 case ' ': return VK_SPACE; 207 208 case '0': case ')': return VK_0; 209 case '1': case '!': return VK_1; 210 case '2': case '@': return VK_2; 211 case '3': case '#': return VK_3; 212 case '4': case '$': return VK_4; 213 case '5': case '%': return VK_5; 214 case '6': case '^': return VK_6; 215 case '7': case '&': return VK_7; 216 case '8': case '*': return VK_8; 217 case '9': case '(': return VK_9; 218 case 'a': case 'A': return VK_A; 219 case 'b': case 'B': return VK_B; 220 case 'c': case 'C': return VK_C; 221 case 'd': case 'D': return VK_D; 222 case 'e': case 'E': return VK_E; 223 case 'f': case 'F': return VK_F; 224 case 'g': case 'G': return VK_G; 225 case 'h': case 'H': return VK_H; 226 case 'i': case 'I': return VK_I; 227 case 'j': case 'J': return VK_J; 228 case 'k': case 'K': return VK_K; 229 case 'l': case 'L': return VK_L; 230 case 'm': case 'M': return VK_M; 231 case 'n': case 'N': return VK_N; 232 case 'o': case 'O': return VK_O; 233 case 'p': case 'P': return VK_P; 234 case 'q': case 'Q': return VK_Q; 235 case 'r': case 'R': return VK_R; 236 case 's': case 'S': return VK_S; 237 case 't': case 'T': return VK_T; 238 case 'u': case 'U': return VK_U; 239 case 'v': case 'V': return VK_V; 240 case 'w': case 'W': return VK_W; 241 case 'x': case 'X': return VK_X; 242 case 'y': case 'Y': return VK_Y; 243 case 'z': case 'Z': return VK_Z; 244 245 // This is for U.S. keyboard mapping, and doesn't necessarily make sense for different keyboard layouts. 246 // For example, '"' on Windows Russian layout is VK_2, not VK_OEM_7. 247 case ';': case ':': return VK_OEM_1; 248 case '=': case '+': return VK_OEM_PLUS; 249 case ',': case '<': return VK_OEM_COMMA; 250 case '-': case '_': return VK_OEM_MINUS; 251 case '.': case '>': return VK_OEM_PERIOD; 252 case '/': case '?': return VK_OEM_2; 253 case '`': case '~': return VK_OEM_3; 254 case '[': case '{': return VK_OEM_4; 255 case '\\': case '|': return VK_OEM_5; 256 case ']': case '}': return VK_OEM_6; 257 case '\'': case '"': return VK_OEM_7; 258 } 259 return 0; 260 } 261 199 262 void PlatformKeyboardEvent::disambiguateKeyDownEvent(Type type, bool backwardCompatibilityMode) 200 263 { -
trunk/Source/WebCore/platform/mac/KeyEventMac.mm
r236417 r236427 173 173 } 174 174 175 int windowsKeyCodeForCharCode(unichar charCode) 176 { 177 switch (charCode) { 178 case 'a': case 'A': return VK_A; 179 case 'b': case 'B': return VK_B; 180 case 'c': case 'C': return VK_C; 181 case 'd': case 'D': return VK_D; 182 case 'e': case 'E': return VK_E; 183 case 'f': case 'F': return VK_F; 184 case 'g': case 'G': return VK_G; 185 case 'h': case 'H': return VK_H; 186 case 'i': case 'I': return VK_I; 187 case 'j': case 'J': return VK_J; 188 case 'k': case 'K': return VK_K; 189 case 'l': case 'L': return VK_L; 190 case 'm': case 'M': return VK_M; 191 case 'n': case 'N': return VK_N; 192 case 'o': case 'O': return VK_O; 193 case 'p': case 'P': return VK_P; 194 case 'q': case 'Q': return VK_Q; 195 case 'r': case 'R': return VK_R; 196 case 's': case 'S': return VK_S; 197 case 't': case 'T': return VK_T; 198 case 'u': case 'U': return VK_U; 199 case 'v': case 'V': return VK_V; 200 case 'w': case 'W': return VK_W; 201 case 'x': case 'X': return VK_X; 202 case 'y': case 'Y': return VK_Y; 203 case 'z': case 'Z': return VK_Z; 204 205 // AppKit generates Unicode PUA character codes for some function keys; using these when key code is not known. 206 case NSPauseFunctionKey: return VK_PAUSE; 207 case NSSelectFunctionKey: return VK_SELECT; 208 case NSPrintFunctionKey: return VK_PRINT; 209 case NSExecuteFunctionKey: return VK_EXECUTE; 210 case NSPrintScreenFunctionKey: return VK_SNAPSHOT; 211 case NSInsertFunctionKey: return VK_INSERT; 212 case NSF21FunctionKey: return VK_F21; 213 case NSF22FunctionKey: return VK_F22; 214 case NSF23FunctionKey: return VK_F23; 215 case NSF24FunctionKey: return VK_F24; 216 case NSScrollLockFunctionKey: return VK_SCROLL; 217 218 // This is for U.S. keyboard mapping, and doesn't necessarily make sense for different keyboard layouts. 219 // For example, '"' on Windows Russian layout is VK_2, not VK_OEM_7. 220 case ';': case ':': return VK_OEM_1; 221 case '=': case '+': return VK_OEM_PLUS; 222 case ',': case '<': return VK_OEM_COMMA; 223 case '-': case '_': return VK_OEM_MINUS; 224 case '.': case '>': return VK_OEM_PERIOD; 225 case '/': case '?': return VK_OEM_2; 226 case '`': case '~': return VK_OEM_3; 227 case '[': case '{': return VK_OEM_4; 228 case '\\': case '|': return VK_OEM_5; 229 case ']': case '}': return VK_OEM_6; 230 case '\'': case '"': return VK_OEM_7; 231 } 232 return 0; 233 } 234 175 235 void PlatformKeyboardEvent::disambiguateKeyDownEvent(Type type, bool backwardCompatibilityMode) 176 236 {
Note: See TracChangeset
for help on using the changeset viewer.