{"id":42215922,"url":"https://github.com/springcomp/optimized-azerty-win","last_synced_at":"2026-01-27T01:14:13.084Z","repository":{"id":53743326,"uuid":"179313432","full_name":"springcomp/optimized-azerty-win","owner":"springcomp","description":"AFNOR Compliant AZERTY Keyboard Layout driver for Windows","archived":false,"fork":false,"pushed_at":"2025-08-23T14:54:39.000Z","size":16550,"stargazers_count":60,"open_issues_count":10,"forks_count":3,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-26T22:11:45.176Z","etag":null,"topics":["afnor","azerty","keyboard-layout","windows"],"latest_commit_sha":null,"homepage":"https://springcomp.github.io/optimized-azerty-win/","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/springcomp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-03T15:00:18.000Z","updated_at":"2025-10-13T16:34:42.000Z","dependencies_parsed_at":"2022-09-23T22:00:22.365Z","dependency_job_id":"24e8fd1b-3d77-4b17-9010-a9bf4357bbb4","html_url":"https://github.com/springcomp/optimized-azerty-win","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/springcomp/optimized-azerty-win","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springcomp%2Foptimized-azerty-win","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springcomp%2Foptimized-azerty-win/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springcomp%2Foptimized-azerty-win/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springcomp%2Foptimized-azerty-win/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/springcomp","download_url":"https://codeload.github.com/springcomp/optimized-azerty-win/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springcomp%2Foptimized-azerty-win/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28795097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T01:07:07.743Z","status":"ssl_error","status_checked_at":"2026-01-27T01:07:06.974Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["afnor","azerty","keyboard-layout","windows"],"created_at":"2026-01-27T01:14:12.331Z","updated_at":"2026-01-27T01:14:13.052Z","avatar_url":"https://github.com/springcomp.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub license](https://img.shields.io/github/license/springcomp/optimized-azerty-win.svg)](https://github.com/springcomp/optimized-azerty-win/blob/master/LICENCE.txt)\n\n[![GitHub issues](https://img.shields.io/github/issues/springcomp/optimized-azerty-win.svg)](https://github.com/springcomp/optimized-azerty-win/issues)\n[![Build status](https://ci.appveyor.com/api/projects/status/baoggbidv649cw69?svg=true)](https://ci.appveyor.com/project/springcomp/optimized-azerty-win)\n[![](https://img.shields.io/badge/compliance-100%25-brightgreen.svg)](https://github.com/springcomp/optimized-azerty-win-compliance)\n\n![](./refs/french.png) Veuillez consulter [la documentation en français](https://springcomp.github.io/optimized-azerty-win/). \n\n## Content\n\nThis repository contains a simple .klc file which can be used with [Microsoft Keyboard Layout Creator](https://www.microsoft.com/en-us/download/details.aspx?id=102134)\nto add a custom layout on Windows supporting a recently standardized azerty keyboard layout.\n\n![](./refs/base.png)\n\n\n## Installation\n\nSee the [Releases](https://github.com/springcomp/optimized-azerty-win/releases) tab to download the last setup.\n\nWhen the keyboard layout is installed, you will certainly have to restart Windows to allow the new layout to be displayed on the language setup screen.\n\nThe keyboard is installed as « Français - AZERTY NF Z71-300 » layout.\n\n\n## Usage\n\n\n### Overview\n\nThe recently standardized AZERTY (hereafter referred to as AZERTY-NF) layout is designed to be very similar to the AZERTY layout in order to minimize disruption to users who write in the French language. Yet, the new layout is superior in many ways:\n\n- It includes *all* the characters that are required to write proper French, including accented upper case letters (for instance, `É`, `œ` and `«`).\n- It is designed to be more user-friendly and allow quicker typing.\n- It includes almost 60 additional characters used in foreign languages and technical publications.\n- Yet, those characters are easy to find thanks to clusters of likewise characters at sensible locations.\n\n\n### Diacritical marks and accented characters\n\nThe most distinctive changes introduced by the AZERTY-NF layout concern typing accented characters.\n\nSimilar to the \u003ckbd\u003e^\u003c/kbd\u003e you may be familiar with, diacritical marks can be input using one of the dedicated key, followed by the appropriate letter. The diacritical mark key acts as a *dead key*, meaning that it does not generate a complete character by itself but modifies the character generated by the key struck immediately after to produce the desired result.\n\nFor instance, typing the letter `Û` is achieved by typing the \u003ckbd\u003e^\u003c/kbd\u003e, \u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eU\u003c/kbd\u003e combination.\n\nThe AZERTY-NF layout differs in subtle ways from the AZERTY layout you have grown accustomed to. Because many European languages use complex diacritical marks, the AZERTY-NF layout is designed to allow typing arbitrary accents on a base letter.\n\nTo support this scenario, the present layout allows typing a combining diacritical mark to be applied to the previously typed character. To input a combining diacritical mark, just repeat the dead key associated with the desired mark.\n\nFor instance:\n\n- \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ev\u003c/kbd\u003e, \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ev\u003c/kbd\u003e produces a combining cedilla `◌̧` (U+0327).\n\nPlease, note that using a combining diacritical mark differs from using a dead-key in the following ways:\n\n- The combining diacritical mark must be typed __after__ a previously typed character, whereas a dead key must be typed before the desired character key.\n- Using a combining diacritical mark __produces an additional Unicode code point__ in the output, and thus modifies the previously typed character to apply a diacritical mark, whereas the sequence of a dead-key followed by a character produces a single Unicode code point, corresponding to a [precomposed character](https://en.wikipedia.org/wiki/Precomposed_character).\n\nFor instance, the following two combinations both produce the letter `é`. However, the resulting sequences of Unicode code points differ:\n\n- \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eé\u003c/kbd\u003e, \u003ckbd\u003ee\u003c/kbd\u003e produces `é` (U+00E9).\n- \u003ckbd\u003ee\u003c/kbd\u003e, \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eé\u003c/kbd\u003e, \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eé\u003c/kbd\u003e produces `é` (U+0065, U+0301) `e + ◌́` .\n\n\nPlease, note that it is possible to input a non-combining version of a diacritical mark by typing a \u003ckbd\u003eSpace\u003c/kbd\u003e after the dead-key.\n\nThis allows to input certain characters verbatim. However, please note that certain diacritical marks do not have a non-combining variant. For these characters, a somewhat equivalent glyph is produced, according to the following table:\n\n|Sequence|Character|Unicode code point|\n|---|---|---|\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003e@\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `˘` | BREVE (U+02D8) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003e#\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `°` | DEGREE SIGN (U+00B0)¹ |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eé\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `´` | ACUTE ACCENT (U+00B4) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eè\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `` ` `` | GRAVE ACCENT (U+0060) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003e(\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `˝` | DOUBLE ACUTE ACCENT (U+02DD) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003e)\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `˵` | DOUBLE GRAVE ACCENT (U+02F5)² |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003e‘\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `¯` | MACRON (U+00AF) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003e\"\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `˚` | RING ABOVE (U+02DA) |\n| \u003ckbd\u003e^\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `^` | CIRCUMFLEX ACCENT (U+005E) |\n| \u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003e^\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `¨` |  DIAERESIS (U+00A8) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003e^\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `ˇ` | CARON (U+02C7) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ei\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `˙` | DOT ABOVE (U+02D9) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eI\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `.` | FULL STOP (U+002E)³ |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eH\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `ˍ` | MACRON BELOW (U+02CD) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `/` | SOLIDUS (U+002F) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ev\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `¸` | CEDILLA (U+00B8) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eV\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `˛` | OGONEK (U+02DB) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eb\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `-` | HYPHEN-MINUS (U+002D) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003en\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `~` | TILDE (U+007E) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003e!\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e | `,` | COMMA (U+002C)⁴ |\n\nPlease, note that this allows typing a `` ` `` (GRAVE ACCENT) character, known to developers as \"backtick\", even though this character is conspicuously absent from the list of supported characters mandated by the standard.\n\n\u003csup\u003e\u003csup\u003e\n¹ The 'COMBINING INVERTED BREVE' character does not have a non-combining equivalent and is replaced by the 'DEGREE SIGN' visual approximation.  \n² For some reason, the 'DOUBLE GRAVE ACCENT' is positioned at the bottom of the text.  \n³ The 'COMBINING DOT BELOW' character does not have a non-combining equivalent and is replaced by the 'FULL STOP' visual approximation.  \n⁴ THe 'COMBINING COMMA BELOW' character does not have a non-combining equivalent and is replaced by the 'COMMA' visual approximation.\n\u003c/sup\u003e\u003c/sup\u003e\n\n\n### Caps Lock\n\nThe AZERTY-NF layout also includes the \"SGCaps\" feature. Used originally for the Swiss-German layout, this feature changes the behaviour of the \u003ckbd\u003eCaps Lock\u003c/kbd\u003e key.\n\nTraditionnaly, \u003ckbd\u003eCaps Lock\u003c/kbd\u003e acts like maintaining the \u003ckbd\u003eShift\u003c/kbd\u003e key. This means that in a traditionnal AZERTY layout, enabling \u003ckbd\u003eCaps Lock\u003c/kbd\u003e and typing \u003ckbd\u003eé\u003c/kbd\u003e produces the number `1`.\n\nThe AZERTY-NF layout allows you to type the corresponding accented characters when \u003ckbd\u003eCaps Lock\u003c/kbd\u003e is toggled on.\n\nThus, enabling \u003ckbd\u003eCaps Lock\u003c/kbd\u003e and typing \u003ckbd\u003eà\u003c/kbd\u003e, \u003ckbd\u003eé\u003c/kbd\u003e, \u003ckbd\u003eê\u003c/kbd\u003e, \u003ckbd\u003eè\u003c/kbd\u003e, \u003ckbd\u003e^\u003c/kbd\u003e, \u003ckbd\u003ei\u003c/kbd\u003e, \u003ckbd\u003e^\u003c/kbd\u003e, \u003ckbd\u003eo\u003c/kbd\u003e, \u003ckbd\u003eù\u003c/kbd\u003e produces `ÀÉÊÈÎÔÙ`.\n\nMore realistically, enabling \u003ckbd\u003eCaps Lock\u003c/kbd\u003e and typing \u003ckbd\u003ec\u003c/kbd\u003e, \u003ckbd\u003e'\u003c/kbd\u003e, \u003ckbd\u003ee\u003c/kbd\u003e, \u003ckbd\u003es\u003c/kbd\u003e, \u003ckbd\u003et\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e, \u003ckbd\u003eà\u003c/kbd\u003e, \u003ckbd\u003eSpace\u003c/kbd\u003e, \u003ckbd\u003ed\u003c/kbd\u003e, \u003ckbd\u003ei\u003c/kbd\u003e, \u003ckbd\u003er\u003c/kbd\u003e, \u003ckbd\u003ee\u003c/kbd\u003e produces `C'EST À DIRE`. Notice that neither the apostrophe (`'`) nor the accented character (`à`) did require extra precautions. This would not be normally feasible on a traditional AZERTY layout.\n\nThe SGCaps feature is a popular option that, unfortunately, contradicts the standard. If you run a laptop computer without a numeric keypad, please, consider installing the standard-compliant `AZERTY NF Z71-300 (Numérique)` layout instead. It is also installed alonside the AZERTY-NF layout.\n\n### Extended characters\n\nThe AZERTY-NF contains a 'European Extended Characters' layer that is accessible after pressing \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e.\n\nThis layer contains characters not in common use in the French language. However, one of the goal of the standard is to allow writing texts with characters most commonly found in other European languages.\n\nThe following table shows some characters available from the European Extended Characters layer. Other punctuation marks, not shown here, are also available. Please refer to [the layout](refs/EU_level.png) shown by the official page for more information. \n\n|Sequence|Character|Unicode code point|\n|---|---|---|\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003ea\u003c/kbd\u003e | `ª` | FEMININE ORDINAL INDICATOR (U+00AA) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003ed\u003c/kbd\u003e | `ð` | LATIN SMALL LETTER ETH (U+0000) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eD\u003c/kbd\u003e | `Ð` | LATIN CAPITAL LETTER ETH (U+00D0) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003ee\u003c/kbd\u003e | `ə` | LATIN SMALL LETTER SCHWA (U+0259) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eE\u003c/kbd\u003e | `Ə` | LATIN CAPITAL LETTER SCHWA (U+018F) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eg\u003c/kbd\u003e | `ŋ` | LATIN SMALL LETTER ENG (U+014B) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eG\u003c/kbd\u003e | `Ŋ` | LATIN CAPITAL LETTER ENG (U+014A) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003ei\u003c/kbd\u003e | `ı` | LATIN SMALL LETTER DOTLESS I (U+0131) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eI\u003c/kbd\u003e | `İ` | LATIN CAPITAL LETTER I WITH DOT ABOVE (U+0130) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003ej\u003c/kbd\u003e | `ĳ` | LATIN SMALL LIGATURE IJ (U+0133) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eJ\u003c/kbd\u003e | `Ĳ` | LATIN CAPITAL LIGATURE IJ (U+0132) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eo\u003c/kbd\u003e | `º` | MASCULINE ORDINAL INDICATOR (U+00BA) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003es\u003c/kbd\u003e | `ſ` | LATIN SMALL LETTER LONG S (U+017F) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003et\u003c/kbd\u003e | `þ` | LATIN SMALL LETTER THORN (U+00FE) |\n| \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e, \u003ckbd\u003eT\u003c/kbd\u003e | `Þ` | LATIN CAPITAL LETTER THORN (U+00DE) |\n\n\nThe `ſ` character, 'LATIN SMALL LONG LETTER S' (U+017F) shown in the table above can also be altered with diacritical marks. \n\nThe following two combinations are available:\n\n- \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e produces `ẜ` 'LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE' (U+1E9C)\n- \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003ei\u003c/kbd\u003e, \u003ckbd\u003eAltGr\u003c/kbd\u003e+\u003ckbd\u003eEu\u003c/kbd\u003e produces `ẛ` 'LATIN SMALL LETTER LONG S WITH DOT ABOVE' (U+1E9B)\n\n\n\n## Known issues\n\nN/A.\n\n## Links\n\n- [Le nouvel AZERTY](http://norme-azerty.fr/)\n- [Norme AFNOR](https://www.boutique.afnor.org/norme/nf-z71-300/interfaces-utilisateurs-dispositions-de-clavier-bureautique-francais/article/901594/fa188960)\n\n\nCette œuvre est mise à disposition selon les termes de la [License Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/).  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringcomp%2Foptimized-azerty-win","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspringcomp%2Foptimized-azerty-win","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringcomp%2Foptimized-azerty-win/lists"}