Scribe-iOS is a pack of iOS and iPadOS keyboards for language learners

Overview
Scribe Logo

platforms version issues discussions language license coc

Available on the App Store

Also available on Android (WIP).

Language learning keyboards for iOS

Scribe-iOS is a pack of iOS and iPadOS keyboards for language learners. Features include translation (beta), verb conjugation and word annotation that give users the tools needed to communicate with confidence.

Scribe is fully open-source and does not collect usage data or ask for system access. Feature data is sourced from Wikidata and stored in-app, meaning Scribe is a highly responsive experience that does not require an internet connection.

See the presentation slides for Wikidata Data Reuse Days 2022 and the articles about Scribe in the Featured By section for a full description of the project. Those interested in contributing are also welcome to join us in the discussions!

Contents

Preview Videos

The following are combined preview videos for the App Store:

iPhone 6.5" version

Scribe_iPhone65.mp4

See also

iPad Pro 4th gen version

Scribe_iPadPro4th.mp4

The App Store videos, images and text can be found in Resources/AppStore. Contributions to improve them are welcome, but please open an issue to check before.

Supported Languages

Scribe's goal is functional, feature-rich keyboards for all languages. Check Scribe-Data/Data for queries for currently supported languages and those that have substantial data on Wikidata. Also see the new keyboard label in the Issues for keyboards that are currently in progress or being discussed, and suggest a new keyboard if you don't see it being worked on already!

The following table shows the supported languages and the amount of data available for each on Wikidata:

Languages Nouns Verbs Translations* Adjectives† Prepositions‡
French 15,788 1,246 67,652 - -
German 28,089 3,130 67,652 - 187
Italian 783 71 67,652 - -
Portuguese 4,662 189 67,652 - -
Russian 194,394 11 67,652 - 12
Spanish 9,452 2,062 67,652 - -
Swedish 41,187 4,138 67,652 - -

* Given the current beta status where words are machine translated.

Adjective-preposition support is in progress (see issue).

Only for languages for which preposition annotation is needed.

Updates to the above data can be done using Scribe-Data/update_data.py.

Setup

Users access Scribe language keyboards through the following:

  • Download Scribe from the App Store
  • Settings -> General -> Keyboard -> Keyboards -> Add New Keyboard
  • Select Scribe and choose from the available language keyboards
  • When typing press 🌐 to select keyboards

Keyboard Features

Keyboard features are accessed via the Scribe key at the top left of any Scribe keyboard. Pressing this key gives the user three new selectable options: Translate, Conjugate and Plural in the keyboard's language. These keys allow for words to be queried and inserted into the text field followed by a space.

Current features include:

• Translation

The beta Translate feature can translate single words or phrases from English into the language of the current keyboard when the return key is pressed.

Those interested in improving this feature can see the Translation project. The goal is that Translate will provide options for entered words where a user can use grammatical categories and synonyms to select the best option (see issue). Then the feature will expand to allow translations from system and chosen languages. More advanced methods will be planned once this feature is out of beta.

As of now translations are not widely available on Wikidata (see issue). The current functionality is thus based on 🤗 Transformers machine translations of words queried from Wikidata. The ultimate goal is for the translations and synonyms to all be directly queried.

• Verb Conjugation

With the Conjugate feature, a user is presented with the grammar charts for an entered verb instead of the keyboard. Pressing an example in the charts inserts the chosen conjugation into the text field.

• Noun Plurals

The Plural feature allows a user to enter a noun and then insert its plural into the text field when the return key is pressed.

• Word Annotation

Scribe further annotates words in the command bar to help users understand the context of what they're typing. Annotations are displayed once a user has typed a given word and pressed space or by pressing the Scribe key while it is selected. The hope is that annotation will help a user remember grammar rules even when not using Scribe.

Nouns

Scribe annotates nouns in the command bar according to the following conventions:

  • Feminine: colored red 🟥 and marked with (F)
  • Masculine: colored blue 🟦 and marked with (M)
  • Common: colored purple 🟪 and marked with (C)
  • Neutral: colored green 🟩 and marked with (N)
  • Plural: colored orange 🟧 and marked with (PL)
  • More than one: marked with all their forms

The above form abbreviations are translated into their equivalents in the keyboard's language.

Prepositions

Scribe also annotates the grammatical cases (accusative, dative, etc) of prepositions in the command bar if there is a relation in the given language.

• Base Functionality

The goal is for Scribe to have all the functionality of system keyboards. See the Base Keyboard Features project if interested in helping.

Current features

  • iPhone and iPad support
  • Dynamic layouts for cross-device performance
  • Portrait and landscape modes
  • Dark mode compatibility
  • Autocompletion and correction (WIP - see Autocomplete and Autocorrect issues)
  • Auto-capitalization following ., ? and !
  • The double space period shortcut
  • Typing symbols and numbers followed by a space returns keyboard to letters
  • Hold-to-select characters for letters and symbols
  • Key pop up views for letters and symbols

Language Practice

