Coder Social home page Coder Social logo

archagon / tasty-imitation-keyboard Goto Github PK

View Code? Open in Web Editor NEW
1.2K 67.0 292.0 1.32 MB

A custom keyboard for iOS8 that serves as a tasty imitation of the default Apple keyboard. Built using Swift and the latest Apple technologies!

License: BSD 3-Clause "New" or "Revised" License

Swift 99.65% Objective-C 0.35%

tasty-imitation-keyboard's Introduction

Tasty Imitation Keyboard

I'm working on a 3rd party keyboard for iOS8 and I want it to look and feel as close as possible to Apple's keyboard. Unfortunately, it's not possible to access the keyboard view through code, so this is my attempt to imitate it by hand. (I'm sure there are ways to get even more accuracy via reverse engineering, but that's too much work for me!) In the end, I hope to produce a coherent and robust baseline for creating custom 3rd party keybards — at least, until Apple decides to fully open up their keyboard API.

This keyboard is currently optimized for iPhone. iPad should work, but it'll look like a giant iPhone keyboard.

Recent Screenshots

Fantastic Features

  • No bitmaps! Everything is rendered using CoreGraphics.
  • Dynamic layouts! All the keys are laid out programmatically, meaning that the keyboard is much easier to extend and will automatically work on devices of all sizes.
  • Auto-capitalization, period shortcut, keyboard clicks.
  • An extensible settings screen.
  • Dark mode and solid color mode.
  • This keyboard is an iOS8 extension.

Current State

We are in alpha! The basic features and appearance should all be there by now. I'll try to not commit broken builds anymore.

Good news! I now have an app in the App Store that's built on top of this keyboard, so we know that it can pass the App Store review process.

Hold-to-select-alternate-characters will be implemented at a later time.

Build Instructions

  1. Edit Scheme for the Keyboard target and set the Executable to be HostingApp.app.
  2. Run the Keyboard target.
  3. Go to Settings → General → Keyboard → Keyboards → Add New Keyboard on your device and add the third-party keyboard.
  4. Go back to the app. You should be able to select the keyboard via the globe icon.

Learning Goals

  • Swift
  • 3rd party extensions
  • 3rd party frameworks (for IB use)
  • Autolayout
  • CoreGraphics
  • finally release an app on the App Store, darn it

Other Stuff

Please consult the project wiki for technical details. You may find it handy if you're implementing your own keyboard!

I made a 3rd party functionless keyboard with a similar layout but a much simpler program structure for debugging purposes. You can find it here: faux-testing-keyboard

🙀 Please forgive the incredibly confusing code in some of the classes. I started out trying to be all neat and perfect, but a self-imposed deadline for a personal project forced me to barge forward closer to release. And you know how that goes... 🙀

Finally, keep in mind that I am not a framework maintainer nor intend to become one. This release is public and open source because I have no reason to keep it private, not because I wish to improve it for years on end (though I still may). Expect work on this project to be sporadic at best. If you wish to use this in production, rather than waiting on me, I strongly encourage you to fork.

License

This project is licensed under the 3-clause ("New") BSD license. Go Bears!

tasty-imitation-keyboard's People

Contributors

archagon avatar mirontoli avatar oscardpt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tasty-imitation-keyboard's Issues

UIReturnKeyType

Hi,
tank you for your awesome work,
you can use UIReturnKeyType to change return key label for given situation, for example : return, Search, Done, Send ...
like original keyboard most of custom keyboards have this feature.
UIRetunKeyType is :

import UIKit
enum UIReturnKeyType : Int {
case Default
case Go
case Google
case Join
case Next
case Route
case Search
case Send
case Yahoo
case Done
case EmergencyCall
}

optional var returnKeyType: UIReturnKeyType { get set }

and link is :
https://developer.apple.com/LIBRARY/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/c/tdef/UIReturnKeyType

BannerView is prohibited from having interaction

The banner view would be useful for auto completion, but currently its touches are being intercepted by the keys. What's a good workaround to allow this area to be touched? The implementation of ForwardView seems to prohibit this.

I understand the intention was to allow space for the key popover graphics to extend above the keys, but this view should be able to be used for user interaction. What can we do about it?

Typing is laggy in dark mode, especially in landscape.

I have to use layer masks to make the keys and popups have the blur effect, but unfortunately this appears to significantly slow down rendering. Not sure how to fix without getting rid of blur effect — which is pretty important!

