diff --git a/Dockerfile b/Dockerfile index ad3e06c93..8f7558c68 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # Please keep the content of this file in sync with Podmanfile. ARG BUILDER_CONFIGURATION="release" -FROM php:8.4-apache@sha256:51da594c844a97f31b1cd6b1ac6660982f40788f4fe13e75f7fd39e2f9b58651 AS composer-builder +FROM php:8.4-apache@sha256:56e7dab56ae21ec10aae951f93cbe7069c1ca68a714dd22ca78724268c78f5de AS composer-builder ENV BUILDER_PLATFORM=docker-composer # Install Zip to use composer @@ -29,7 +29,7 @@ RUN if [ "$BUILDER_CONFIGURATION" = "debug" ]; then \ fi # Site -FROM php:8.4-apache@sha256:51da594c844a97f31b1cd6b1ac6660982f40788f4fe13e75f7fd39e2f9b58651 +FROM php:8.4-apache@sha256:56e7dab56ae21ec10aae951f93cbe7069c1ca68a714dd22ca78724268c78f5de ENV BUILDER_PLATFORM=docker COPY resources/keyman-site.conf /etc/apache2/conf-available/ diff --git a/developer/19.0/context/keyboard-editor.md b/developer/19.0/context/keyboard-editor.md index 433cce5c4..033ec86c4 100644 --- a/developer/19.0/context/keyboard-editor.md +++ b/developer/19.0/context/keyboard-editor.md @@ -99,23 +99,25 @@ Features ## Layout tab +### Design view + +> Path: KMN → Layout tab → Design view (default) + Keyboard Editor - Layout tab, Design view The Layout tab gives you a simple interface to quickly create a keyboard -using a visual representation of a desktop/laptop computer keyboard. You +using a visual representation of a **desktop/laptop keyboard**. You can drag and drop characters from the character map to create keyboard -layouts. You cannot access most of Keyman's more powerful features from -the Layout Design view, but it will be useful to get you started on your -design. +layouts. Each key can have zero or more characters assigned to it. Each key can be assigned a different set of characters for each shift state. You can -change the shift state by clicking on the Shift, Ctrl, and Alt keys. +change the shift state by clicking on the Shift, Ctrl, and Alt keys. There are two ways to assign characters to the keys: - Click on a key, and then type the character's code into the Unicode - Character Value(s) field, or the type/paste the character itself + Character Value(s) field, or type/paste the character itself into the Output character(s) field. - Select the character from the Character Map and drag and drop it onto the appropriate key. This will set the key to output that @@ -130,7 +132,7 @@ There are two ways to assign characters to the keys: Distinguish between left and right Ctrl/Alt : A Keyman keyboard can treat left and right Ctrl and Alt identically, or it can distinguish between them. The Design view allows one or - the other mode (in Code view, you can use both interchangeably). + the other mode (in [Code view](#toc-code-view), you can use both interchangeably). Display 102nd Key (as on European keyboards) : European keyboards have one extra key that is not on US keyboards. @@ -143,8 +145,16 @@ Display 102nd Key (as on European keyboards) the backslash key will move down one row, but not otherwise change in behaviour. -You can press and release Ctrl to select -another key on the keyboard using your keyboard. +> [!TIP] +> You can press and release Ctrl to select another key on the keyboard using your keyboard. + +You cannot access most of Keyman's more powerful features from +the Layout Design view, but it will be useful to get you started on your +design. + +### Code view + +> Path: KMN → Layout tab → Code view Keyboard Editor - Layout tab, Code view @@ -156,6 +166,9 @@ the Code view. See the [Editor topic](editor) for more information on how to use the editor shown within this view. +> [!NOTE] +> Remember that any newly assigned keys from the layout tab won't be automatically added to the On-Screen keyboard except when you press the 'Fill from layout' button (See [On-screen](#toc-on-screen-tab) below). + ## On-Screen tab Keyboard Editor - On-Screen tab @@ -183,6 +196,9 @@ Fill from layout pre-populate the On-Screen Keyboard and reduces the complexity of designing it from scratch. +> [!CAUTION] +> The changes from the [Layout tab](#toc-layout-tab) will only apply to the On-Screen Keyboard once you use the 'Fill from layout'. + Import : Imports an On-Screen Keyboard from an XML file. diff --git a/developer/19.0/images/ui/frmKeymanWizard_Layout_Code.png b/developer/19.0/images/ui/frmKeymanWizard_Layout_Code.png index 2fbe3991e..6d9055239 100644 Binary files a/developer/19.0/images/ui/frmKeymanWizard_Layout_Code.png and b/developer/19.0/images/ui/frmKeymanWizard_Layout_Code.png differ diff --git a/developer/19.0/images/ui/frmKeymanWizard_Layout_Design.png b/developer/19.0/images/ui/frmKeymanWizard_Layout_Design.png index 5d3b57055..909a7d368 100644 Binary files a/developer/19.0/images/ui/frmKeymanWizard_Layout_Design.png and b/developer/19.0/images/ui/frmKeymanWizard_Layout_Design.png differ diff --git a/developer/19.0/reference/messages/km020bf.md b/developer/19.0/reference/messages/km020bf.md new file mode 100644 index 000000000..6e9023f93 --- /dev/null +++ b/developer/19.0/reference/messages/km020bf.md @@ -0,0 +1,19 @@ +--- +title: KM020BF: WARN_CallUsedOnUnsupportedPlatform +--- + +| | | +|------------|---------- | +| Message | The \`call\(\)\` statement is not supported on macOS or Linux platforms\. | +| Module | [kmc-kmn.KmnCompilerMessages](kmc-kmn.kmncompilermessages) | +| Identifier | `WARN_CallUsedOnUnsupportedPlatform` | + + +The `call()` statement is supported on Windows and web-based platforms, +including mobile and tablet. The target platforms can be specified in +the `&targets` system store; avoid the use of generic platforms such as +`'any'` or `'desktop'`. Note that the implementation of your call +target will differ across platforms; see +[`call()` statement](https://help.keyman.com/developer/language/reference/call) +in the documentation for more details. + diff --git a/developer/19.0/reference/messages/km05009.md b/developer/19.0/reference/messages/km05009.md index 1874676a9..0d0736b98 100644 --- a/developer/19.0/reference/messages/km05009.md +++ b/developer/19.0/reference/messages/km05009.md @@ -1,11 +1,11 @@ --- -title: KM05009: HINT_FilenameHasDifferingCase +title: KM05009: WARN_FilenameHasDifferingCase --- | | | |------------|---------- | | Message | File on disk '<param>' does not match case of '<param>' in source file; this is an error on platforms with case\-sensitive filesystems\. | | Module | [kmc.InfrastructureMessages](kmc.infrastructuremessages) | -| Identifier | `HINT_FilenameHasDifferingCase` | +| Identifier | `WARN_FilenameHasDifferingCase` | diff --git a/developer/19.0/reference/messages/kmc-kmn.kmncompilermessages.md b/developer/19.0/reference/messages/kmc-kmn.kmncompilermessages.md index 125071688..55d552e21 100644 --- a/developer/19.0/reference/messages/kmc-kmn.kmncompilermessages.md +++ b/developer/19.0/reference/messages/kmc-kmn.kmncompilermessages.md @@ -166,6 +166,7 @@ title: Compiler Messages Reference for @keymanapp/kmc-kmn [KM020BC](km020bc) | `WARN_DeprecatedValueFormat` | The decimal \(d\#\#\#\), octal \(\#\#\#\), and hexadecimal \(x\#\#\#\) value formats were deprecated in Keyman 19 and are scheduled to be removed in Keyman 20\. [KM020BD](km020bd) | `WARN_DeprecatedCompileTarget` | Compile target '<param>' was deprecated in Keyman 19 and will cause the line to always be ignored by kmc in Keyman 20\. [KM020BE](km020be) | `ERROR_StoreContainsUnsupportedStatement` | A store can contain only characters, deadkeys, virtual keys, and 'outs\(\)' statements\. +[KM020BF](km020bf) | `WARN_CallUsedOnUnsupportedPlatform` | The \`call\(\)\` statement is not supported on macOS or Linux platforms\. [KM020C0](km020c0) | `FATAL_BufferOverflow` | The compiler memory buffer overflowed [KM02900](km02900) | `FATAL_UnexpectedException` | This is an internal error; the message will vary [KM02901](km02901) | `FATAL_MissingWasmModule` | This is an internal error; the message will vary diff --git a/developer/19.0/reference/messages/kmc.infrastructuremessages.md b/developer/19.0/reference/messages/kmc.infrastructuremessages.md index f2afc1268..d4122177a 100644 --- a/developer/19.0/reference/messages/kmc.infrastructuremessages.md +++ b/developer/19.0/reference/messages/kmc.infrastructuremessages.md @@ -11,7 +11,7 @@ title: Compiler Messages Reference for @keymanapp/kmc [KM05005](km05005) | `ERROR_OutFileNotValidForProjects` | \-\-out\-file should not be specified for project builds [KM05006](km05006) | `INFO_FileBuiltSuccessfully` | <param> built successfully\. [KM05007](km05007) | `INFO_FileNotBuiltSuccessfully` | <param> failed to build\. -[KM05009](km05009) | `HINT_FilenameHasDifferingCase` | File on disk '<param>' does not match case of '<param>' in source file; this is an error on platforms with case\-sensitive filesystems\. +[KM05009](km05009) | `WARN_FilenameHasDifferingCase` | File on disk '<param>' does not match case of '<param>' in source file; this is an error on platforms with case\-sensitive filesystems\. [KM0500A](km0500a) | `ERROR_UnknownFileFormat` | Unknown file format <param>; only Markdown \(\.md\), JSON \(\.json\), and Text \(\.txt\) are supported\. [KM0500B](km0500b) | `INFO_ProjectBuiltSuccessfully` | Project <param> built successfully\. [KM0500C](km0500c) | `INFO_ProjectNotBuiltSuccessfully` | Project <param> failed to build\. diff --git a/developer/19.0/whatsnew.md b/developer/19.0/whatsnew.md index a0541ad51..549307f27 100644 --- a/developer/19.0/whatsnew.md +++ b/developer/19.0/whatsnew.md @@ -6,7 +6,7 @@ Keyman Developer 19 has the following significant changes: - Updated to Unicode 17.0 (#14728) - Updated langtags.json, ISO639-3, language-subtag-registry (#16371) -- Validate a keyboard or lexical model project frmo within Keyman Developer (#16076) +- Validate a keyboard or lexical model project from within Keyman Developer (#16076) - Support for line numbers in LDML keyboard compiler messages (#13375) - Convert from .keylayout (macOS keyboards, Ukelele) into .kmn (#12191) - Compiler improvements - prevent illegal constructs (#16723, #16726, #36710, #16717) diff --git a/developer/engine/android/19.0/KMManager/getPredictionsSuspended.md b/developer/engine/android/19.0/KMManager/getPredictionsSuspended.md index 20bb66d4f..87d16ab1b 100644 --- a/developer/engine/android/19.0/KMManager/getPredictionsSuspended.md +++ b/developer/engine/android/19.0/KMManager/getPredictionsSuspended.md @@ -1,7 +1,6 @@ --- -title: KMManager.getPredictionsSuspended() +title: KMManager.getPredictionsSuspended() (Deprecated) --- - ## Summary The **getPredictionsSuspended()** method returns a flag that determines whether predictions are temporarily disabled because the currently selected text field is a hidden password text field or a numeric text field. @@ -24,6 +23,7 @@ Use this method to check if predictions are temporarily disabled because of the ## History Added syntax in Keyman Engine for Android 18.0. +Deprecated syntax in Keyman Engine for Android 19.0 in favor of [`setInputType`](setInputType), as it better maintains predictive-text state. ## See also * [setPredictionsSuspended](setPredictionsSuspended) diff --git a/developer/engine/android/19.0/KMManager/index.md b/developer/engine/android/19.0/KMManager/index.md index 0f9d9c0fb..d21bf40a8 100644 --- a/developer/engine/android/19.0/KMManager/index.md +++ b/developer/engine/android/19.0/KMManager/index.md @@ -161,8 +161,8 @@ The KMManager is the core class which provides most of the methods and constants [`getOrientation()`](getOrientation) : returns the device's current orientation (Portrait vs Landscape) -[`getPredictionsSuspended()`](getPredictionsSuspended) -: returns whether predictions are temporarily disabled because the currently selected text field is a hidden password text field or a numeric text field. +~~`getPredictionsSuspended()`~~ `(Deprecated)` +: returns whether predictions are temporarily disabled because the currently selected text field is a hidden password text field or a numeric text field. [`getSpacebarText()`](getSpacebarText) : returns the current text display pattern for the spacebar @@ -254,6 +254,9 @@ The KMManager is the core class which provides most of the methods and constants [`setHTMLBanner()`](setHTMLBanner) : sets the contents of an HTML banner for Keyman Engine to display when suggestions aren't available +[`setInputType()`](setInputType) +: informs the engine about what type of input text is expected, allowing it to configure predictive-text accordingly + [`setKeyboard()`](setKeyboard) : sets the keyboard to be used @@ -269,8 +272,8 @@ The KMManager is the core class which provides most of the methods and constants [`setMaySendCrashReport()`](setMaySendCrashReport) : sets whether Keyman Engine can send crash reports over the network to Sentry -[`setPredictionsSuspended()`](setPredictionsSuspended) -: sets whether predictions are temporarily disabled because the currently selected text field is a hidden password text field or a numeric text field. +~~`setPredictionsSuspended()`~~ `(Deprecated)` +: sets whether predictions are temporarily disabled because the currently selected text field is a hidden password text field or a numeric text field. [`setShouldAllowSetKeyboard()`](setShouldAllowSetKeyboard) : sets whether Keyman Engine allows setting a keyboard other than the default keyboard diff --git a/developer/engine/android/19.0/KMManager/setInputType.md b/developer/engine/android/19.0/KMManager/setInputType.md new file mode 100644 index 000000000..b730f15ba --- /dev/null +++ b/developer/engine/android/19.0/KMManager/setInputType.md @@ -0,0 +1,38 @@ +--- +title: KMManager.setInputType() +--- + +## Summary +The **setInputType()** method allows the engine to configure which predictive-text features +will be presented to the user based upon the type of input expected for an input field. + +## Syntax +```java +KMManager.setInputType(KeyboardType keyboardType, int inputType) +``` + +### Parameters + +`keyboardType` +: The keyboard type. `KEYBOARD_TYPE_INAPP` or + `KEYBOARD_TYPE_SYSTEM`. + +[`inputType`](https://developer.android.com/reference/android/text/InputType) +: An integer defining the basic context type of text being edited. + + +## Description +Use this method to allow the engine to determine what types of suggestions may be offered to the +user. It will disable predictions for contexts that should not provide them, such as password fields. +It will prevent autocorrect for contexts where text prediction will not likely give a perfect result, +such as email fields. + +### Example: Using `setInputType()` +The following script illustrates the use of `setInputType()`: + +```java + KMManager.setInputType(textView.getInputType()); +``` + +## History +Added syntax in Keyman Engine for Android 19.0. \ No newline at end of file diff --git a/developer/engine/android/19.0/KMManager/setPredictionsSuspended.md b/developer/engine/android/19.0/KMManager/setPredictionsSuspended.md index ebf8fcb37..4908cb12e 100644 --- a/developer/engine/android/19.0/KMManager/setPredictionsSuspended.md +++ b/developer/engine/android/19.0/KMManager/setPredictionsSuspended.md @@ -1,5 +1,5 @@ --- -title: KMManager.setPredictionsSuspended() +title: KMManager.setPredictionsSuspended() (Deprecated) --- ## Summary @@ -9,7 +9,6 @@ The **setPredictionsSuspended()** method sets a flag to temporarily disable pred ```java KMManager.setPredictionsSuspended(int inputType, KeyboardType keyboardType) ``` - ### Parameters [`inputType`](https://developer.android.com/reference/android/text/InputType) @@ -31,6 +30,7 @@ Use this method to temporarily disable predictions because of the currently sele ## History Added syntax in Keyman Engine for Android 18.0. +Deprecated syntax in Keyman Engine for Android 19.0 in favor of [`setInputType`](setInputType). ## See also * [getPredictionsSuspended](getPredictionsSuspended) diff --git a/developer/engine/android/19.0/whatsnew.md b/developer/engine/android/19.0/whatsnew.md index 2c8324549..ca9321c44 100644 --- a/developer/engine/android/19.0/whatsnew.md +++ b/developer/engine/android/19.0/whatsnew.md @@ -2,6 +2,8 @@ title: What's New in Keyman Engine 19.0 for Android --- +* Added API for selecting and controlling what types of suggestions are offered +for different `Editable` input types (#16644) * **BREAKING** Apps that use the functionality of Keyman Engine for Android will have to add `androidx.webkit:webkit:1.14.0` as a dependency (#16146) * **KNOWN ISSUE** `sil_euro_latin` keyboard must be included in an app if `setDefaultKeyboard()` is not called during initialization (#16215) * Added [Intent `com.tavultesoft.kmapro.keyboard_changed`](KMAPro/) which is broadcast when Keyman system keyboard changes and includes font name (#15193) diff --git a/developer/engine/android/20.0/whatsnew.md b/developer/engine/android/20.0/whatsnew.md index 23979172d..9e9256bd8 100644 --- a/developer/engine/android/20.0/whatsnew.md +++ b/developer/engine/android/20.0/whatsnew.md @@ -2,7 +2,12 @@ title: What's New in Keyman Engine 20.0 for Android --- -* Added API for broadcasting when Keyman system keyboard font changes (#15193) +* **BREAKING** Apps that use the functionality of Keyman Engine for Android will have to add `androidx.webkit:webkit:1.14.0` as a dependency (#16146) +* **KNOWN ISSUE** `sil_euro_latin` keyboard must be included in an app if `setDefaultKeyboard()` is not called during initialization (#16215) +* Added [Intent `com.tavultesoft.kmapro.keyboard_changed`](KMAPro/) which is broadcast when Keyman system keyboard changes and includes font name (#15193) +* Added [`KMManager.getKeyboardHeightMax()`](KMManager/getKeyboardHeightMax) API (#13663) +* Added [`KMManager.getKeyboardHeightMin()`](KMManager/getKeyboardHeightMin) API (#13663) +* Clarified font filename vs facename in various APIs (#16211) ## See Also * [Keyman Engine for Android Documentation](index) \ No newline at end of file diff --git a/developer/engine/web/19.0/guide/adding-keyboards.md b/developer/engine/web/19.0/guide/adding-keyboards.md index f294bee24..0787f340f 100644 --- a/developer/engine/web/19.0/guide/adding-keyboards.md +++ b/developer/engine/web/19.0/guide/adding-keyboards.md @@ -4,57 +4,82 @@ title: Adding Keyboards There are multiple ways to add and install keyboards into your KeymanWeb installation. -## Directly linking a local copy +## Requesting from the Keyman cloud (CDN) -The most efficient way to utilize a keyboard is to obtain a local copy of it and place this copy in a static location on your website. Once this is done, it can be directly linked into KeymanWeb as follows. +The easiest way to utilize a keyboard is to request it from the Keyman cloud. -```js -await keyman.addKeyboards({ - id:'us', // The keyboard's unique identification code. - name:'English', // The keyboard's user-readable name. - language:{ - id:'en', // A BCP 47 code uniquely identifying the language. - name:'English (US)' // The language's name. - }, - filename:'./us-1.0.js' // A valid path to the compiled *.js file representing the keyboard. -}); -``` +### Requested from the CDN by keyboard name -Custom fonts may also be utilized via the `language.font` property. For example: +To obtain a specific keyboard by name or by keyboard name and language code as a pair, see the +following: -```js -font:{ - family:'LaoWeb', - source:['../font/saysettha_web.ttf','../font/saysettha_web.woff','../font/saysettha_web.eot'] -} +```typescript +await keyman.addKeyboards('khmer_angkor','sil_euro_latin@sv','sil_euro_latin@no') ``` -## Requested from the CDN by language name +This will install three keyboards - the Khmer Angkor one for Khmer and two copies +of the EuroLatin keyboard - one for Swedish and one for Norwegian. + +### Requested from the CDN by language name -To obtain the default Keyman keyboard for a given language, call the following function. +To obtain the default Keyman keyboard for a given language, call the following function: -```js +```typescript await keyman.addKeyboardsForLanguage('Dzongkha'); ``` -This example would find the default keyboard for the Dzongkha language. This method will fail if the name doesn't perfectly match any language found in the CDN's repository. +This example would find the default keyboard for the Dzongkha language. This method will fail if +the name doesn't perfectly match any language found in the CDN's repository. Alternatively, languages may be looked up via their BCP 47 language code as follows: -```js -await keyman.addKeyboards('@he'); +```typescript +await keyman.addKeyboards('@he') ``` -The `@` prefix indicates the use of the BCP 47 language code, which in this case corresponds with Hebrew. +The `@` prefix indicates the use of the BCP 47 language code, which in this case corresponds with +Hebrew. -## Requested from the CDN by keyboard name + -```js -await keyman.addKeyboards('french', 'sil_euro_latin@sv', 'sil_euro_latin@no'); +## Directly linking a local copy + +The most efficient way to utilize a keyboard is to obtain a local copy of it and place this copy +in a static location on your website. Once this is done, it can be directly linked into KeymanWeb +as follows: + +```typescript +await keyman.addKeyboards({ + id: 'us', // The keyboard's unique identification code. + name: 'English', // The keyboard's user-readable name. + languages: { + id: 'en', // A BCP 47 code uniquely identifying the language. + name: 'English (US)' // The language's name. + }, + filename: './us.js' // A valid path to the compiled *.js file representing the keyboard. +}); ``` -This will install three keyboards - one for French (named, quite simply, "French") and two copies of the EuroLatin keyboard - one for Swedish and one for Norwegian. +Custom fonts may also be utilized via the `languages.font` property. For example: + +```typescript +languages: { + id: 'lo', + name: 'Lao', + font: { + family: 'LaoWeb', + source: ['../font/saysettha_web.ttf','../font/saysettha_web.woff'] + } +} +``` [Previous: What is a Keyboard?](what-is-a-keyboard) | [Next: Additional Examples](examples/) diff --git a/developer/engine/web/19.0/reference/core/addKeyboards.md b/developer/engine/web/19.0/reference/core/addKeyboards.md index e5f48680a..a048e7a0f 100644 --- a/developer/engine/web/19.0/reference/core/addKeyboards.md +++ b/developer/engine/web/19.0/reference/core/addKeyboards.md @@ -4,7 +4,7 @@ title: addKeyboards function ## Summary -Adds keyboards to KeymanWeb. +Adds keyboards to KeymanWeb. Note that this is an asynchronous operation. ## Syntax @@ -53,6 +53,11 @@ The string format is one of the following: The keyboard catalogue is online at [https://keyman.com/developer/keymanweb/keyboards](https://keyman.com/developer/keymanweb/keyboards). + + ### Using an `object` When keyboard spec is an object, then more parameters can be specified, @@ -182,4 +187,4 @@ The `spec.languages.font` object contains the following members: ### Not passing any parameter -Not passing any parameter will obtain all Keyman keyboards from the CDN. \ No newline at end of file +Not passing any parameter will obtain all Keyman keyboards from the CDN. diff --git a/developer/engine/web/19.0/reference/core/addKeyboardsForLanguage.md b/developer/engine/web/19.0/reference/core/addKeyboardsForLanguage.md index e3a1e553c..6812ea3ae 100644 --- a/developer/engine/web/19.0/reference/core/addKeyboardsForLanguage.md +++ b/developer/engine/web/19.0/reference/core/addKeyboardsForLanguage.md @@ -4,7 +4,8 @@ title: addKeyboardsForLanguage function ## Summary -Add default or all keyboards for a given language to KeymanWeb. +Add default or all keyboards for a given language to KeymanWeb. Note that this is an asynchronous +operation. ## Syntax @@ -30,6 +31,7 @@ The promise is an array containing the following: * successfully registered keyboard objects which define some or all of these [properties](../keyboard_properties) +* [ErrorStub](../keyboard_registration_errors) objects for keyboards that failed to register ## Description diff --git a/developer/engine/web/20.0/whatsnew.md b/developer/engine/web/20.0/whatsnew.md index ec1bed654..0fc143f54 100644 --- a/developer/engine/web/20.0/whatsnew.md +++ b/developer/engine/web/20.0/whatsnew.md @@ -2,6 +2,42 @@ title: What's New in KeymanWeb 20.0 --- +* **BREAKING** `file:` protocol is no longer supported, as keyboards are loaded + with `fetch()` API (#12334) +* Bug fix: the `keyboardloaded` event now fires only once per loaded keyboard. + Previously the event fired twice. (#16297) +* Fixed `loaduserinterface` and `unloaduserinterface` events to fire + consistently (#16353) +* Clarified use of asynchronous APIs (such as `addKeyboards()`) (#16064) +* Cleanup of various examples (#16064) +* Addressed several bugs with control of active keyboard (#16524) +* Removed `keyman.FocusLastActiveElement()` (use + `keyman.focusLastActiveElement()`) (#16170) +* Removed `keyman.GetLastActiveElement()` (use `keyman.getLastActiveElement()`) + (#16170) +* Removed `keyman.HideHelp()` (use `keyman.osk.hide()`) (#16170) +* Removed `keyman.ShowHelp()` (use `keyman.osk.show()`, `keyman.osk.setRect()`) + (#16170) +* Removed `keyman.ShowPinnedHelp()` (use `keyman.osk.show()`, + `keyman.osk.setRect()`) (#16170) +* Deprecated `keyman.build` and `keyman.version` (use `keyman.versionInfo`) + (#16351) +* Deprecated `keyman.helpURL` (use Keyman Cloud APIs) (#16351) +* Deprecated `keyman.moveToElement` (use `elem.focus()`) (#16661) +* Deprecated `keyman.interface.FocusLastActiveElement()` (use + `keyman.interface.focusLastActiveTextStore()`) (#16170) +* Deprecated `keyman.interface.GetLastActiveElement()` (use + `keyman.interface.getLastActiveTextStore()`) (#16170) +* Deprecated `keyman.interface.HideHelp()` (use `keyman.osk.hide()`) (#16170) +* Deprecated `keyman.interface.ShowHelp()` (use `keyman.osk.show()`) (#16170) +* Deprecated `keyman.interface.ShowPinnedHelp()` (use `keyman.osk.show()`, + `keyman.osk.setRect()`) (#16170) +* Deprecated `keyman.util.toFloat()` (#16351) +* Deprecated `keyman.util.toNumber()` (#16351) +* Deprecated `keyman.util.toNzString()` (#16351) +* Removed deprecated `onunloaded` handler (#16351) +* About [550 other fixes and changes](https://keyman.com/go/app/whatsnew/web/19.0) + ## See also * [Keyman Engine for Web Documentation](index) diff --git a/developer/engine/windows/20.0/whatsnew.md b/developer/engine/windows/20.0/whatsnew.md new file mode 100644 index 000000000..e5215baa4 --- /dev/null +++ b/developer/engine/windows/20.0/whatsnew.md @@ -0,0 +1,19 @@ +--- +title: What's New in Keyman Engine 19.0 for Windows +--- + +* **kmcomapi:** Added the `MCompileForBaseKeyboard(long KLID)` COM method to the + new `IKeymanKeyboardInstalled2` interface, which extends + `IKeymanKeyboardInstalled`. The method accepts the user's base keyboard ID and + allows `mcompile` to compile all installed keyboard layouts against that + keyboard ID. See #16162 for details. +* **kmcomapi:** Added the `Install3` COM method, which accepts a base keyboard + ID. The base keyboard ID is passed to `mcompile` during installation so that + the keyboard layout can be compiled against the specified base keyboard. + `Install3` has been added to the following interfaces: `IKeymanKeyboardFile3`, + `IKeymanPackageFile3`, `IKeymanKeyboardsInstalled3`, and + `IKeymanPackagesInstalled3`. See #16528 for details. + +## See Also + +* [Keyman Engine for Windows Documentation](index) \ No newline at end of file diff --git a/developer/keyboards/index.md b/developer/keyboards/index.md index 48d597cfa..a9a9f85ec 100644 --- a/developer/keyboards/index.md +++ b/developer/keyboards/index.md @@ -57,6 +57,16 @@ the keyboards that start with that letter. In addition, there are some folders (fv and gff, for example) that correspond to organizations which have contributed a number of keyboards. +## Examples + +Many people have already contributed keyboards. If you find examples +of the process, file structure, and interactions with the keyboard +review team helpful, we encourage you to look at previous submissions: + +* [#4197](https://github.com/keymanapp/keyboards/pull/4197) - an example + of a really clear keyboard submission comment +* [other successful keyboard submissions](https://github.com/keymanapp/keyboards/pulls?q=is%3Apr+state%3Amerged+-label%3Ainfrastructure) + ## Get Involved - [Advanced Keyboard Submission Guide](advanced) diff --git a/keyboard/basuria/1.0/basuria.php b/keyboard/basuria/1.0/basuria.php new file mode 100644 index 000000000..214a14e84 --- /dev/null +++ b/keyboard/basuria/1.0/basuria.php @@ -0,0 +1,541 @@ + + +

+ Basuria keyboard for Southwestern Mandarin Chinese Xi-Nàn Koan-Hóa +

+

Ba-Șụ-Lí-Yá kọe-ủ-țứ șự i chỏng Xi-Nàn Koan-Hóa hò Hán-Ủ le Lò-mả hóa vần-țứ çí-thỏng. Ché kó kọe-ủ-țứ le mộ-đị șự fạ-chản i chỏng khỏ-ỉ miào-șộ txuyền-bố Xi-Nàn Koan-Hóa hò Hán-Ủ le biảo-in vần-țứ, ỉ-gị fạ-chản Ba-Șụ le kọe-gia ủ-yàn.

+

The National Language Script of Basurian is a romanisation system for Southwestern Mandarin and Mandarin Chinese. This National Language Script is aimed to develop an phonetic script which can describe Southwestern Mandarin and all variants of Mandarin Chinese and develop the national language of Basurians.

+ +

Alphabet

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
characternamepronunciation
aa[a]
ââ[əʔ]
âyây[ei]
ăă[ə]
anan[æ̃]
bbe/bă[p] [bʱ]
cxê
ççi[ɕ]
chchy[tʂ]
dđe[dʱ]
didi[ʑ]
đđă[t] [dʱ]
dzdză[dzʱ]
dzidzi[dʑʱ]
ee[e]
êê[e]
ênên[ɛn]
fef/fô[f]
ggi[tɕ]
ghghă[ɡʱ]
ğğă[ɣ]
hha[x]
ii[i]
jgiây/iota
kka[k]
khkha[kʰ]
ķķi[tɕʰ]
le-lă/lă[l]
me-mă/mă[m]
ne-nă/nă[n]
ngngă[ŋ]
nhnhi[ȵ]
oo[o]
ôô[u]
ơơ[ə]
pphe[p]
phphă[pʰ]
qkhiô
re-ră[ɹ]
ses[s]
șșư[ʂʰ]
tthe[t]
ththă[tʰ]
tstsư[tʂʰ]
țță[t͡s]
țxțxă[t͡sʰ]
uu[y]
ưư[ɿ] [ʅ]
vve/vô[v]
wđabliu
xekhs/sư[s]
yoai/i-grek[i]
zze-ta/zư[z]
żżư[ʐ]
+ +