A future feature of Scribe is language practice within the app itself. Scribe presents users with information that is directly relevant to their current struggles with a second language. This information can be saved in-app and used to create personalized lessons such as flashcards to reinforce the information that Scribe has provided. Work on this feature will be completed in the language practice project.

Contributing

Work that is in progress or could be implemented is tracked in the Issues and Projects. Please see the contribution guidelines if you are interested in contributing to Scribe-iOS. Also check the -next release- and -priority- labels in the Issues for those that are most important, as well as those marked good first issue that are tailored for first time contributors.

Ways to Help

Data Edits

Scribe does not accept direct edits to the grammar JSON files as they are sourced from Wikidata. Edits can be discussed and the queries themselves will be changed and ran before an update. If there is a problem with one of the files, then the fix should be made on Wikidata and not on Scribe. Feel free to let us know that edits have been made by opening a data issue or contacting us in the issues for Scribe-Data and we'll be happy to integrate them!

Featured By

List of articles featuring Scribe


Wikimedia Tech News

Powered By


Wikidata
Comments
  • Alphabetized Autocomplete

    Alphabetized Autocomplete

    Terms

    Description

    This issue is to add an initial auto-suggest feature to Scribe, and is the first part of #3. Work for this will be done in relation to #187 for the Wikimania Hackathon.

    This issue comprises:

    • [x] Finding resources for a function to find the next words alphabetically
    • [x] Figuring out which words should be suggested to the user
      • At the start, just nouns
    • [x] Removing the command bar unless the keyboard is in command mode
      • Annotations need to show up after a user presses space still
      • The coloration likely needs to change to keyboardBgColor, as making it clear would prevent annotations from being presented
    • [x] Fixing the coloration of characters on annotations to match the new background
    • [x] Properly styling the Scribe key corners/shadow when the command bar is removed
    • Putting two lines between the command buttons to delineate them when they have no background (@andrewtavis)
      • [x] Add the lines to the .xib file
      • [x] Create functions that allow them to be added and removed
      • [x] Removing the left line if an annotation of long enough length is being shown
        • This needs to be done in the function to show the lines
        • Checking the length of the text in the command bar is the likely method for this
    • [x] Make the command buttons user interactable when an autocomplete would be possible
      • The buttons work now, and are conditionally deactivated if an annotation is happening based on the length of the annotation
    • [x] The creation of a function to find the three next words in alphabetical order to the currently typed word in the proxy
    • [x] Assigning those three words to the command buttons
    • [x] Running the function and doing the assignment each time a key is pressed (within loadKeys())
    • [x] Inserting the word on a button to the text field when a user presses an auto suggest button

    Contribution

    I'll be working on this with @SaurabhJamadagni :)

    feature help wanted -next release- 
    opened by andrewtavis 82
  • Add issue templates to Scribe-iOS

    Add issue templates to Scribe-iOS

    It would be good if Scribe-iOS had some base issue templates for future contributors.

    The following YouTube video has a good description of how to set them up using .yml files for custom structures, and Signal's iOS templates section is another place to look for how to set up the configuration files.

    Templates could be made for the following: bugs, feature requests, data, new keyboards, and questions. blank_issues_enabled: false could then be set in the config.yml file of the .github/ISSUE_TEMPLATE directory.

    good first issue 
    opened by andrewtavis 52
  • Make command bar cursor more apparent

    Make command bar cursor more apparent

    This issue is to add a minor UI element to Scribe keyboards where the command bar would be shown to be actionable when commandState == true in KeyboardViewController.swift and CommandVariables.swift. As of now the cursor and prompt are static and in one color, but adding a blink or greyed out "write" in the keyboard language would make it more apparent to the user that they will be typing in the command bar instead.

    Changing the prompt to have greyed out text would likely be the easiest solution to this (see image below).

    • [ ] This issue should also include updating the Translate images in the App Store to show the command placeholder
    good first issue help wanted -next release- 
    opened by andrewtavis 50
  • Baseline autosuggest

    Baseline autosuggest

    Terms

    Description

    In order to release the work that's been done in #188, Scribe also needs to add baseline autosuggest functionality. Reason being is that the user would expect to also see word suggestions even if they're not currently typing a word. This is the other part of the baseline version of #3, which would see this feature implemented using natural language processing models over the current words in the text proxy (will be another issue later).

    The working idea for this is that we should find/generate a list of most used words in each Scribe keyboard language, and then do random selections from this list. In this way the architecture of the feature will be set for future iterations.

    Contribution

    I'll be working on this with those who are interested prior to the v1.5.0 release :)

    feature help wanted -next release- 
    opened by andrewtavis 35
  • Update Annotation Formatting

    Update Annotation Formatting

    Terms

    Description

    Something that was discovered in the process of doing #188 was that the annotation style needs to be switched with the inclusion of autocomplete and autosuggest. We no longer have the space to display the words with the annotations, so they should now be removed.

    The new version of annotations will show them centered over the translate button without the word. This will further open up the possibility for them to be clicked later when we add functionality for explanations of annotations like when there are multiple genders for a noun or multiple cases for a preposition.

    Contribution

    I’ll be working on this for the v1.5.0 release so that this can be implemented with the new autocomplete and autosuggest functionalities :) Those interested in helping would be welcome 😊

    feature help wanted design -next release- 
    opened by andrewtavis 33
  • Wikimania 2022 Prep and Documentation

    Wikimania 2022 Prep and Documentation

    opened by andrewtavis 32
  • Default autosuggestions for pronouns

    Default autosuggestions for pronouns

    Terms

    Description

    Once work is finished on #194, another feature that can be added is to create baseline autosuggestions for when a user enters in a pronoun. This would require making sure that all the needed conjugations are present on Wikidata, but generally what we'd be looking for is always suggesting the conjugations of "have," "be" and "can" when a user types a pronoun. This has been found to be a pattern in system keyboards, and making sure that there's some consistency to these very common words makes sense (what words follow pronouns in each language should be checked though).

    We'd need to make a variable pronouns in KeyboardsBase/InterfaceVariables.swift, and this array would be overwritten in the set{languageCode}KeyboardLayout functions with pronouns for each language within their respective InterfaceVariables.swift files. We'd then be able to check if one of these words has been typed, and then return the conjugations within getAutosuggestions in KeyboardViewController.swift.

    • Currently blocked by #194

    Contribution

    I'd be happy to work on this or direct someone in a contribution once #194 is finished.

    feature good first issue help wanted data -next release- 
    opened by andrewtavis 30
  • Add greeting bot to Scribe-iOS

    Add greeting bot to Scribe-iOS

    Terms

    Description

    This issue is to create a greeting bot that will communicate with people who open an issue in or send a PR to Scribe-iOS.

    Contribution

    Assigned to @RishiKumarRay 🙏

    feature 
    opened by andrewtavis 25
  • Change return key icon to a right triangle during command executions

    Change return key icon to a right triangle during command executions

    Terms

    Description

    This is a very simple issue. The goal is that the commands Translate, Conjugate or Plural would trigger a change in the icon that's applied to the return key. Not only would it change color to ScribeBlue, but it would also change its icon to arrowtriangle.right.fill of SF Symbols from arrow.turn.down.left, with the original icon being replaced once a command is canceled or executed.

    General feedback has been that it's a bit hard to realize that the return key should be pressed to execute commands, so adding this might make it more apparent.

    • #103 could potentially he changed such that arrowtriangle.right.fill or arrow.right could be used when the user is making a web search.
    • This could similarly include switching the button to magnifyingglass if the user is searching.

    Contribution

    Would be happy to do this if others don't have interest :)

    good first issue help wanted design -next release- 
    opened by andrewtavis 20
  • Add information icon to the command bar

    Add information icon to the command bar

    Terms

    Description

    Scribe-iOS will eventually allow users to press the command bar for information (see #13). The first step in this is to make the command bar a button instead of a label, or putting a button above the label that the user can then interact with. This is a simple task that could be done now and disabled until the commands are ready.

    Some work would happen in KeyboardsBase/Keyboard.xib, with the rest happening in KeyboardsBase/KeyboardViewController.swift and KeyboardsBase/ScribeFunctionality/CommandBar.swift (the custom class that the button would be added as an element of).

    Contribution

    I'd be happy to work on this later or collaborate with others on it :)

    feature good first issue help wanted design 
    opened by andrewtavis 18
  • Speed up delete button as user continues to hold

    Speed up delete button as user continues to hold

    Terms

    Description

    It would be good if Scribe's delete button would speed up as the user holds it for longer, as this is a feature of system keyboards. This would be done by editing keyLongPressed in KeyboardViewController.swift.

    Contribution

    This isn't a priority as of now. Someone is welcome to work on it if they'd like, or I'll get to it later :)

    feature good first issue 
    opened by andrewtavis 17
  • Add action to command bar information icon #214

    Add action to command bar information icon #214

    Contributor checklist

    @gmmoraes

    • [X] This pull request is on a separate branch and not the main branch
    • [X] I have updated the CHANGELOG with a description of my changes for the upcoming release (if necessary)

    Description

    • Created a new view for tooltip view to display information about Wikidata
    • Defined the data for the tooltips
    • implemented the logic to show the tooltip view from the command bar information icon

    Related issue

    #214

    opened by gmmoraes 1
  • Hit space to insert highlighted autocompletion

    Hit space to insert highlighted autocompletion

    Terms

    Description

    A feature of system keyboards is that a user can press space to insert an autocompletion if it's highlighted. This issue is to add this feature to Scribe 😊 We'd want to check if there is a highlighted word, which was completed in #250 (see that issue for how to check for the conditions that highlight). After this, we'd then want to add a condition to the actions that occur after space is pressed where if the conditions for highlighting are met, then we'd insert the word in the highlighted autocompletion followed by a space. The place where spaceBar actions are is here in the main KeyboardViewController:

    https://github.com/scribe-org/Scribe-iOS/blob/c07f06debd0a2c12b2512a9c4e491cf1539923a4/Keyboards/KeyboardsBase/KeyboardViewController.swift#L1812

    Contribution

    I'd be happy to support someone with this issue or work on it if no one else has interest 🙃

    feature good first issue help wanted 
    opened by andrewtavis 4
  • Menu item to choose which language to translate from

    Menu item to choose which language to translate from

    Terms

    Description

    This issue is to add a menu option to the Scribe app where the user would be able to select which language they're translating from. Designs of this feature can be seen on Figma.

    • This issue is linked to and blocked by #16 where the menu will be created.

    Contribution

    I'll work on this after we have a working menu, but would love to get some support!

    feature help wanted blocked 
    opened by andrewtavis 0
  • Autocomplete words given misspelled inputs

    Autocomplete words given misspelled inputs

    Terms

    Description

    The goal of this issue is to allow Scribe to suggest proper spellings of words within autocomplete. For example, in the German keyboard when the user types the word "Bucher" the correct spelling of "Bücher" is not suggested. The goal of this issue is to implement providing proper spellings as autocomplete options - not simply the next alphabetical options.

    • This issue is related to #241 as this would provide a partial solution to this issue

    Contribution

    Would be happy to work on this with someone or look into it myself :)

    feature help wanted 
    opened by andrewtavis 0
  • Add demonstrative pronouns to German case declination displays

    Add demonstrative pronouns to German case declination displays

    Terms

    Description

    This issue would add declinations for demonstrative pronouns (this and these) into the display that users see when the type a preposition and press the case annotation. This would use the 2x2 forms display with masculine in the top left, feminine in the top right, neutral in the bottom left, and plural in the bottom right (to match other table forms).

    The various declinations can be found on this website: https://deutschegrammatik20.de/pronomen/demonstrativpronomen-2/demonstrativpronomen/

    Contribution

    I'd be happy to support someone in implementing this, or will work on it in the coming weeks 😊 The main thing will be creating the dictionaries, and then adding references to them by adding cases to the following enum: https://github.com/scribe-org/Scribe-iOS/blob/00b0fc4dd9751bd9162db3682920a25438956eee/Keyboards/LanguageKeyboards/German/DECommandVariables.swift#L80

    feature good first issue help wanted 
    opened by andrewtavis 0
  • Add Swipe support for hold-to-select design

    Add Swipe support for hold-to-select design

    Terms

    Description

    In #26, hold-to-select keys were implemented. I'm not sure if this could or should be implemented independently from a more general swipe typing feature, which could be its own issue...

    The current behavior is that if you press and hold the "O" key for example, you're then forced to lift your finger to choose the key you want from the pop-up. My preferred way is to be able to keep my finger on the keyboard and then swipe to the choice I want.

    Contribution

    Let me know if you can relate to this, or if my typing nitpicks are unique to me :). Still no Swift knowledge but might dive in.

    feature help wanted 
    opened by adnanhz 2