Background Color

Good day,
Sorry writing this as an issue, but can you please point us where we can change backgorund color and special key colors.

Simpler support for additional key layouts (for different languages)

I'm curious if a more standardized template system for additional layouts other than US Latin could be done efficiently. Support for other letters, alphabets, and languages (such as Cyrillic, Arabic, etc.) is going to be needed.

Right now, the code and the layout is intertwined in DefaultKeyboard. I'm envisioning something as simple as an array of rows and keys, their properties (shift, letter, and so on), done as an array or plist, that could easily be switched out. It must be something you're thinking about, since you've built an app for different alphabets!

Retain cycle in ForwardingView

In ForwardingView.swift you're declaring a dictionary from touches to UIViews but never releasing the UIViews when touches end. This causes a retain cycle and will eventually crash the keyboard if you cycle through it enough times (by advancing to next keyboard) as it retains all instances. To fix this you can put in

self.touchToView[touch] = nil

at the end of both touchesEnded and touchesCancelled. :)

Long Key

Good day,
Can you please provide information if the longkey press can add extra symbols for selection ?

Punctuation check improvements

(I probably could have done this as a pull request, but figured it warranted a discussion. And sometimes a simple text replace is easier than dealing with merges!)

You currently check for punctuation using something like this:

text == "!" || text == "."

However, there are native methods for that. I am uncertain if these deal with localization, but I assume they do--for instance, Japanese uses a different period than English " 。". This may not be what you need, but my version of checking for punctuation includes commas etc:

import UIKit
import Foundation

extension String {

     func containsPunctuation() -> Bool {

        //println(NSCharacterSet.punctuationCharacterSet())
        if let r = self.rangeOfCharacterFromSet(NSCharacterSet.punctuationCharacterSet())
        {
            return true
        }
        return false
    }
}

Whenever the keyboard height is changed, the keyboard flickers before correctly adjusting to the new height.

I am lead to believe that this is a problem with the framework. If you add a constraint to set the new keyboard height, you can add a breakpoint to viewDidLayoutSubviews and see that even though the keyboard height is changed during one of the frames in the simulator or on the device, the frame, bounds, and center properties of all the views are still at their old values, making it impossible to compensate.

SwiftKey appears to bypass this problem, but I think they simply cheat by hiding their keyboard until the height is changed. If I'm wrong, please send a solution! It's really annoying.

Performance Improvements

  • memoize geometry calculations for key shapes (probably inconsequential despite repeated work)
  • lazy load settings
  • reuse keys between pages
  • share backing stores between CALayers for identically-sized keys
  • instead of having individual key views, draw them all manually in the view controller's view; will decide if/when incorporating illyabusigin/CYRKeyboardButton

Changing colors

Hi,

How can I change the keys background color and also the keyboard background?

Thanks,
Mooly.

Does not fit iPAD screen.

I just noticed that keyboard does not fit iPad and iPhone 6 (landscape) screen. It appears as a little keyboard on the center.

QWERTZ layout planned?

Do you have any plans to support the German QWERTZ Layout soon?
Just by swapping Y and Z and adding 3 Buttons?! I would really appreciate it as I would like to use the keyboard for my Master Thesis Research in Germany.

qwertz keyboard

iPhone 6 & 6plus landscape mode

Keyboard does not fit screen in landscape mode on iPhone 6 & 6plus. I know you did it because default keyboard of Iphone 6 has extra buttons. But, could you please make it to fit area anyway? In future you add extra buttons it will be resized anyway.

Long press keys

I know you've said you'll tackle this later, but I thought I'd open this for consideration.

We just discussed in another bug the requirement for a banner due to the view not being able to have popups extend outside which is unfortunate.

If the popups are on the left and right, that'd have implications for the long press implementation.

Is it possible to resize the view on the fly?

First row Popup

Hi
Thank you for your awesome work,
In Xcode 6 Beta 5 you can adjust a custom keyboard's height, and you can draw popup for first row normally, follow is the code from apple developer guid:

CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant: _expandedHeight];
[self.view addConstraint: _heightConstraint];

Support for accents

Keep holding your finger down and slide it to insert accents, important when you're writing in a non-English language.

Crash Report

I was looking at iPhone General > Privacy > Usage > Usage Data and found this crash report. Any idea what is the reason?

keyboard

use the keyboard with another project!

Hello

I want to use the keyboard with another project so i copped the keyboard swift files only but when i use the keyboard it works at the first time but when i dismiss it and use it many times it stop working until i delete it from the keyboards list....but the when i use your project it don't have this problem!!

my question is that when i copy the swift files of the keyboard to other project should i do any thing else??

Thanks..

Update wiki with keyboard sizes and constraints?

Hi,

Thanks for the great work you did on this project but I was wondering if you could add a comprehensive image of the iPhone keyboard with size overlays on it for the keys and spacing to the wiki. This would really help lots of people.

Thanks,
Georges

Add a MKMapView, crashes immediately after the map view shows up

Can I ask a irrelevant question? I am trying to add a map view to my custom keyboard app. But it crashes in device when I run from native target, not from extension. But if I run it from extension target, it works fine. Why it only crashes from native target not from extension target.

Popup of the first row keys

Hi,

Please help me fix 2 issues below:

  1. Popup of first row keys cannot draw correctly when I remove top banner.
    self.keyboardHeight = self.heightForOrientation(self.interfaceOrientation, withTopBanner: false)

img_0114

  1. Sometime keyboard does not show in Spotlight. The keyboard takes a long time (1-2 second) to appear.
    It seems that the delay relates to Layout Constraints.

2014-11-19 17:23:09.127 Keyboard[10796:2579215] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170094d70 V:|-(1)-[UIView:0x17019b450] (Names: '|':UIView:0x17019b110 )>",
"<NSLayoutConstraint:0x170094dc0 V:[UIView:0x17019b450]-(0)-| (Names: '|':UIView:0x17019b110 )>",
"<NSLayoutConstraint:0x1700951d0 V:|-(0)-[UIView:0x17019b110] (Names: '|':Keyboard.DefaultSettings:0x13e60dc50 )>",
"<NSLayoutConstraint:0x170095220 UIView:0x17019b110.bottom == Keyboard.DefaultSettings:0x13e60dc50.bottom>",
"<NSLayoutConstraint:0x174095db0 Keyboard.DefaultSettings:0x13e60dc50.height == UIInputView:0x13e50b4b0.height>",
"<NSLayoutConstraint:0x170095680 'UIView-Encapsulated-Layout-Height' V:[UIInputView:0x13e50b4b0(0)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170094dc0 V:[UIView:0x17019b450]-(0)-| (Names: '|':UIView:0x17019b110 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2014-11-19 17:23:09.217 Keyboard[10796:2579215] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x170095680 'UIView-Encapsulated-Layout-Height' V:[UIInputView:0x13e50b4b0(0)]>",
"<NSLayoutConstraint:0x170096080 V:[UIInputView:0x13e50b4b0(216)]>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170096080 V:[UIInputView:0x13e50b4b0(216)]>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

Crashes after pressing 3 or 4 buttons

