Permalink
Please sign in to comment.
Browse files
Replace webview keyboard with native, layer backed keyboard (fixes #57)
- Loading branch information...
Showing
with
2,380 additions
and 958 deletions.
- +530 −0 Scripts/generate_keyboard_layouts.sh
- +13 −0 Shared/Generated/KeyboardLayoutANSI.h
- +329 −0 Shared/Generated/KeyboardLayoutANSI.m
- +13 −0 Shared/Generated/KeyboardLayoutISO.h
- +349 −0 Shared/Generated/KeyboardLayoutISO.m
- +13 −0 Shared/Generated/KeyboardLayoutJIS.h
- +352 −0 Shared/Generated/KeyboardLayoutJIS.m
- +2 −2 Shared/Keyboard.h
- +38 −0 Shared/KeyboardLayout.h
- +101 −0 Shared/KeyboardLayout.m
- +3 −2 Shared/Protocol.h
- +46 −16 TouchBar.xcodeproj/project.pbxproj
- +40 −32 TouchBarClient/Base.lproj/Main.storyboard
- +22 −11 TouchBarClient/KeyboardView.h
- +427 −63 TouchBarClient/KeyboardView.m
- +17 −30 TouchBarClient/ViewController.m
- +85 −340 TouchBarServer/AppDelegate.m
- +0 −366 TouchBarServer/Keyboard.html
- +0 −39 TouchBarServer/KeyboardKey.h
- +0 −57 TouchBarServer/KeyboardKey.m
| @@ -0,0 +1,13 @@ | ||
| +// | ||
| +// KeyboardLayoutANSI.h | ||
| +// TouchBar | ||
| +// | ||
| +// Generated by generate_keyboard_layouts.sh. | ||
| +// Copyright © 2016 Bikkelbroeders. All rights reserved. | ||
| +// | ||
| + | ||
| +#import "KeyboardLayout.h" | ||
| + | ||
| +@interface KeyboardLayoutANSI : KeyboardLayout | ||
| + | ||
| +@end |
| @@ -0,0 +1,13 @@ | ||
| +// | ||
| +// KeyboardLayoutISO.h | ||
| +// TouchBar | ||
| +// | ||
| +// Generated by generate_keyboard_layouts.sh. | ||
| +// Copyright © 2016 Bikkelbroeders. All rights reserved. | ||
| +// | ||
| + | ||
| +#import "KeyboardLayout.h" | ||
| + | ||
| +@interface KeyboardLayoutISO : KeyboardLayout | ||
| + | ||
| +@end |
| @@ -0,0 +1,13 @@ | ||
| +// | ||
| +// KeyboardLayoutJIS.h | ||
| +// TouchBar | ||
| +// | ||
| +// Generated by generate_keyboard_layouts.sh. | ||
| +// Copyright © 2016 Bikkelbroeders. All rights reserved. | ||
| +// | ||
| + | ||
| +#import "KeyboardLayout.h" | ||
| + | ||
| +@interface KeyboardLayoutJIS : KeyboardLayout | ||
| + | ||
| +@end |
| @@ -0,0 +1,38 @@ | ||
| +// | ||
| +// KeyboardLayout.h | ||
| +// Test | ||
| +// | ||
| +// Created by Robbert Klarenbeek on 18/11/2016. | ||
| +// Copyright © 2016 Bikkelbroeders. All rights reserved. | ||
| +// | ||
| + | ||
| +#import <Foundation/Foundation.h> | ||
| + | ||
| +#import "Keyboard.h" | ||
| + | ||
| +@import CoreGraphics; | ||
| + | ||
| +#if TARGET_OS_IPHONE | ||
| +@import UIKit; | ||
| +#endif | ||
| + | ||
| +typedef NS_ENUM(NSInteger, KeyboardLayoutType) { | ||
| + KeyboardLayoutTypeUnknown = -1, | ||
| + KeyboardLayoutTypeANSI = 0, | ||
| + KeyboardLayoutTypeISO = 1, | ||
| + KeyboardLayoutTypeJIS = 2, | ||
| +}; | ||
| + | ||
| +@interface KeyboardLayout : NSObject | ||
| +@property (nonatomic, readonly) KeyboardLayoutType type; | ||
| +@property (nonatomic, readonly) CGSize size; | ||
| +@property (nonatomic, readonly) NSUInteger numberOfKeys; | ||
| +- (KeyCode)keyCodeForKeyIndex:(NSUInteger)keyIndex; | ||
| +- (KeyEventModifierFlags)modifierFlagForKeyIndex:(NSUInteger)keyIndex; | ||
| +#if TARGET_OS_IPHONE | ||
| +- (UIBezierPath *)bezierPathForKeyIndex:(NSUInteger)keyIndex; | ||
| +#endif | ||
| +- (CGPoint)textPositionForKeyIndex:(NSUInteger)keyIndex; | ||
| +- (CGFloat)fontSizeForKeyIndex:(NSUInteger)keyIndex; | ||
| ++ (NSString *)fixedKeyCaptionForKeyCode:(KeyCode)keyCode withFnDown:(BOOL)fnDown; | ||
| +@end |
| @@ -0,0 +1,101 @@ | ||
| +// | ||
| +// KeyboardLayout.m | ||
| +// Test | ||
| +// | ||
| +// Created by Robbert Klarenbeek on 18/11/2016. | ||
| +// Copyright © 2016 Bikkelbroeders. All rights reserved. | ||
| +// | ||
| + | ||
| +#import "KeyboardLayout.h" | ||
| + | ||
| +@implementation KeyboardLayout | ||
| + | ||
| +- (KeyboardLayoutType)type { | ||
| + return KeyboardLayoutTypeUnknown; | ||
| +} | ||
| + | ||
| +- (CGSize)size { | ||
| + return CGSizeZero; | ||
| +} | ||
| + | ||
| +- (NSUInteger)numberOfKeys { | ||
| + return 0; | ||
| +} | ||
| + | ||
| +- (KeyCode)keyCodeForKeyIndex:(NSUInteger)keyIndex { | ||
| + return 0xFF; | ||
| +} | ||
| + | ||
| +- (KeyEventModifierFlags)modifierFlagForKeyIndex:(NSUInteger)keyIndex { | ||
| + return 0; | ||
| +} | ||
| + | ||
| +#if TARGET_OS_IPHONE | ||
| +- (UIBezierPath *)bezierPathForKeyIndex:(NSUInteger)keyIndex { | ||
| + return nil; | ||
| +} | ||
| +#endif | ||
| + | ||
| +- (CGPoint)textPositionForKeyIndex:(NSUInteger)keyIndex { | ||
| + return CGPointZero; | ||
| +} | ||
| + | ||
| +- (CGFloat)fontSizeForKeyIndex:(NSUInteger)keyIndex { | ||
| + return 0.0; | ||
| +} | ||
| + | ||
| ++ (NSString *)fixedKeyCaptionForKeyCode:(KeyCode)keyCode withFnDown:(BOOL)fnDown { | ||
| + switch(keyCode) { | ||
| + case 0x24: return !fnDown ? @"↩\uFE0E" : @"⌤\uFE0E"; // kVK_Return | ||
| + case 0x30: return @"⇥\uFE0E"; // kVK_Tab | ||
| + case 0x33: return !fnDown ? @"⌫\uFE0E" : @"⌦\uFE0E"; // kVK_Delete | ||
| + case 0x35: return @"esc"; // kVK_Escape | ||
| + case 0x36: return @"⌘\uFE0E"; // kVK_RightCommand | ||
| + case 0x37: return @"⌘\uFE0E"; // kVK_Command | ||
| + case 0x38: return @"⇧\uFE0E"; // kVK_Shift | ||
| + case 0x39: return @"⇪\uFE0E"; // kVK_CapsLock | ||
| + case 0x3A: return @"⌥\uFE0E"; // kVK_Option | ||
| + case 0x3B: return @"⌃\uFE0E"; // kVK_Control | ||
| + case 0x3C: return @"⇧\uFE0E"; // kVK_RightShift | ||
| + case 0x3D: return @"⌥\uFE0E"; // kVK_RightOption | ||
| + case 0x3E: return @"⌃\uFE0E"; // kVK_RightControl | ||
| + case 0x3F: return @"fn"; // kVK_Function | ||
| + case 0x40: return @"F17"; // kVK_F17 | ||
| + case 0x47: return @"⌧\uFE0E"; // kVK_ANSI_KeypadClear | ||
| + case 0x4C: return @"⌤\uFE0E"; // kVK_ANSI_KeypadEnter | ||
| + case 0x4F: return @"F18"; // kVK_F18 | ||
| + case 0x50: return @"F19"; // kVK_F19 | ||
| + case 0x5A: return @"F20"; // kVK_F20 | ||
| + case 0x60: return @"F5"; // kVK_F5 | ||
| + case 0x61: return @"F6"; // kVK_F6 | ||
| + case 0x62: return @"F7"; // kVK_F7 | ||
| + case 0x63: return @"F3"; // kVK_F3 | ||
| + case 0x64: return @"F8"; // kVK_F8 | ||
| + case 0x65: return @"F9"; // kVK_F9 | ||
| + case 0x66: return @"英数"; // kVK_JIS_Eisu | ||
| + case 0x67: return @"F11"; // kVK_F11 | ||
| + case 0x68: return @"かな"; // kVK_JIS_Kana | ||
| + case 0x69: return @"F13"; // kVK_F13 | ||
| + case 0x6A: return @"F16"; // kVK_F16 | ||
| + case 0x6B: return @"F14"; // kVK_F14 | ||
| + case 0x6D: return @"F10"; // kVK_F10 | ||
| + case 0x6F: return @"F12"; // kVK_F12 | ||
| + case 0x71: return @"F15"; // kVK_F15 | ||
| + case 0x72: return @"?⃝\uFE0E"; // kVK_Help | ||
| + case 0x73: return @"↖\uFE0E"; // kVK_Home | ||
| + case 0x74: return @"⇞\uFE0E"; // kVK_PageUp | ||
| + case 0x76: return @"F4"; // kVK_F4 | ||
| + case 0x77: return @"↘\uFE0E"; // kVK_End | ||
| + case 0x78: return @"F2"; // kVK_F2 | ||
| + case 0x79: return @"⇟\uFE0E"; // kVK_PageDown | ||
| + case 0x7A: return @"F1"; // kVK_F1 | ||
| + case 0x7B: return !fnDown ? @"⇠\uFE0E" : @"↖\uFE0E"; // kVK_LeftArrow | ||
| + case 0x7C: return !fnDown ? @"⇢\uFE0E" : @"↘\uFE0E"; // kVK_RightArrow | ||
| + case 0x7D: return !fnDown ? @"⇣\uFE0E" : @"⇟\uFE0E"; // kVK_DownArrow | ||
| + case 0x7E: return !fnDown ? @"⇡\uFE0E" : @"⇞\uFE0E"; // kVK_UpArrow | ||
| + default: | ||
| + return nil; | ||
| + } | ||
| +} | ||
| + | ||
| +@end |
Oops, something went wrong.
0 comments on commit
8c47125