Releases(2.1.0)
  • 2.1.0(Nov 6, 2022)

    ⌨️ New Keyboards

    • Adds a QWERTY keyboard option for French.

    ✨ New Features

    • The left and right buttons in the conjugation and declination views are disabled now if pressing them will not lead to a change in the view.
    • Autosuggestions for pronouns have been improved for German, French and Spanish.
    • The keyboards shift state is disabled by pressing an autocompletion or autosuggestion.
    • Autocomplete now functions after quotes, slashes and hashtags.
    • Scribe can now access unordered names in the user's contacts to present them as autocompletions.
    • The delete button now speeds up as the user holds it.
    • Typing a period, comma, question mark or exclamation point now removes a space before them if there is one.

    🗃️ Data Added

    Thousands of new French verb conjugations have been added!

    • French: 134 nouns, 3,905 verbs
    • German: 42 nouns, 15 verbs
    • Italian: 247 nouns
    • Portuguese: 15 nouns
    • Russian: 11 nouns
    • Spanish: 2,472 nouns, 244 verbs
    • Swedish: 89 nouns

    🎨 Design Changes

    • The labels for conjugations and declinations have been made darker in dark mode to be more readable.
    • French keyboards are now named based on their keyboard style.
    • Keyboards will now display the language followed by "(Scribe)" for a second before showing the language's word for space, similar to the system keyboards.

    🐞 Bug Fixes

    • The accent character on the French letters keyboard is now the correct character.
    • Indentation has been removed from all Scribe JSON files to reduce their file size, speed up the load times and mitigate crashes.

    ♻️ Code Refactoring

    • Loading JSONs for language data is now handled by SwiftyJSON, with the code being refactored to implement it.
      • This is a first step in refining the data loading process to better handle large amounts of data.
    • Light and dark mode colors are now defined in Assets.xcassets and accessed via ScribeColor.getter:color or UIColor's new convenience initializer.
    • Variants of the Scribe key icon are placed into Assets.xcassets, making it unnecessary to check for light/dark mode and device type in code.
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Oct 11, 2022)

    ✨ New Features

    • Scribe now includes a baseline Wikidata and Wikipedia based autocomplete feature.
      • Suggestions include the next possible noun as well as the most common words in the keyboard language.
    • Scribe now includes a baseline autosuggest feature that suggests words derived from Wikipedia that most often follow a given word.
    • Preposition annotations can now be clicked to display a case pronoun display from which pronouns can be selected.
      • Users are able to select from the display based on subjects and objects to exactly specify which pronoun they need.

    🗃️ Data Added

    • French: 307 nouns, 39 verbs
    • German: 282 nouns, 73 verbs
    • Italian: 4,236 nouns
    • Portuguese: 64 nouns
    • Russian: 7 nouns, 1 preposition
    • Spanish: 1,387 nouns, 9 verbs
    • Swedish: 702 nouns, 120 verbs

    🎨 Design Changes

    • Noun and preposition annotation has been updated to not show the word being annotated.
      • This saves space above the keyboard for autocomplete and autosuggest.
    • The annotation colors have been changed to match the new backgrounds.
    • The delete key features a pressed state style similar to the native keyboard.
    • New layouts for pronoun declination have been added to the keyboards.
    • The message indicating that the word isn't in Wikidata now comes with an information icon (action pending).
    • The App Store images have been updated to reflect the new Wikipedia based autosuggest.
    • The App Store videos have been updated to reflect the changes for the new version.
    • iPhone 6.7" images and videos have been added to the App Store.
    • Other minor changes to images for the App Store.

    🌐 Localization

    • Russian keyboard command names and messages were corrected.

    ⚖️ Legal

    • The privacy policy was updated to add information about the Wikipedia text data terms of use.

    ♻️ Code Refactoring

    • Boolean states for commands were converted into a single enum to make keyboard states much simpler to work with.
    • Code was refactored to work with the new enum style of command state management.
    • Enums are now used to control switching between conjugations.
    • Enums are now used to control switching between different conjugation displays.
    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Aug 14, 2022)

    ✨ New Features

    • Commands now include a greyed out prompt that tells the user to enter a specific word type.
    • The return key now changes its icon during commands to make it more apparent as the execution input.
    • The link to GitHub in the app now goes to the iOS repo instead of the organization.

    🗃️ Data Added

    • French: 141 nouns, 5 verbs
    • German: 203 nouns, 88 verbs
    • Italian: 3316 nouns
    • Portuguese: 3 nouns
    • Spanish: 2282 nouns, 66 verbs
    • Swedish: 14 nouns, 114 verbs

    🎨 Design Changes

    • The content for the App Store images has been centered more exactly.
    • The App Store images for translation have been changed to reflect the new enter key design.
    • Key pressed colors have been made darker to be more distinct from base key colors.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.8(Jun 29, 2022)

    🗃️ Data Added

    • French: 160 nouns, 5 verbs
    • German: 502 nouns, 57 verbs
    • Italian: 35 nouns
    • Portuguese: 51 nouns, 14 verbs
    • Russian: 2 nouns
    • Spanish: 793 nouns, 174 verbs
    • Swedish: 8 nouns

    🐞 Bug Fixes

    • Verb conjugation tables now always return to their base conjugation each time the command is used.

    🎨 Design Changes

    Scribe's second design sprint with Spencer Arney focussed on the App Store media:

    • The App Store images have been updated to be more professional.
    • Some App Store images have been replaced with ones that better show app features.
    • Section headers for App Store videos have been changed to match the new image style.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.7(May 24, 2022)

    🗃️ Data Added

    • French: 34 nouns
    • German: 56 nouns, 112 verbs
    • Italian: 24 nouns, 1 verb
    • Portuguese: 169 nouns, 290 verbs
    • Russian: 2 nouns
    • Spanish: 3216 nouns, 267 verbs
    • Swedish: 287 nouns, 13 verbs

    🎨 Design Changes

    • Minor update to the command bar border color.

    ⚖️ Legal

    • The privacy policy was updated to add the MIT licensed original source code.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.6(May 4, 2022)

    🗃️ Data Added

    • French: 220 nouns, 248 verbs
    • German: 45 nouns, 73 verbs
    • Italian: 4 nouns
    • Portuguese: 218 nouns, 1 verb
    • Spanish: 6650 nouns, 70 verbs
    • Swedish: 512 nouns, 9 verbs
    Source code(tar.gz)
    Source code(zip)
  • 1.3.5(Apr 11, 2022)

    🗃️ Data Added

    • French: 31 nouns, 2 verbs
    • German: 53 nouns, 9 verbs
    • Italian: 1 noun, 1 verb
    • Portuguese: 9 nouns, 1 verb
    • Russian: 3 nouns
    • Spanish: 876 nouns, 1203 verbs
    • Swedish: 8 nouns, 1 verb

    🎨 Design Changes

    • Captions and text spacing for App Store images have been updated.
    • "Not in directory" messages have been changed to "Not in Wikidata" to further signal affiliation with the service.

    ♻️ Code Refactoring

    • The data files have been moved to a new directory within the organization on GitHub.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.4(Mar 24, 2022)

    🎨 Design Changes

    • Captions for App Store images have been updated.
    • The App Store description has been updated with a reference to Wikidata and grammar improvements.
    • The open-source images in the App Store has been updated to reference open data and Wikidata.

    ⚖️ Legal

    • The privacy policy was updated to reflect the addition of the Wikidata logo into the app.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.3(Mar 14, 2022)

    🗃️ Data Added

    • French: 2 nouns
    • Portuguese: 2 nouns
    • Spanish: 3 nouns, 59 verbs

    🐞 Bug Fixes

    • Key long press for alternate characters has had cancellation removed to avoid buggy performance.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.2(Mar 13, 2022)

    🗃️ Data Added

    • French: 3 nouns
    • German: 28 nouns
    • Portuguese: 2 nouns
    • Spanish: 13 nouns, 66 verbs
    • Swedish: 1 noun

    🎨 Design Changes

    • Key alternate views appear more quickly.

    🐞 Bug Fixes

    • Key long press cancellation was switched from changed to cancel to avoid unnecessary cancels.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Mar 12, 2022)

    🗃️ Data Added

    • French: 32 nouns, 5 verbs
    • German: 172 nouns, 4 verbs
    • Italian: 10 nouns, 1 verb
    • Portuguese: 43 nouns, 1 verb
    • Russian: 7 nouns
    • Spanish: 188 nouns, 1,825 verbs
    • Swedish: 6 nouns

    🐞 Bug Fixes

    • The alternate characters of apostrophes and quotation marks have been fixed.
    • Key alternate views now stay if the key is canceled as they were disappearing too easily.
    • The width of alternate character callouts for certain keys has been fixed for iPhones.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Mar 2, 2022)

    ⌨️ New Keyboards

    • Adds an Italian keyboard.

    🗃️ Data Added

    • Italian: 773 nouns, 70 verbs

    🎨 Design Changes

    • The messages that tell the user a noun is already plural have been translated to the keyboard's language.
    • The keyboard height has been increased for landscape mode on iPads.
    • Characters on keys have been made larger so they reflect the system keyboards better.
    • All letter, number and special keys now pop up after being pressed.
    • Hold to select characters have been redesigned to reflect the addition of keys popping up.
    • All App Store media has been redone to reflect these changes.
    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Feb 13, 2022)

    ✨ New Features

    • The keyboard switches back to letter keys after all appropriate symbols followed by space.
    • Scribe commands now accept inputs that are followed by a space in case the user accidentally added one.
    • Users can now translate pronouns as these were not originally included.

    🗃️ Data Added

    • French: 30 nouns, 1 verb
    • German: 215 nouns
    • Portuguese: 66 nouns
    • Russian: 2 nouns
    • Spanish: 925 nouns, 19 verbs
    • Swedish: 10 nouns, 5 verbs

    🎨 Design Changes

    • The app screen texts are given slightly more room to expand within their fields.
    • The App Store description has been simplified with bullet points.
    • The conjugate view right and left buttons have been made wider.

    🐞 Bug Fixes

    • The Scribe key now switches its icon color with the rest of the keyboard when the user changes color modes.
    • Annotations are no longer triggered if a user presses space during a command.

    ♻️ Code Refactoring

    • Commands buttons are now called keys and the preview bar has been renamed the command bar.
    • Force casts are used as little as possible.
    • All lines have been reduced to a reasonable length (120 characters) where able.
    • All functions have been reduced to a reasonable length (40 lines) where able.
    • All functions have been reduced to a reasonable cyclomatic complexity (10 or less) where able.
    • All files have been reduced to a reasonable length (400 lines) where able.
    • All type bodies have been reduced to a reasonable length (200 lines) where able.
    • Scribe has been modularized to be more easily worked with.
    • The app screen's text was moved to a new directory where localizations will be stored.
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Feb 2, 2022)

    Scribe's first design sprint with the help of Berlin's Spencer Arney!

    The entire layout of Scribe has been reworked to make the experience more aesthetically appealing while adding functionality through efficient design. We hope you like the result!

    ✨ New Features

    • Users can now get to Settings by clicking the installation steps in the app screen.
    • All keyboards now switch to an English keyboard for translation, with this being in preparation for when more languages can be translated from.

    🎨 Design Changes

    • The logo and icon for Scribe have been reworked to give the app a distinct style.
    • The app screen has been completely redone to be more appealing.
    • Keyboard layouts, colors and characters have been changed to match system keyboards.
    • Translation prompts were changed to be two digit abbreviations of source and target language.
    • Colors for noun annotation were updated to improve readability.
    • Noun annotation is now done with a square symbol to represent the gender.
    • Preposition annotation is now done with a rectangular symbol to represent the case.
    • Preposition case abbreviations have been changed to match the language of they keyboard.
    • All App Store media has been redone to reflect these changes.

    🐞 Bug Fixes

    • The keyboard colors should not switch randomly between light and dark mode now.
    • Removed an additional character from the Spanish iPad keyboard's special keys.

    ⚖️ Legal

    • The privacy policy was updated to reflect the addition of the GitHub, Inc icon into the app.
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jan 20, 2022)

    🗃️ Data Added

    Data updates are now all done through a single Python file - update_data.py.

    • French: 11 nouns
    • German: 152 nouns, 1 verb, 1 preposition
    • Portuguese: 19 nouns
    • Spanish: 13 nouns, 6 verbs
    • Swedish: 68 nouns

    🎨 Design Changes

    • The text size for the command bar in landscape mode for phones was made smaller.
    • The height of the keyboard in landscape mode for phones was made slightly smaller.
    • App store images were updated to combine the dark mode and devices screens.

    🐞 Bug Fixes

    • The keyboard colors now update if the user switches between light and dark mode.
    • Auto-capitalization and switching to the letter keys weren't always triggered after a period.
    • Shifting orientation from portrait to landscape is now seamless, but landscape to portrait is still a WIP.

    ♻️ Code Refactoring

    • Queries were refactored to reduce their total characters so they can be sent through query APIs.
    • Command variables were edited to interact with new formatting from query refactoring.
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Jan 8, 2022)

    ⌨️ New Keyboards

    • Adds Russian, French, Portuguese and Swedish keyboards.

    ✨ New Features

    • Hold-to-select functionality for symbol keys.
    • The keyboard keys are capitalized if the user deletes at the start of the command bar.
    • Removes noun-gender annotation for given names to avoid misgendering people.
    • Users are now able to pass upper-case arguments to translate and conjugate.

    🗃️ Data Added

    • French (New): 15,710 nouns, 1,241 verbs (mostly infinitives), 67,609 translations
    • German: 401 nouns, 78 verbs, corrected many prepositions
    • Portuguese (New): 4,530 nouns, 188 verbs, 67,609 translations
    • Russian (New): 194,389 nouns, 11 verbs, 12 prepositions, 67,609 translations
    • Spanish: 180 nouns, 22 verbs
    • Swedish (New): 41,102 nouns, 4,133 verbs, 67,609 translations

    🎨 Design Changes

    • Improves the display of the caps lock key by making its background the key pressed color.
    • Updates the App Store images and videos.
    • Scribe command titles are now in the keyboard language for a more immersive experience.
    • Translate for Russian switches to an English keyboard.

    🐞 Bug Fixes

    • German keyboards had the dollar sign shown on the number keys instead of the euro sign.
    • iPads had a semicolon key that also had apostrophes.
    • Hold-to-select keys wouldn't return to their original color.
    • The keyboard wouldn't always be letter keys when switched to.
    • The double space period shortcut wasn't possible after certain special characters and numbers.
    • More than one singular gender wasn't being assigned to German nouns in the formatting process.

    ♻️ Code Refactoring

    • Combines all the space bar logic into one and renames the key based on the keyboard.
    • Combines all conjugation logic into one function that is accessed by each button press case.
    • Combines all noun annotation logic into one function that accessed by child functions.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Dec 4, 2021)

    ✨ New Features

    • Adds comma-space to letter keys functionality.
    • Adds question mark and exclamation point followed by space to capital letter keys functionality.

    🎨 Design Changes

    • Fixes the display of the system header in the app when the user is in dark mode, as the white text was hard to read.
    • Fixes the display of the scroll bar in the app when the user is in dark mode, as the white bar wasn't visually appealing.
    • The keyboard has been made taller for iPhones to make the buttons larger vertically.
    • More space has been added around the buttons to make them better resemble system keyboard spacing.

    🐞 Bug Fixes

    • Fixes an issue where the select keyboard button wouldn't be able to be long held after an initial button is pressed.
    • Fixes an issue where canceling a command would cause the command bar to read "Not in directory" on a subsequent command.
    • Fixes an issue where the double space period shortcut is triggered without intent.

    ♻️ Code Refactoring

    • The hold-to-select character functions are now combined into one.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Nov 30, 2021)

    MVP release of Scribe - Language Keyboards

    🚀 Deployment

    • Releasing for iPhone and iPad.

    ⌨️ Keyboards

    • Keyboards for German and Spanish.

    ✨ Features

    • Keyboard extensions that can be used in any app.
    • Annotation of words in the command bar including the genders of nouns and cases that follow prepositions.
    • Basic English to keyboard language translations.
    • Querying the plurals of nouns.
    • Conjugations of verbs.

    🗃️ Data

    • Wikidata WDQS queries saved so that data can be updated before releases.
    • Data formatting done via Python scripts.
    • Data saved in JSON files in app to allow for quick access that doesn't require an internet connection.
    • Nouns, verbs and prepositions (where applicable).
    • Translations of English words via 🤗 Transformers.
    • Adds baseline noun, verb, translation and preposition data for the new keyboards.
      • German: 27K+ nouns, 3K+ verbs, 65K+ translations, 190 prepositions
      • Spanish: 8K+ nouns, 65 verbs, 65K+ translations

    🎨 Design

    • The Scribe key and command bar where Scribe commands are triggered.
    • 3x2 conjugation tables from which conjugations can be selected in the Conjugate command.
    • The return key is colored Scribe blue when commands are being triggered to let the user know that that is what they need to press to finish the command.
    • Dark mode compatibility.
    Source code(tar.gz)
    Source code(zip)