Phonologic Map

+

Consonants

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
scriptIPAexamples
b/p[p]布
ph[pʰ]拍
m[m]媽
b[bʱ]步
f[f]發
v[v]武
đ/t[t]端
đ[dʱ]同
th[tʰ]透
n[n]拿
nh[ȵ]你
l[l]來
k[k]干
kh[kʰ]快
ng[ŋ]我
h[h] [x]好
gi[ʨ]雞
gh[ɡʱ]共
ğ[ɣ]鞋
ķ[ʨʰ]氣
ç[ɕ]喜
dzi[dʑʱ]錢
ț[t͡s]走
tx[t͡sʰ]菜
s[s]三
dz[dzʱ]成
di[ʑʱ]謝
ch[tʂ]中
ts[tʂʰ]重
ș[ʂ]上
ż/z[ʐ] [z]日
y[i] [j]有
u[y]原
o/u[u] [w]玩
v[v]未
/[ʔ]安
+ +

在成都方言和大部分西南官話中,n往往變成l

+

In the Tsằng-Đu accent and most of Southwestern Mandarin, the "n" sound often becomes "l" sound.

+

在成都方言中,ch ts ș往往變成ț tx x

+

In the Tsằng-Đu accent, the "ch" "ts" and "ș" sound are often pronounced as "ț" "tx" "x" sound.

+

在成都方言中,z是ż的一種變體

+

In the Tsằng-Đu accent, the "z" sound is an variant of "ż" sound.

+

在成都方言中,聲母v往往读讀成[u]

+

In the Tsằng-Đu accent, the "v" consonant is often pronounced as [u]

+

在攔江話中,存在"b" "đ" "dz" "dzi" "di" "gh" "ğ"的濁音聲母

+

In the Làn-Giang accent, the voiced consonants "b" "đ" "dz" "dzi" "di" "gh" "ğ" exist.

+

在沒有濁音[b]和[d]的大多數官話口音中,仍然使用b和đ表示[p]和[t]

+

In the most of mandarin accent without voiced consonants [b] and [d], the letter b and đ are still applied to indicate [p] and [t]

+ +

Vowels

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
scriptIPAexamples
a[a]阿
ô[u]古
o[o]哥
i[i]醫
e[e]車
u[y]區
u[y] [u]主書出入
ư[ɿ] [ʅ]四史
ăl[ɚ]二
ă[ə] [ɐ]
â[ɯ]
ơ[ʉ] [ɤ]
ưu[ʮ]
ia[ia]亞
io[io]藥
iê[ie]節
oa[ua]瓜
uo[uo]過
oe[ue]國
io[yo]曲
uyê/iuê[ye]月
ui[yi]橘
ai[ai]愛
ây[ei]梅
ao[au]高
âu[əu]狗
iai[iai]解
iao[iau]了
iây[iei]齊
iâu[iəu]九
oai[uai]怪
uây[uei] [yei]貴
an[æ̃]安
ân[ən]恩
ang[ɑŋ]羊
ong[oŋ]工
ăng[əŋ]成
iên[ien]電
in[in]民
iang[iɑŋ]兩
iong[ioŋ]雄
iêng[iəŋ]青
oan[uæ̃]彎
uân[uən]春
oang[uɑŋ] [yɑŋ]光
uong[uoŋ]翁
oăng[uəŋ]橫
uyên/iuên[yen]原
un[yn]軍
dung[yoŋ]榮
uynh[yəŋ]營
ac[aʔ]
oac[uaʔ]
oc[oʔ]戳
ec[eʔ]
+

在聲母ch ts ș ż的後面,如果是[u]韻母,則使用字母u來表示韻母,在武漢話中,u韻母跟隨在聲母ch ts ș ż的後面時候讀[y]

+

If vowel [u] appears after the "ch" "ts" "ș" "ż" consonant, then using letter "u" to spell the vowel. In Vủ-Hán accent, the vowel "u" is pronounced as [y] after "ch" "ts" "ș" "ż" consonant.

+

在成都方言和大部分西南官話中,韻母ăng和ân合併,成爲[ən]

+

In the Tsằng-Đu accent and most of Southwestern Mandarin, the "ăng" sound and "ân" sound became a same sound [ən].

+

在成都方言和大部分西南官話中,韻母iêng和in合併,成爲[in]

+

In the Tsằng-Đu accent and most of Southwestern Mandarin, the "iêng" sound and "in" sound became a same sound [in].

+

在成都方言和大部分西南官話中,韻母oăng和uân合併,成爲[uən]

+

In the Tsằng-Đu accent and most of Southwestern Mandarin, the "oăng" sound and "uân" sound became a same sound [uən].

+

在成都方言和大部分西南官話中,韻母uynh和un合併,成爲[yn]

+

In the Tsằng-Đu accent and most of Southwestern Mandarin, the "uynh" sound and "un" sound became a same sound [yn].

+

在成都方言中,韻母ung和un合併,成爲[yn]

+

In the Tsằng-Đu accent, the "ung" sound and "un" sound became a same sound [yn].

+

韻母ă â ơ ưu存在在口語之中

+

Vowels "ă" "â" "ơ" and "ưu" exist in practical using.

+

柳州話存在"ac"[aʔ] "oac"[uaʔ] "oc"[oʔ] "ec"[eʔ]的塞音聲母

+

The vowels end with glottal stop sound, such as "ac"[aʔ] "oac"[uaʔ] "oc"[oʔ] "ec"[eʔ], exist in Liẩu-Châu dialect.

+

在西南官話中只存在ăl[ɚ]儿化音,在北方官話和中原官話中存在al [ä˞]、 iăl [jɚ]、 iêl [jɛ˞]、 ôl [u˞]、 ul [ɥɚ]、 ưl [ɻɚ] [ɨ̯ɚ]、 aol [ɑu̯˞]、 âul [ou̯˞]、 aăl [ɐ˞]、 angl [ɑ̃˞]、 ănl [ɚ̃]、 uyal[ ɥɐ˞]以及ongl[ʊ̃˞]等不同类型的儿化音

+

In the southwestern mandarin there is only one ăl[ɚ] rhotacization. In northern mandarin and yellow-river mandarinal, there is more types of rhotacization such as al [ä˞], iăl [jɚ], iêl [jɛ˞], ôl [u˞], ul [ɥɚ], ưl [ɻɚ] [ɨ̯ɚ], aol [ɑu̯˞], âul [ou̯˞], aăl [ɐ˞], angl [ɑ̃˞], ănl [ɚ̃]. uyal [ɥɐ˞], and ongl [ʊ̃˞].

+

[ʨyen]和[ʨye]音節的正寫是giuên和giuê

+

The spelling of [ʨyen] and [ʨye] syllables are "giuên" and "giuê".

+ +

Tones

+ + + + + + + + + + + + + +
namescriptIPAexamplesTriggering key
1. in-phiềng陰平a˦˥高kao/
2. yàng-phiềng陽平à˧˩平phiềngF
3. șáng-șăng上聲ả˥˧陡đẩuR
4. ķú-șăng去聲á˨˩˧下çiáS
5. zụ-șăng入聲ạ˧促txộJ
+ +

在成都方言中,入聲變成陽平

+

In the Tsằng-Đô accent, the entering tone has evolved to the voiced flat tone.

+ + The dictionary of Basurian National Language Script巴蜀國音字彙Ba-Șụ Kọe-In Țứ-Huấy + + + +

Specific Alphabet

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterKey pressed
đD + D
ķK + K
çC + C
șS + S
țT + T
żZ + Z
ăA + W
âA + A
êE + E
ôO + O
ơO + O
ưU + W
ğAlt G
+ +

+ If more than one tone marking key is pressed, the last one will be used. For example, typing asf will return "à". To write a tone marking key as a normal character, one has to press it twice: her becomes hẻ, while herr becomes her. +

+ +

例子Examples

+

Ba-Șụ-Lí-Yá Mìn-Țộ Giển-Șử

+

巴蜀利亞民族簡史

+

Ba-Șụ-Lí-Yá mìn-țộ țái xin-hái độ-lị chán-chăng ỉ-hấu, çiảng-șấu liảo txiền-xỏ-vậy-yẩu hấu-vồ-lài-chẻ le țứ-yầu hò fàn-yùng.

+

巴蜀利亞民族在辛亥獨立戰爭以後,享受了前所未有後無來者的自由和繁榮。

+

Thào-gin-chẻ xị-koán ỉ gin-șa kấu-vộ, fảng-fộ Trump gia-țộ țái xi-bố khai lủ-koản le șừ-đái.

+

淘金者習慣以金沙購物,彷彿川普家族在西部開旅館的時代。

+

Țẩu çía-giang le șang-żần phổ-phiến șử-yóng ìn-uyền, thòng-yáng șứ ngắng-thong-hó.

+

走下江的商人普遍使用銀元,同樣是硬通貨。

+

Mìn-giên le ỉn-șự fố-ụ đáo gín-hô ị-vần-bộ-chự, Tsằng-Đô șứ-mìn mẩy-thiên ỉ 5 vần txiền le giá-kẹ, ke vồ-nhiệ-yầu-mìn thì-kong żậu-șự, đang-șừ le kố-kong mẩy-uyệ khỏ-ỉ chắng đáo 2000 vần.

+

民間的飲食富裕到近乎一文不值,成都市民每天以五文錢的價格,給無業游民提供肉食,當時的雇工每月可以掙到兩千文。

+ +

© cathaylab

\ No newline at end of file diff --git a/keyboard/bu_phonetic/2.1.1/bu_phonetic.php b/keyboard/bu_phonetic/2.1.1/bu_phonetic.php new file mode 100644 index 000000000..04d895d5c --- /dev/null +++ b/keyboard/bu_phonetic/2.1.1/bu_phonetic.php @@ -0,0 +1,34 @@ + +
  • English, Spanish, French, German, and other major European languages
  • +
  • nearly complete set of IPA and Americanist phonetic symbols, include obscure and obsolete symbols
  • +
  • special characters commonly-used in typesetting
  • +
  • arrows
  • +
  • common mathematical, numeric, and currency symbols
  • + + + + + Authors: Albert Bickford (SIL) +*/ + $pagename = 'BU Phonetic Keyboard Help'; + $pagetitle = $pagename; + require_once('header.php'); +?> + +

    The BU Phonetic Keyboard provides access to a wide range of characters for Latin-based scripts in Unicode (www.unicode.org), including:

    + + +

    PDF format documentation
    + + diff --git a/keyboard/bu_phonetic/2.1.1/bukeys.pdf b/keyboard/bu_phonetic/2.1.1/bukeys.pdf new file mode 100644 index 000000000..39538d83e Binary files /dev/null and b/keyboard/bu_phonetic/2.1.1/bukeys.pdf differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/bsk_perso_arabic_keyboard_keystrokes.png b/keyboard/burushaski_girminas_perso_arabic/2.0.3/bsk_perso_arabic_keyboard_keystrokes.png new file mode 100644 index 000000000..5d4693fcc Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/bsk_perso_arabic_keyboard_keystrokes.png differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_additional_characters.png b/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_additional_characters.png new file mode 100644 index 000000000..b45bdd3d2 Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_additional_characters.png differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_girminas_perso_arabic.php b/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_girminas_perso_arabic.php new file mode 100644 index 000000000..ae4b668e5 --- /dev/null +++ b/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_girminas_perso_arabic.php @@ -0,0 +1,184 @@ + + +

    بروشسکی + ارتھو گرافی ، کی بورڈ اور فونٹ

    +

    بروشسکی + زبان میں لکھنے کے لیے آپ کو دو چیزوں کی + ضرورت ہوگی :

    +

    بروشسکی رسم الخط یا + ارتھو گرافی اورکلیدی تختہ یا کی بورڈ۔

    +

    اگر آپ قلم اور کاغذ + کے شیدائی ہیں تو چائے ساتھ رکھ لیجئے ، + قلم اور کا غذ کا ہی استعمال کر لیجئے۔ اُ + س صورت میں آپ کو صرف ارتھو گرافی ہی + چاہیے،کلیدی تختے یا کی بورڈ کی ضرورت آپ + کو نہیں ہوگی۔

    +

    + ارتھو گرافی کیا چیز ہے؟

    +

    یہ دو + یونانی الفاظ سے مل کر بنا ہے

    +

    "Orthos"  جس +کامطلب + "درست +
    +
    + "gráphein"   + جس + کامطلب ہے "لکھنا"۔

    +

    + یعنی + کسی بھی زبان کو لکھنے کے درست طریقہ کار + کو ہم ارتھو گرافی یا رسم الخط کہہ سکتے + ہیں۔ +

    +

    + بروشسکی زبان کا رسم الخط کونسا + ہے؟

    +

    برو شسکی + زبان میں لکھنے کے لیے دو رسم الخط منظور + ہو چکے ہیں۔
    +

    + عربی یا + فارسی کی طرح کا رسم الخط
    +
    رومن + یا لاطینی طرز کا رسم الخط +

    +

    یہ + دو ارتھو گرافیز، بروشو مرکہ (مرْکہ) + جو ہنزہ، یاسین + اور نگر کے بروشو قوم کی نمائندہ تنظیم + ہے۔ کے پلیٹ فارم سے تجویز اور منظور ہو + چکے ہیں۔ +

    +

    ذیل میں مختصراً ہم + بروشسکی عربی یا فارسی طرز کی ارتھو گرافی + یا رسم الخط کو دیکھتے ہیں۔

    +

    Burushaski Orthography +

    +

    اس گائید + کا مقصد ربروشسکی رسم الخط سکھانا نہیں + بلکہ بروشسکی رسم الخط کو لکھنے کے لیے + کی بورڈ کا استعمال کیسے کی جاتی ہےصرف + یہ دیکھانا مقصود ہے ۔ اگرآپ کو بروشسکی + کے رسم الخط کو تفصیل سے پڑھنا ہو تو براہ + کرم بروشسکی قائدہ (الف، + با)کو +پڑھ + لیجئے گا۔ +

    +

    آپ نے غور کیا ہوگا + کہ اُوپر دیئے گئے حروف تہجی میں اردو کے + علاوہ بروشسکی کےکچھ اضافی الفاظ شامل + کئے گئے ہیں۔

    +

    اس کا مطلب یہ ہے کہ + اگر آپ اردو لکھ سکتے ہیں تو پھر بروشسکی + میں لکھنا کوئی مشکل کام نہیں ہے۔ +

    +

    صرف بروشسکی کے اضافی + الفاظ یاد کرنا ہوگا اور بروشسکی کی بورڈ + کی ضرورت ہوگی جو اب تک آپ نے ڈاون لوڈ + کرلیا ہوگا۔

    +

    بروشسکی کے اضافی + الفاظ کی تفصیل کچھ یو ں ہے۔

    +

    Burushaski Additional Characters +

    +

    بھی بروشسکی + حروف تہجی میں شامل ہیں جن کو لکھنے کا + طریقہ اس گائیڈ میں بیان کیا گیا ہے۔ + (Diacritics) اس + کے علاوہ کچھ +

    +

    تو چلئے یہ جاننے کی + کوشش کرتےہیں کہ بروشسکی کے اضافی الفاظ + کو کمپیوٹر پر کیسے لکھے جاتے ہیں۔ +

    +

    بروشسکی + کی بورڈ کو انسٹال کرنے کے بعد آپ کے کمپوٹر + کا فزیکل کی بورڈ انگریزی سے بروشسکی میں + تبدیل ہو جائے گا۔آپ کے کی بورڈ کے بٹنزکا + کام یعنی فنکشن تبدیل ہو گا۔
    +

    +
    مندرجہ + ذیل جدول کو غور سے دیکھ لیجئے گا۔ یہ برو + شسکی کلیدی تختہ یا کی بورڈ کاترتیب ہے۔ + +

    +

    Burushaski Keyboard Character layout +

    +

    ا س کی بورڈ میں یہ + دیکھایا گیا ہے کہ کونسا انگریزی حرف + دبانے سے بروشسکی کا کونسا حرف لکھاجائے + گا۔سبز اور سرمئی رنگ میں آپ کے کمپوٹر + کے فزیکل کی بورڈ کو دیکھایا گیا ہے۔ اور + ہلکے لال رنگ میں ان کا فنکش دیکھایا گیا + ہے۔ +

    +

    Burushaski Keyboard Key Strokes Combination +
    +
    +
    اگر + سرمئی رنگ کے خانے میں موجود حرف کوسبز + رنگ کے خانے میں سے کسی حرف کے ساتھ ملا + کر لکھے تو ہلکے لال رنگ میں موجود حرف + لکھا جائےگا۔ +

    +

    اس کے علاوہ بروشسکی + کی بورڈ بالکل اُسی طرح کا م کرتا ہے جس + طر ح اردو فونیٹِک کی بورڈ کام کرتا ہے۔ + یہاں اردو کلیدی تختے کا استعمال + سکھانا مقصود نہیں ہے لیکن آپ اس کے استعمال + کے لیے ذیل میں دیئے گئے لنک پر جا کر سیکھ + سکتے ہیں۔ +

    +

    پر کلک + کریں ۔ https://urdu.ca/

    +

    ذیل میں بروشسکی میں + لکھی گئی عبارت دی گئی ہے۔جو بروشسکی کی + بورڈ سے لکھی گئی ہے۔

    +

    Yasin Burushaski Text +

    +

    اگر آپ موبائیل پر + لکھنا چاہتے ہیں تو پھر بروشسکی کی بورڈ + اپیپ ڈاون لوڈ کر لیجئے۔

    +

    Hunza Burushaski Text +

    +


    +
    +

    diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_keyboard_orthography_guide.pdf b/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_keyboard_orthography_guide.pdf new file mode 100644 index 000000000..d1fd96cc0 Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/burushaski_keyboard_orthography_guide.pdf differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/hunza_nagar_text.png b/keyboard/burushaski_girminas_perso_arabic/2.0.3/hunza_nagar_text.png new file mode 100644 index 000000000..880886e7a Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/hunza_nagar_text.png differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/key_combination_chart_equation.png b/keyboard/burushaski_girminas_perso_arabic/2.0.3/key_combination_chart_equation.png new file mode 100644 index 000000000..0f54dd450 Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/key_combination_chart_equation.png differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/orthography.png b/keyboard/burushaski_girminas_perso_arabic/2.0.3/orthography.png new file mode 100644 index 000000000..bc0ba2a3c Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/orthography.png differ diff --git a/keyboard/burushaski_girminas_perso_arabic/2.0.3/yasin_text.png b/keyboard/burushaski_girminas_perso_arabic/2.0.3/yasin_text.png new file mode 100644 index 000000000..54fcd10fe Binary files /dev/null and b/keyboard/burushaski_girminas_perso_arabic/2.0.3/yasin_text.png differ diff --git a/keyboard/ibibio_tonal/1.0/ibibio_tonal.php b/keyboard/ibibio_tonal/1.0/ibibio_tonal.php new file mode 100644 index 000000000..30aec5a5b --- /dev/null +++ b/keyboard/ibibio_tonal/1.0/ibibio_tonal.php @@ -0,0 +1,37 @@ + +
    +

    The Ibibio Tonal keyboard types the full Ibibio alphabet and all five tone marks. +Ibibio (ibb) is spoken in Akwa Ibom State, Nigeria.

    +

    Special letters

    + + + + + + + + +
    LetterDesktopTouch
    ọ Ọo ;ọ key, or long-press o
    ị Ịi ;ị key, or long-press i
    ụ Ụu ;ụ key, or long-press u
    ʌ Ʌv ;ʌ key, or long-press u
    ə Əe ;long-press e
    ñ Ñn ;ñ key, or long-press n
    +

    Press ; a second time to undo the letter and type a real semicolon.

    +

    Tone marks

    +

    Type the vowel or nasal (m, n, ñ) first, then the tone.

    + + + + + + + +
    ToneResultDesktop key
    Highó]
    Lowò[
    Fallingô}
    Risingǒ{
    Downstepō\
    +

    A different tone key swaps the tone. The same tone key again removes it and types the key itself. +Example: o ; ] gives ọ́, and m [ gives m̀.

    +

    On touch devices, use the five tone keys in the top row.

    + +

    Touch Keyboard layouts

    +
    +
    +
    diff --git a/keyboard/ibibio_tonal/1.1/ibibio_tonal.php b/keyboard/ibibio_tonal/1.1/ibibio_tonal.php new file mode 100644 index 000000000..30aec5a5b --- /dev/null +++ b/keyboard/ibibio_tonal/1.1/ibibio_tonal.php @@ -0,0 +1,37 @@ + +
    +

    The Ibibio Tonal keyboard types the full Ibibio alphabet and all five tone marks. +Ibibio (ibb) is spoken in Akwa Ibom State, Nigeria.

    +

    Special letters

    + + + + + + + + +
    LetterDesktopTouch
    ọ Ọo ;ọ key, or long-press o
    ị Ịi ;ị key, or long-press i
    ụ Ụu ;ụ key, or long-press u
    ʌ Ʌv ;ʌ key, or long-press u
    ə Əe ;long-press e
    ñ Ñn ;ñ key, or long-press n
    +

    Press ; a second time to undo the letter and type a real semicolon.

    +

    Tone marks

    +

    Type the vowel or nasal (m, n, ñ) first, then the tone.

    + + + + + + + +
    ToneResultDesktop key
    Highó]
    Lowò[
    Fallingô}
    Risingǒ{
    Downstepō\
    +

    A different tone key swaps the tone. The same tone key again removes it and types the key itself. +Example: o ; ] gives ọ́, and m [ gives m̀.

    +

    On touch devices, use the five tone keys in the top row.

    + +

    Touch Keyboard layouts

    +
    +
    +
    diff --git a/keyboard/indonesia/2.0.3/indonesia.php b/keyboard/indonesia/2.0.3/indonesia.php new file mode 100644 index 000000000..87e80fdf6 --- /dev/null +++ b/keyboard/indonesia/2.0.3/indonesia.php @@ -0,0 +1,41 @@ + + + +

    +To type in Indonesian language. This is a basic keyboard with no special letters. It will also be useful for other languages that do not require special characters.
    +Untuk mengetik bahasa Indonesia. Ini adalah papan ketik dasar tanpa huruf khusus. +

    +

    +The physical layout remain unchanged. For touch layout, the main features include:
    +Untuk papan ketik fisik, tidak ada perubahan. Untuk layar sentuh, fitur-fitur utamanya: +

      +
    1. Multi-layers/beberapa lapis: 'default'-'symbols'-'withnumbers' (rotating), 'shift' (and 'shiftwithnumbers'), 'capital' (and 'capitalwithnumbers'), and 'numeric'; 8 different layers
    2. +
    3. Button rotation/rotasi simbol: for symbols/untuk simbol (,?!) (':") (/()) and foreign letters/dan huruf asing ('zxq')
    4. +
    5. Longpress/tekan lama: if the button has a dot on the top right corner, you can longpress it to access additional numbers or symbols/jika tombol memiliki titik di kanan atas, Anda dapat menekan lama untuk memunculkan angka atau simbol lainnya
    6. +
    7. 'ny' and 'ng' bigraph letters/huruf konsonan ganda 'ny' dan 'ng'
    8. +
    9. All Keyman Keyboards are multi-platform/semua papan kunci Keyman dapat digunakan di berbagai piranti: PC, Android, Mac, iOS, web, etc. If you have access to the .kmn file, you can use it anywhere/jika Anda memiliki berkas .kmn dari papan ketiknya, itu bisa digunakan di mana saja.
    10. +
    11. You can participate by giving feedback and suggestion to the developer. Telegram/Github/Wikipedia/Twitter: @bennylin
      +Anda dapat berpartisipasi dan memberi masukan kepada pengembang. WA: 0896-9175-9915 Benny Lin
    12. +
    +And this keyboard tries to stay faithful to the QWERTY keyboards layout that most people familiar with. +

    +

    +Website homepage/Situs web: https://github.com/bennylin/keyboards +

    +

    © Benny Lin

    + +

    Desktop Keyboard Layout

    +
    +
    + +

    Mobile/Tablet Keyboard Layout

    +
    +
    + + diff --git a/keyboard/nepali_mpp_romanized/1.0.0/nepali_mpp_romanized.php b/keyboard/nepali_mpp_romanized/1.0.0/nepali_mpp_romanized.php new file mode 100644 index 000000000..a01674296 --- /dev/null +++ b/keyboard/nepali_mpp_romanized/1.0.0/nepali_mpp_romanized.php @@ -0,0 +1,36 @@ + + +

    + Authentic Nepali Romanized keyboard layout conforming strictly to the official Madan Puraskar Pustakalaya (MPP) & Language Technology Kendra (LTK) specification. +

    + +

    Desktop Keyboard Layout

    +
    +
    + +

    Special Keys & Ligatures

    + + +

    Tablet Keyboard Layout

    +
    +
    + +

    Phone Keyboard Layout

    +
    +
    diff --git a/keyboard/nepali_mpp_traditional/1.0.0/nepali_mpp_traditional.php b/keyboard/nepali_mpp_traditional/1.0.0/nepali_mpp_traditional.php new file mode 100644 index 000000000..de0539456 --- /dev/null +++ b/keyboard/nepali_mpp_traditional/1.0.0/nepali_mpp_traditional.php @@ -0,0 +1,48 @@ + + +

    + Authentic Nepali Traditional keyboard layout conforming strictly to the official Madan Puraskar Pustakalaya (MPP) & Language Technology Kendra (LTK) specification. +

    + +

    Desktop Keyboard Layout

    +
    +
    + +

    Conjunctive Characters & Ligatures

    +

    In accordance with the MPP/LTK specification, common complex conjuncts are directly accessible:

    + + +

    Tablet Keyboard Layout

    +
    +
    + +

    Phone Keyboard Layout

    +
    +
    diff --git a/keyboard/optitrans_devanagari_sanskrit_pre_vedic/1.0.1/optitrans_devanagari_sanskrit_pre_vedic.php b/keyboard/optitrans_devanagari_sanskrit_pre_vedic/1.0.1/optitrans_devanagari_sanskrit_pre_vedic.php index de2343dac..acd2cfd01 100644 --- a/keyboard/optitrans_devanagari_sanskrit_pre_vedic/1.0.1/optitrans_devanagari_sanskrit_pre_vedic.php +++ b/keyboard/optitrans_devanagari_sanskrit_pre_vedic/1.0.1/optitrans_devanagari_sanskrit_pre_vedic.php @@ -30,7 +30,7 @@

    nk->ङ्क्, nkh->ङ्ख्, ng->ङ्ग्, ngh->ङ्घ् nch->ञ्च्, nCh->ञ्छ्, nc->ञ्च्, nC->ञ्छ्, nchh->ञ्छ्, nj->ञ्ज्, njh->ञ्झ्, nT->ण्ट्, nTh->ण्ठ्, nD->ण्ड्, nDh->ण्ढ् - c->च्, C->छ्, z->श्, S->ष्, jn->ज्ञ्, R->ऋ

    + c->च्, C->छ्, z->ज़्, S->ष्, jn->ज्ञ्, R->ऋ

    Examples: Type saMskRta for संस्कृत.

    Details