Skip to content

[pak_urdu_phonetic] Add cross-platform Pak Urdu Phonetic keyboard v1.0#3633

Merged
LornaSIL merged 10 commits into
keymanapp:masterfrom
BARQx:pak_urdu_phonetic
Jul 21, 2025
Merged

[pak_urdu_phonetic] Add cross-platform Pak Urdu Phonetic keyboard v1.0#3633
LornaSIL merged 10 commits into
keymanapp:masterfrom
BARQx:pak_urdu_phonetic

Conversation

@BARQx
Copy link
Copy Markdown
Contributor

@BARQx BARQx commented Jul 18, 2025

Overview

This PR adds the Pak Urdu Phonetic keyboard layout, ported from the popular Windows-only Pak Urdu Installer by mBilalm. This layout brings the same intuitive phonetic typing experience to the Keyman platform, enabling Urdu typing on Linux and other supported systems.

Key Features

  • 🔤 Fully phonetic Urdu keyboard layout for intuitive typing
  • 💻 Cross-platform support: Linux, Windows, and macOS
  • 🎯 Mapping compatibility with the original Windows version
  • 🔁 Seamless transition for users familiar with Pak Urdu Installer
  • 🗝️ Over 160 custom key mappings, including:
    • Base
    • Shift
    • AltGr (Right Alt)
    • Shift + AltGr
  • 🏆 Most comprehensive Urdu phonetic keyboard available in terms of key coverage

📄 Full key mapping table included in README.md, welcome.htm and readme.htm

Additional Inclusions

  • readme.htm documentation
  • welcome.htm with visual layout screenshots
  • Help file and metadata (.keyboard_info)
  • Licensing: MIT

Author

Developed and maintained by Nashit Ahmed Barq
GitHub Profile

@keyman-server
Copy link
Copy Markdown
Collaborator

Thank you for your pull request. You'll see a "build failed" message until the Keyman team has reviewed the pull request and manually initiated the build process.

Every change committed to this branch will become part of this pull request. When you have finished submitting files and are ready for the Keyman team to review this pull request, please post a "Ready for review" comment.

@BARQx
Copy link
Copy Markdown
Contributor Author

BARQx commented Jul 18, 2025

Ready for review

@LornaSIL
Copy link
Copy Markdown
Contributor

Thanks for your submission. In general your PR looks good, but I do have some feedback:

  • Our build system has changed a bit since you may have worked with it. We no longer want you to submit the pak_urdu_phonetic.keyboard_info file as that is autogenerated from the data within the .kps. So, that file can be deleted. We should make sure the description and languages are in the .kps.
  • The readme.htm file should ideally be a very short description of the keyboard package, not a description on how to use the keyboard. When the user installs the package they see a Readme tab and ideally you just have enough text to fill that and not have to scroll like this:
image

AFTER you click OK, then the welcome.htm will pop up and that's where we expect all the valuable user documentation to show up. So, I'd recommend you reduce what's in the readme.htm and expect the welcome.htm to have all the user documenation (which I think it does).

  • We recommend you remove the copyright year from the .kmn. That reduces the places it needs updating in the future.
  • The keyboard includes keystrokes for 6 PUA characters. We do not want our keyboards in the release stream to include PUA characters. This is especially bad if there is no font included in the package. The PUA characters will have no meaning. The ones that need removing are: U+e000, U+e001, U+e002, U+e011, U+e020, U+e01d. In your screenshot of the layout they are all question marks so I can't tell what they are intended to be.
  • We recommend you select "desktop" as the target and don't include windows, macos, linux.
  • The keyboard could benefit from having a web target as well. If you want to do that, you would
    • select web as a target
    • Under Features click on Add
    • Select Desktop On Screen Keyboard
    • Go to the new tab that appeared called On-Screen and select Fill from layout.
  • If you added the On Screen keyboard, you will now need to add the pak_urdu_phonetic.kvk file to the list of files in the .kps file. And make sure to commit the pak_urdu_phonetic.kvks file to this pull request.
  • You'll want to go to the Keyboards tab and add in the examples that are in the keyboard_info file since we need it in the .kps.
  • On the Details tab we would prefer you remove the year from the copyright statement so that won't have to be updated in the future. The only place we want to track copyright years is in LICENSE.md
  • In the help php file we do not want any style information outside of the php header. So, lines 1-21 are fine, but lines 23-38 should be deleted:
<style>