KeyboardKit is a Swift library that helps you create custom keyboard extensions for iOS and ipadOS.

KeyboardKit is a Swift library that helps you create custom keyboard extensions for iOS and ipadOS.

KeyboardKit 900 Jan 9, 2023
Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. Neither need to write any code nor any setup required and much more.

IQKeyboardManager While developing iOS apps, we often run into issues where the iPhone keyboard slides up and covers the UITextField/UITextView. IQKey

Mohd Iftekhar Qurashi 15.9k Jan 8, 2023
[iOS] Add customized buttons and toolbars to your UITextInputs.

RFKeyboardToolbar This is a flexible UIView and UIButton subclass to add customized buttons and toolbars to your UITextFields/UITextViews. This projec

Rudd Fawcett 421 Oct 30, 2022
iOS utility class allows you to access keyboard view and track keyboard animation.

YYKeyboardManager iOS utility class allows you to access keyboard view and track keyboard animation. (It was used by YYText) Compatibility iPhone / iP

null 480 Nov 17, 2022
A simple keyboard to use with numbers and, optionally, a decimal point.

MMNumberKeyboard A simple keyboard to use with numbers and, optionally, a decimal point. Installation From CocoaPods CocoaPods is a dependency manager

Matías Martínez 957 Nov 17, 2022
⌨️A Combine-based way to observe and adjust for Keyboard notifications in SwiftUI

⌨️ Keyboard Observing A Combine-based solution for observing and avoiding the keyboard in SwiftUI. Table of Contents About Requirements Installation C

Nick Fox 440 Jan 5, 2023
Prevent keyboard from covering UITextField/UITextView, includes Swift and Objective-C APIs

Prevent keyboard from covering UITextField/UITextView with only one line of code, includes Swift and Objective-C APIs.

LiuChang 8 Oct 24, 2022
Codeless manager to hide keyboard by tapping on views for iOS written in Swift

KeyboardHideManager KeyboardHideManager - codeless manager to hide keyboard by tapping on views for iOS written in Swift. Structure Features Requireme

Bondar Yaroslav 55 Oct 19, 2022
🎀 A simple cross-platform toolbar/custom input accessory view library for iOS & macOS.

Ribbon ?? A simple cross-platform toolbar/custom input accessory view library for iOS & macOS. Written in Swift. Looking for... A type-safe, XPC-avail

Chris Zielinski 294 Nov 28, 2022
Swift UIKit keyboard manager for iOS apps.

Typist Typist is a small, drop-in Swift UIKit keyboard manager for iOS apps. It helps you manage keyboard's screen presence and behavior without notif

Toto Tvalavadze 1.1k Dec 10, 2022
Best way to dismiss Keyboard in a View Controller iOS (Swift)

Best way to dismiss Keyboard in a View Controller iOS (Swift) First way: Implement UITextFieldDelegate’s textFieldShouldReturn method and dismiss curr

null 0 Dec 18, 2021
Objective-C library for tracking keyboard in iOS apps.

NgKeyboardTracker Objective-c library for tracking keyboard in iOS apps. Adding to your project If you are using CocoaPods, add to your Podfile: pod '

Meiwin Fu 808 Nov 17, 2022
A drop-in universal solution for moving text fields out of the way of the keyboard in iOS

TPKeyboardAvoiding A drop-in universal solution for moving text fields out of the way of the keyboard in iOS. Introduction There are a hundred and one

Michael Tyson 5.8k Dec 26, 2022
Emoji Keyboard SDK (iOS)

Makemoji SDK Makemoji is a free emoji keyboard for mobile apps. By installing our keyboard SDK every user of your app will instantly have access to ne

Makemoji 100 Nov 3, 2022
Awesome autolayout Toolbar. Toolbar is a library for iOS. You can easily create chat InputBar.

Toolbar This toolbar is made with Autolayout. It works more interactively than UIToolbar. Please Donate Slow Animations Debug mode If you want a Toolb

1amageek 459 Sep 16, 2022
SwiftyKeyboard: a full customized numeric keyboard for iOS

SwiftyKeyboard Overview SwiftyKeyboard is an iOS customized enhanced keyboard. T

SwiftyKit 2 Jun 30, 2022
Slidden is an open source, customizable, iOS 8 keyboard, written in Swift

Slidden is an open source, customizable, iOS 8 keyboard, written in Swift. iOS 8 brought us the ability to create fully customizable keyboards, but do

Daniel Brim 595 Jan 5, 2023
Emoji Keyboard for iOS

English | 中文 An easy to use Emoji keyboard for iOS. Has been rewritten with swift, the old Objective-C version on branch oc. Features Written in Swift

isaced 450 Dec 24, 2022
A Chinese keyboard for iOS that helps Chinese language learners remember tones.

ToneBoard ToneBoard is a Chinese keyboard for iOS that requires you to enter the correct tones while typing simplified Chinese with Pinyin. It is avai

Kevin Bell 7 Sep 27, 2022
LeitnerBox is an iOS application which help language learners to memorize words faster.

Leitner-Box Leitner-Box is an iOS application to memorize word forever. Features Memorize words and phrases. Ability to export the database and import

hamed 5 Dec 22, 2022