Oct 19 23:58:14 nomenklatura.local pkd[18995]: enabling pid=19006 for plug-in Archagon.HostingApp.Keyboard(1.0) DA654749-94A4-4029-9900-D0E97013AF74 /Users/brendan/Library/Developer/CoreSimulator/Devices/1B28B0C0-211A-4A2D-9143-EEAE33BD1574/data/Containers/Bundle/Application/3AF89032-0675-4096-96EC-BFBB43DAFC3D/HostingApp.app/PlugIns/Keyboard.appex
Oct 19 23:58:14 nomenklatura com.apple.CoreSimulator.SimDevice.1B28B0C0-211A-4A2D-9143-EEAE33BD1574.launchd_sim[18968] (Archagon.HostingApp.Keyboard): The _DirtyJetsamMemoryLimit key is not available on this platform.
Oct 19 23:58:14 nomenklatura.local kbd[19029]: table drop: 101
Oct 19 23:58:14 nomenklatura com.apple.CoreSimulator.SimDevice.1B28B0C0-211A-4A2D-9143-EEAE33BD1574.launchd_sim[18968] (com.apple.imfoundation.IMRemoteURLConnectionAgent): The _DirtyJetsamMemoryLimit key is not available on this platform.
Oct 19 23:58:14 nomenklatura Keyboard[19031]: assertion failed: 13F34 12A365: libxpc.dylib + 59417 [75E30F22-514B-3A20-B82C-EDA43AF5C35C]: 0x7d
Oct 19 23:58:14 nomenklatura com.apple.CoreSimulator.SimDevice.1B28B0C0-211A-4A2D-9143-EEAE33BD1574.launchd_sim[18968] (com.apple.imfoundation.IMRemoteURLConnectionAgent): The _DirtyJetsamMemoryLimit key is not available on this platform.
Oct 19 23:58:14 nomenklatura Keyboard[19031]: assertion failed: 13F34 12A365: libsystem_sim_trace.dylib + 19013 [4A450685-501B-33F1-9BA7-C3A8B1C2A278]: 0x4
Oct 19 23:58:14 nomenklatura assertiond[18983]: assertion failed: 13F34 12A365: assertiond + 11619 [03CE1BE5-ACCB-3989-A453-41D167A25E66]: 0x1
Oct 19 23:58:14 --- last message repeated 1 time ---
Oct 19 23:58:14 nomenklatura.local SpringBoard[18979]: [MPUSystemMediaControls] Updating supported commands for now playing application.
Oct 19 23:58:14 nomenklatura.local Keyboard[19031]: Failed to inherit CoreMedia permissions from 19006: (null)
Oct 19 23:58:14 nomenklatura.local Keyboard[19031]: proxy appearance is 0
Oct 19 23:58:14 --- last message repeated 1 time ---
Oct 19 23:58:14 nomenklatura.local Keyboard[19031]: did actual layout with (0.0,0.0,320.0,264.0)!
Oct 19 23:58:14 nomenklatura.local Keyboard[19031]: generating points for <Keyboard.KeyboardKeyBackground: 0x7f9648630f60; frame = (0 0; 24 51); userInteractionEnabled = NO; layer = <CALayer: 0x7f96486310a0>>
Oct 19 23:58:14 nomenklatura.local Keyboard[19031]: Unable to simultaneously satisfy constraints.
        Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
    (
        "<NSLayoutConstraint:0x7f964844e440 'UIView-Encapsulated-Layout-Height' V:[UIInputView:0x7f964852a7c0(216)]>",
        "<NSLayoutConstraint:0x7f9648539d50 V:[UIInputView:0x7f964852a7c0(294)]>"
    )

    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x7f9648539d50 V:[UIInputView:0x7f964852a7c0(294)]>

    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
Oct 19 23:58:14 nomenklatura.local Keyboard[19031]: constraint added
Oct 19 23:58:17 nomenklatura.local Keyboard[19031]: fatal error: high- and low-surrogate code points are not valid Unicode scalar values
Oct 19 23:58:17 nomenklatura assertiond[18983]: assertion failed: 13F34 12A365: assertiond + 11619 [03CE1BE5-ACCB-3989-A453-41D167A25E66]: 0x1
Oct 19 23:58:17 nomenklatura.local HostingApp[19006]: plugin Archagon.HostingApp.Keyboard interrupted
Oct 19 23:58:17 nomenklatura assertiond[18983]: assertion failed: 13F34 12A365: assertiond + 11619 [03CE1BE5-ACCB-3989-A453-41D167A25E66]: 0x1
Oct 19 23:58:17 nomenklatura com.apple.CoreSimulator.SimDevice.1B28B0C0-211A-4A2D-9143-EEAE33BD1574.launchd_sim[18968] (Archagon.HostingApp.Keyboard[19031]): Service exited due to signal: Illegal instruction: 4

I'm sure you'll easily reproduce this, but putting it here just in case. 😄

Multiple key in one key

Thanks for wonderful project
I know you said press key for multiple key (long key) isn't your priority, I think this is the most important part of every keyboard, so I want to know when you are going to work on it? , if you can give us a time

Thanks

Make it simpler to implement?

Hey,

We all appreciate the great keyboard you built here, but I was wondering if you have plans to make this simpler to implement as some sort of Library which we can just use and build on top of. That would be the best thing ever and would enable tons of inexperienced developers the chance to develop simple keyboards while giving the user the best experience possible.

I would be 100% willing to help with this.

Thanks,
Ge0rges

segfault on Xcode 6.1

The following is no fun:

CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
    cd /Users/brendan/git/tasty-imitation-keyboard
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -target x86_64-apple-ios8.0 -module-name Archagon_HostingApp_Keyboard -Onone -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -g -module-cache-path /Users/brendan/Library/Developer/Xcode/DerivedData/ModuleCache -application-extension -I /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Products/Debug-iphonesimulator -F /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Products/Debug-iphonesimulator -c -j8 /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardLayout.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardKeyBackground.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardModel.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/Catboard.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/ForwardingView.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardViewProtocol.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardConnector.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardKey.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardViewControllerExtendableMethods.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/KeyboardViewController.swift /Users/brendan/git/tasty-imitation-keyboard/Keyboard/DirectionEnum.swift -output-file-map /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Objects-normal/x86_64/Keyboard-OutputFileMap.json -parseable-output -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Objects-normal/x86_64/Archagon_HostingApp_Keyboard.swiftmodule -Xcc -I/Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Archagon.HostingApp.Keyboard-generated-files.hmap -Xcc -I/Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Archagon.HostingApp.Keyboard-own-target-headers.hmap -Xcc -I/Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Archagon.HostingApp.Keyboard-all-target-headers.hmap -Xcc -iquote -Xcc /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Archagon.HostingApp.Keyboard-project-headers.hmap -Xcc -I/Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Products/Debug-iphonesimulator/include -Xcc -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Xcc -I/Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/DerivedSources/x86_64 -Xcc -I/Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -DDEBUG=1 -emit-objc-header -emit-objc-header-path /Users/brendan/Library/Developer/Xcode/DerivedData/TastyImitationKeyboard-emsqwmkflxtspwfnpmqoxmryeind/Build/Intermediates/TastyImitationKeyboard.build/Debug-iphonesimulator/Keyboard.build/Objects-normal/x86_64/Archagon_HostingApp_Keyboard-Swift.h

<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)

Multiple keyboards in the same holding app

Hey!

Been playing with keyboard generation on bbqsrc/tasty-imitation-keyboard and bbqsrc/softkbdgen.

One thing I've been wondering if whether or not it is possible to have multiple keyboards in the same holding app. I'm sure it is, but I'm not sure how to go about it yet.

I intend to spend tomorrow trying to work out how to do it, but thought I'd better ask here to speed up the process in case someone knows how to do it. 😄

Issues building for device

Finally got a real device to test this with. Once I set the target to the iOS 8.1 iPod, hit play in Xcode, I get the following stacktrace and nothing nice on my screen. 😢

dyld: Library not loaded: @rpath/KeyboardFramework.framework/KeyboardFramework
  Referenced from: /private/var/mobile/Containers/Bundle/Application/458D8987-D3EB-4AB3-9F64-97F499C6DED8/HostingApp.app/HostingApp
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/458D8987-D3EB-4AB3-9F64-97F499C6DED8/HostingApp.app/Frameworks/KeyboardFramework.framework/KeyboardFramework: mmap() error 1 at address=0x001AB000, size=0x00008000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/458D8987-D3EB-4AB3-9F64-97F499C6DED8/HostingApp.app/Frameworks/KeyboardFramework.framework/KeyboardFramework

What am I doing wrong?

Writing only capital letters

Good day,
I have tested your keyboard and can see that application is writing only capital letters, even if i select lowercase capital letters appears

AutoPeriod need to be fixed

When auto-period is ON, it puts period to the end of word if you click space 2 times not depending on pause between space clicks. In default iOS keyboard it does that only if you double click space or pause between clicks is 1 second. If it is more than 1 second it keeps inserting space character.

is there any way to add about AutoCompletion ?

i used this code ... in keyPressed() ...

       if let textDocumentProxy = self.textDocumentProxy as? UIKeyInput {

            textDocumentProxy.insertText(key.outputForCase(self.shiftState.uppercase()))

    }
    if( key.outputForCase(self.shiftState.uppercase()) == "I" )
    {
        self.getStr1 = key.lowercaseOutput!
        return

    }

    if ( self.getStr1 == "I" )
    {
        if ( key.outputForCase(self.shiftState.uppercase()) == "L" )
        {
            //getStr2 = key.lowercaseOutput!
            if let textDocumentProxy2 = self.textDocumentProxy as? UIKeyInput {
            textDocumentProxy2.deleteBackward()
            textDocumentProxy2.deleteBackward()
            textDocumentProxy2.insertText("I Love")
            self.getStr1 == ""
            return
            }
        }
    }

... but i can press the the first described letter in keyboard startup : "I" , when the other keys i pressed, the app crashed ..
please give me some recommendation ... thanks

Rotations are slow.

This is especially the case in dark mode, but it's pretty slow in normal mode too. Usage afterwards is not affected. My layout function doesn't appear to take up much time, so I have to assume it's a rendering issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.