.container { max-width: 900px; margin: 20px auto; padding: 20px; font-family: 'Segoe UI', sans-serif; line-height: 1.6; }
    h1 { font-size: 24px; color: #2c3e50; border-bottom: 2px solid #ddd; padding-bottom: 10px; margin-bottom: 20px; }
    h2 { font-size: 20px; color: #2980b9; margin-top: 30px; }
    h3 { font-size: 18px; margin-top: 20px; color: #2c3e50; }
    ul, ol { padding-left: 20px; }
    table { width: 100%; border-collapse: collapse; margin-top: 15px; }
    th, td { padding: 8px 12px; border: 1px solid #ccc; }
    th { background: #f0f0f0; }
    .welcome-message { background: #e3f2fd; padding: 15px; border-left: 4px solid #2196f3; }
    .keyman-notice { background: #fff3cd; padding: 10px 15px; border-left: 4px solid #ffc107; margin: 20px 0; }
    a { color: #1565c0; text-decoration: none; }
    a:hover { text-decoration: underline; }

</style>
  • You already included that style information in the php header anyway.
  • In the php file you've included an osk statement which is in the proper format. The only issue is that you must have an OSK, so make sure to go ahead and add that as I suggested above.

I know this is a lot to process, but it looks very good for a first submission! Our goal is to have keyboards that work well which is why we do a thorough review.

@BARQx BARQx force-pushed the pak_urdu_phonetic branch from 6d126ef to 8d3b7ed Compare July 19, 2025 18:14
@BARQx
Copy link
Copy Markdown
Contributor Author

BARQx commented Jul 19, 2025

Hello, thanks a lot for your helpful feedback. I've made the updates you requested. Please let me know if everything looks good now or if there’s anything more I should tweak.

  • Remove the .keyboard_info file
    – Deleted the file and ensured metadata (description, languages, examples) is added to the .kps file.

  • Simplify readme.htm
    – Kept it to a short description suitable for the Readme tab.

  • Remove copyright year from .kmn

  • Remove PUA (Private Use Area) characters from .kmn
    – Remove any mappings that output:
    U+E000, U+E001, U+E002, U+E011, U+E01D, U+E020.

    Resolution:
    All six PUA characters have been fixed:

    Replaced with Unicode text equivalents:

    • U+E000 → Replaced with 'رضی اللہ عنہ' on SHIFT RALT K_R
    • U+E001 → Replaced with 'علیہ السلام' on SHIFT RALT K_E
    • U+E002 → Replaced with 'رحمۃ اللہ علیہ' on SHIFT RALT K_L

    Removed:

    • U+E011 → Removed from RALT K_SLASH
    • U+E01D → Removed from SHIFT RALT K_RBRKT
    • U+E020 → Removed from SHIFT RALT K_K
  • Limit target platforms in .kmn to desktop only
    – Removed windows, macos, and linux targets. Added desktop and web as new targets.

  • Add web target and On-Screen Keyboard (.kvks)
    – Added web as a target in .kps.
    – Used “Fill from layout” to generate pak_urdu_phonetic.kvks.
    – Included .kvk file in the .kps package file.

  • Add language examples to .kps
    – Included Urdu examples: اردو, سلام, پاکستان in the Keyboards tab.

  • Remove copyright year from .kps

  • Clean up inline CSS in pak_urdu_phonetic.php
    – Deleted the <style> block (lines 23–38).

  • Ensure .kvks is included if osk is referenced in .php

@BARQx
Copy link
Copy Markdown
Contributor Author

BARQx commented Jul 21, 2025

Ready for review

@LornaSIL
Copy link
Copy Markdown
Contributor

Two more things.

  • You'll need to delete the pak_urdu_phonetic.kvk file in the source folder. The .kvks file is the source so keep that one.
  • Change the path in the .kps file for that file. If you look at the source, the path should be
  • <Name>..\build\pak_urdu_phonetic.kvk</Name>

Otherwise I think it's fine. Normally I could make this change for you, but I think your github settings do not let me edit your PR.

@BARQx
Copy link
Copy Markdown
Contributor Author

BARQx commented Jul 21, 2025

Thank you for the review. I've made the requested changes:

  • Deleted the pak_urdu_phonetic.kvk file from the source folder
  • Updated the .kps file to correctly reference the compiled .kvk from the build directory

Copy link
Copy Markdown
Contributor

@LornaSIL LornaSIL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing all these things. It looks good.

@LornaSIL LornaSIL merged commit 8531167 into keymanapp:master Jul 21, 2025
2 checks passed
@BARQx BARQx deleted the pak_urdu_phonetic branch July 21, 2025 19:08
@BARQx
Copy link
Copy Markdown
Contributor Author

BARQx commented Jul 21, 2025

Thank you for your guidance. Best regards.

@LornaSIL
Copy link
Copy Markdown
Contributor

Your keyboard is now online here: https://keyman.com/keyboards/pak_urdu_phonetic
The help file isn't yet up, but I expect it to show up fairly soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants