- Version: 1.4.2α
- Compiled: 2024-09 from GitHub/DreymaR/BigBagKbdTrixPKL
- Compiler: AutoHotKey v1.1.27.07 Unicode 32 bit
(c) PKL: Máté Farkas , 2007-2010
(c) EPKL: Øystein Bech "DreymaR" Gadmar , 2015-2021
(c) EPKL: Øystein "DreymaR" Bech-Aase , 2021-
For a detailed version history, look further down.
* EPKL v1.0.0: Name change to EPiKaL PKL. ./PKL_eD -> ./Files folder. Languages are now under Files.
* EPKL v1.1.0: Some layout format changes. Minor fixes/additions. And kaomoji! d( ^◇^)b
* EPKL v1.1.1: Some format changes. Minor fixes/additions. Tap-or-Mod keys (WIP).
* EPKL v1.1.2: Multifunction Tap-or-Mod Extend with dead keys on tap. Janitor inactivity timer.
* EPKL v1.1.3: The LayStack, separating & overriding layout settings. Bugfixes. More kaomoji.
* EPKL v1.1.4: Sym mod and Dvorak layouts. HIG updated for new Inkscape. Unified VK codes for layouts. Mapping/setting tweaks.
* EPKL v1.1.5: Tarmak Curl(DHm) w/ ortho images. Suspending apps. Language tweaks, fixes.
* EPKL v1.1.6: New Curl-DH standard! EPKL For Dummies. KLM key codes. Extend fixes. AltGr layouts for Es/It, and Pan-Germanic locale variants.
* EPKL v1.2.0: Layout/Settings UI.
* EPKL v1.3.0: Compose/Completion and Repeat keys.
* EPKL v1.3.1: Compose/Completion developments. Folder/file restructuring. Cmk Heb/Epo/BrPt/Nl variants, Ortho kbd types, Boo layout, Dvk-Sym.
* EPKL v1.4.0: Better Send for key mapping. ScanCode key mapping. Dual-function CoDeKey (Compose+Dead key).
* EPKL v1.4.1: Timerless EPKL! State-2-VK mapping types. SwiSh & FliCK modifiers. Layout_Override.
* EPKL v1.4.2: Layout/Settings enhancements. Mapping reworks.
EPiKaL PKL is always a bit of a Work-In-Progress, so all of it may not be working perfectly ... yet.
This is the EPKL Work-In-Progress README, going into details on the changes. For the normal EPKL README see the main folder.
_~ Øystein "DreymaR" Bech-Aase_
The full WIP/TODO/etc list is found near the top of _PKL_main.ahk
as comment lines. This section just lists some tasters.
- A "janitor" timer that checks whether the underlying Windows layout has changed (affects dead keys)
- Generic dual-role keys and/or modifiers. For instance, home row keys might act as modifiers when held and letters when tapped.
- An import module for MSKLC layout files and other formats.
- Dead key chaining, allowing one DK to release another.
- EPKL allows the @## syntax but it doesn't work as it should yet. Because it resets PVDK?
- Chainable dead keys would allow a true Mother-of-DKs for Compose-like "tap dance" sequences like {MoDK,t,n}->ñ.
- Rework the AltGr code. Check whether Ralt (SC138 without LCtrl) will be AltGr consistently in layouts with state 6-7.
- Add to unmapped dead key functionality
- Specify release for unmapped sequences. Today's practice of leaving an accent then the next character is often bad?
- That way, one could for instance use the Vietnamese Telex method with aou dead keys (aw ow uw make â ô ư) etc.
- One catch would be that the dead key wouldn't release until next key press, but that may be acceptable.
- Specify, e.g., the entry for s1 similar to today's s0 entry. (U+0000–U+001F are just ‹control› chars.)
- That'd be backwards compatible with existing PKL tables, and one can choose behavior.
- Truly transparent image background without the image frame. Overall transparency (but not transparent color?) works.
- Transparent foreground images for all states and dead keys.
- More dead key mappings:
- Greek polytonic accents? Need nestable accents, e.g., iota with diaeresis and tonos. May be done by Compose instead, though.
- Kyrillic special letters like ёЁ (for Bulmak) җ ӆ ҭ ң қ ӎ (tailed); see the Rulemak topic.
- IPA on AltGr+Shift symbol keys?! A proposed system based on phonetics, having DKs based on position and suchlike.
- DKs for vowels rounded/unrounded (near-)front, central, (near-)back. Release w/ I(YU)-E(ØO)-O(Œ)-A(Æ) for close-open, U/Y?/Æ for inbetweens?
- For consonants, DKs for (bi-)labial, dental, (post-)alveolar, retroflex, palatal, velar, uvular, pharyngeal/glottal?
- Release with the voiced/unvoiced P/B, T/D, M, N, R, F/V, S/H, L. Have to tweak it a little to account for the whole chart.
- Also need to provide clicks (! etc), voiced implosives (hooked), ejectives (ʼ), diacritics and others. May sequence DKs for that?
- Apart from combining diacritics, IPA needs superscript
ʰ ⁿ ᶿ ᵊ ˡ ˣ ʷ ˠ ˤ ʲ
. The Acute DK should be enough... except it conflicts for nlw.
GENERAL/SETTINGS
- Renamings and file mergings to make the code more compact and streamlined.
- Removed MenuIcons and HashTables code, replacing them with AHK v1.1+ native code.
- Unicode native AHK now works. SendU and changeNonASCIIMode removed.
- New iniRead functions that support the UTF-8 Unicode file format.
- Merged several .ini sections including eD specific ones into the default [pkl] as it's tidier.
- Made a PKL_Tables.ini file for info tables that were formerly internal. This way, the user can make additions as necessary.
- If using a layout from the command line, the notation "UseLayPos_#" will run layout # in the layout list set in EPKL_Layouts.
- This also makes Refresh robust against layout changes in EPKL_Layouts.
- Base layout: Specify in Layout.ini a basis file (layout section only). Just need to list changes in Layout.ini now. Nice for variants.
- Shorthand notation in EPKL .ini layouts, allowing the KbdType/CurlMod/ErgoMod settings to be referred to as @K/@C/@H resp. (@A for all at once).
- Path shortcut for Layout.ini entries, allowing "." instead of full path from EPKL root.
MENUS/IMAGES
-
Edited menus and the About... dialog.
-
Added a KeyHistory shortcut for debugging etc. Make it configurable in EPKL_Settings (eD_DebugInfo).
-
Added a Refresh hotkey. Reruns EPKL in case something got stuck or similar.
-
You can specify in the EPKL_Settings .ini which tray menu item is the default (i.e., activated by double-clicking the tray icon)
-
Would tray menu shortcuts work? E.g., &About. Answer: The menu shows it, but unselectable by key(?).
-
Multilayered help images so fingering can be in one image and letters/symbols in another (saves file space, adds options).
- Shift/AltGr indicators on separate images in a specified directory instead of in the state#.png (and dk) images.
- Allow pushing the help image horizontally if mouse x pos. is in the R/L ~20% zone.
- Zoom and Move hotkeys for the help image, cycling between image sizes and positions. Set e.g., imgZoom = 60,100,150 (%) in EPKL_Settings.
- Settings in Layout.ini: Size/scaling, background/extend images, background color, shift indicator, icons and dead key dirs.
- Settings in settings.ini: Overall transparency/opacity, top/bottom gutter distances, horizonal activation zone.
- If settings are missing, may default to backgr.png, extend.png, on/off.ico and ModStateImg\ in the layout dir.
- Instead of many lines of image sizes, introduced a scaling factor 'img_scale' (in percent).
-
Help Image Generator, using my KLD format in an SVG image template. With search/replace this is turned into a key glyph image.
- You'll need an Inkscape (Scalable Vector Graphics program) install. A good option is portable Inkscape from PortableApps.com.
- You can choose whether to make shift state images only or a full image set with all shift states for all deadkeys. The latter takes time!
- The HIG can be used from the menu when Advanced Mode is set. Its settings file is in Files\ImgGenerator.
- In the HIG settings file you can control replacement characters used in a marking layer; anything written to it will show in bold yellow.
- The SVG image template file is in the same location. You could use another template and specify it in the HIG settings file.
- If you don't want the dead keys marked in yellow for instance, you could save the SVG template with that layer hidden.
- You can make full layout images showing keys as well, by combining with a Files\ImgBackground image of choice. I use the GIMP for that.
MAPPINGS
- Updated and added several layouts, including locale and script variants.
- Removed explicit Cut/Copy/Paste keys (in pkl_keypress.ahk); use +{Del} / ^{Ins} / +{Ins} (or as I have used in my Extend mappings, }^{X/C/V ).
- Made an _eD_Extend.ini file for Extend mappings that were formerly in pkl.ini (or Layout.ini). The old way should still work though.
- Made Extend substitutes for Launch_Media/Search/App1/App2, as AHK multimedia launcher keys aren't working in Win 10.
- Scan code modular remapping, making ergo and other variants much easier. Separate key permutation cycles, and remaps combining/translating them.
- In Layout.ini, specify any remap combinations using the names (and syntax) found in the [Remaps] section of the Remap.ini file.
- The _layout remap specifies a full remapping, while the _extend remap is only for those keys you want to move for Extend ("hard" remaps).
- Uses my KeyLayoutDefinition (KLD) mapping format.
- KLD is good for remaps, but too compact for main layout or Extend definitions. (Besides, Aldo Gunsing has a conversion tool for those.)
- Unfortunately though, I can't make that work for the help images directly. New images need to be generated then.
- Should I have a cycle merge syntax, e.g., "Angle_ISO105 = TC< |L0LG | ^Angle_ANSI-Z"? Probably unnecessary.
- Virtual Key remapping, similarly to SC. I'd like to make only ANSI or ISO layouts, and leave the ISO-ANSI VK issue to a simple remap routine.
- Sensible dead key names for images and entries (e.g., @14 -> tilde) in a central doc that layouts can point to.
- Dead key list and file path in layout (but use dk## in the layout itself, for compatibility!)
- If no lookup is specified, EPKL defaults to the local file as before
- This way, one change in a DK will affect all layouts using that DK
- DK images may still be kept in the layout dir (or a subdir to avoid clutter), as they are layout dependent
- DK imgs named ‹name›_dk‹#› for state ‹#› (add s6/7 where applicable?!)
- Greek layout w/ tonos/dialytika in the acute/umlaut dead keys.
- In the OS deadkey table ([DeadKeysFromLocID] in PKL_Tables.ini) a -2 entry means no dead keys and RAlt may be used as AltGr (CtrlAltlIsAltGr).
- Special keys such as Back/Del/Esc/F# used to release a dead key's base char and also do their normal action. Now they just cancel the dead key(s).
- A single layout entry of
VK
/VKey
orSC
/System
will set that key to itself, say, if it was set in the base layout and you don't want it remapped.
OTHER/NOTES
- There was a problem with DKs getting stuck after a special entry. Seems this was always the case?! A call to pkl_CheckForDKs( 0 ) somehow prevents it...
PKL[eD] VERSIONS:
- PKL[eD] v0.4.0: Transition to AHK v1.1
- A Refresh menu option with a hotkey (default Ctrl+Shift+5) in case the program hangs up in some way (stuck modifiers etc).
- Advanced Mode setting that shows 'AHK key history' and other menu options, plus more info in the About... dialog.
- Sensible dead key names for images and entries (e.g., @14 -> tilde) in a central file that layouts can point to.
- A PKL_Tables.ini file for info tables that were formerly internal. This way, the user can make additions as necessary.
- PKL[eD] v0.4.1: Transition to AHK v1.1 Unicode, using native Unicode Send and UTF-8 compatible files. Menu icons.
- Array pdics instead of the old HashTable code
- A base layout file can be specified, allowing Layout.ini to only contain entries that should override the base layout.
- PKL[eD v0.4.2: Help image layers, opacity, scaling, background color and gutter size settings. Help images can be pushed horizontally too.
- Separate help image background/overlay, so keys/fingering, letters/glyphs and Shift/AltGr marks can be in different images.
- PKL[eD] v0.4.3: Scan and virtual key code modular remapping for layouts and Extend, making ergo and other variants much more accessible.
- Ergo and other mods can be played over a few existing base layouts.
- PKL[eD] v0.4.4: Help Image Generator that uses Inkscape (separate download) to generate a set of help images from the current layout.
- A shorthand notation in EPKL_Layouts.ini to specify KbdType (ISO/ANSI), CurlMod and ErgoMod with the layouts.
- PKL[eD] v0.4.5: Common prefix-entry syntax for keypress/deadkey/extend. Allows, e.g., literal/deadkey release from Extend.
- Layouts, Extend and dead keys now support the same prefix-entry syntax, parsing "%$*=@&" as first character specially.
- The "&" prefix denotes literals/powerstrings found in a separate file. These may span more than one line.
- There's a string file specified in the Layout.ini, by default it's Files_eD_PwrStrings.ini
- The ligature name can be any text string. In layout entries, two-digit names are prettiest.
- Note that programs handle line breaks differently! In some apps, \r\n is needed but that creates a double break in others.
- SendMode can be selected for powerstrings (Input, Message, Paste from Clipboard) in the string file.
- To avoid stuck modifiers for long strings, a SendMessage() method was implemented.
- More generic dead key output: Same prefix-entry syntax as layout/Extend, parsing "%$*=@&" entries.
- Dead key base/release entries can be in 0x#### Unicode format in addition to the old decimal format. For base keys, the syntax must be exact.
- Examples: "102 = ƒ" is possible instead of "102 = 402". For a glyph not shown in your font such as Meng, "77 = 0x2C6E" (or 11374 still).
- Should be easy to import MSKLC dead key tables of the form '006e 0144 // n -> ń' by script (e.g., RegExp "0x$1 = 0x$2 ; $3")
- PKL[eD] v0.4.6: The base layout can hold default settings. Layout entries are now any-whitespace delimited.
- pklIniRead() can have an altFile, such as "BasIni". For BasIni/LayIni, .\ and ..\ point to their own and mother directories.
- Read most layout settings apart from remaps from the base layout if not found in the main layout.
- ONHOLD: Look for backup bgImg/extImg/dkImg in BasIni after all? If using an ANS base file for an ISO layout, it looks silly. But better than nothing?
- Requiring Tab delimited layout entries was too harsh. Now, any combination of Space/Tab is allowed. For Space, use ={Space}.
- PKL[eD] v0.4.7: Multi-Extend w/ 4 layers selectable by modifiers+Ext. Extend-tap-release. One-shot Extend layers.
- Multi-Extend, allowing one Extend key with 2 modifiers (e.g., RAlt/RShift) to select up to 4 different layers. Ext+Mod{2/3/2+3} -> Ext2/3/4.
- Ext2 is a NumPad/nav layer w/ some useful symbols. Ext3/Ext4 are one-shot string layers but mostly to be filled by the user.
- Dual-role tap-release Extend key. Works as Back on tap within a certain time and Ext on hold. Set the time to 0 ms to disable it.
- ExtReturnTo setting to allow one-shot Extend, e.g., for strings. Can for instance return from Ext3 to Ext1.
- PKL[eD] v0.4.8: Sticky/One-shot modifiers. Tap the modifier(s), then within a certain time hit the key to modify.
- Settings for which keys are OSM and the wait time. Stacking OSMs works (e.g., tap RShift, RCtrl, Left).
- NOTE: Mapping LCtrl or RAlt as a Modifier causes trouble w/ AltGr. So they shouldn't be used as sticky mods or w/ Extend if using AltGr.
- Powerstrings can have prefix-entry syntax too now. Lets you, e.g., have long AHK command strings referenced by name tags in layouts.
EPKL VERSIONS:
- EPKL v1.0.0: Name change to EPiKaL PKL.
- Moved ./PKL_eD -> ./Files folder. Languages are now under Files.
- Bugfix: A '--' entry in Layout.ini didn't overwrite the corresponding BaseLayout.ini entry.
- EPKL v1.1.0: Some layout format changes. Minor fixes/additions. And kaomoji! d( ^◇^)b
- Fixed: DK images were gone due to an error in the EPKL_Settings .ini. DK images also didn't work for some layouts.
- Fixed: Sticky/One-Shot mods stayed active when selecting Extend, affecting strings if sent within the OSM timer even when sent with %.
- New: A set of 30+ Kaomoji text faces in the Strings Extend3 layer. Help images included. ♪~└[∵┌]└[・▥・]┘[┐∵]┘~♪
- New: Hungarian Cmk[eD] locale variant.
- New: Zoom and Move hotkeys for the help image, cycling between image sizes and positions. Set e.g., imgZoom = 60,100,150 (%) in EPKL_Settings.
- Tutorial on making a layout variant in README. How to make and activate a layout, changing locale, remaps and a keys mappings.
- 'Spc' and 'Tab' layout mappings, sending {Blind}{Key}. Makes for compact layout entries for the delimiting whitespace characters.
- Direct Extend key mapping, e.g., for CapsLock use 'SC03A = Extend Modifier' instead of the old extend_key setting.
- Extend layers can be set as hard/soft in the _Extend file. Soft layers follow mnemonic letter mappings, hard ones are positional (like my Ext1/2).
- The Curl(DH) Ext+V may still be mnemonic/soft instead of positional/hard (^V on Ext+D). [v1.1.3: Use
mapSC_extend = V-B,
before AWide/Angle mods.]
- The Curl(DH) Ext+V may still be mnemonic/soft instead of positional/hard (^V on Ext+D). [v1.1.3: Use
- BaseLayout files are now at the same tree level as layout folders instead of inside one of them.
- EPKL v1.1.1: Some format changes. Minor fixes/additions. Tap-or-Mod keys (WIP).
- New: Tap-or-Modifier a.k.a. Dual-Role Modifier keys. Work-in-progress, not working well for rapidly typed keys yet.
- To make a ToM key, specify its VK layout entry as VK/Mod, where 'Mod' is a modifier name. The rest of the line can be any valid entry.
- The Help Image Generator can mark ToM keys (state 0 and 1) with a background symbol.
- The Extend key can be set the old way as extend_key in [pkl] (but no layout entry is needed anymore!), as 'Ext Mod' or as ToM, e.g., 'VK/EXT VKey'
- Modifiers can be referred to by the first letters of their name so, e.g., 'LS' and 'LSh' both point to LShift. Also, VK or VKey = VirtualKey.
- Unicode points can be sent by the ~ prefix; a ~#### entry sends the U+#### character as used in MSKLC file entries.
- The shiftStates layout entry is now in the [layouts] section of Layout.ini, spaced out so entries have more room and are clearer.
- Since Space/Tab are used to delimit layout entries, there are now special '&Spc' and '&Tab' PowerString entries for them.
- Dead key abbreviations are now by code point instead of numbered, as in MSKLC. Example: The .klc entry 02c7@ is a caron DK; in EPKL it becomes @2c7.
- Added a Compile_EPKL.bat file that compiles the source code by running AHK2Exe with default settings.
- Fixed: HIG made a state8 image of semicolons. This was due to the SGCaps states (8:9) being added unnecessarily. (つ_〃*)
- Also fixed some minor HIG bugs related to hex dead key values etc.
- New: Tap-or-Modifier a.k.a. Dual-Role Modifier keys. Work-in-progress, not working well for rapidly typed keys yet.
- EPKL v1.1.2: Multifunction Tap-or-Mod Extend with dead keys on tap. Janitor inactivity timer.
- Dead keys on Extend key tap. Examples: Tap {Extend, n} for parentheses with positioning. {Ext, z/Z} Undo/Redo. {Shift, Ext, letter} for kaomoji.
- Sticky Shift works to select Extend dead keys, and stays active. If you want the shift-P kaomoji tap {Shift, Ext} then P quickly. If not, wait.
- For InputRaw/Send/AHK/Blind/Unicode/DeadKey/PowerString entry prefixes, both the old %$*=~@& or →§αβ«Ð¶ (AltGr+Shift+ISABUDP) work now.
- Direct dead key entries in the format <#> = work too. If the char is an uppercase version, append a plus (<#>+).
- "Janitor" inactivity timeout setting (e.g., 2 s) to release any stuck modifiers. These can happen with advanced usage.
- IniRead can now handle UTF-8 .ini files (but not UTF-16) allowing Unicode in all entries.
- The EPKL.exe binary file is no longer version controlled. It can be compiled using the .bat file but is also provided with each release.
- EPKL v1.1.3: The LayStack, separating & overriding layout settings. Bugfixes. More kaomoji.
- The downloadable release asset .zip file now contains all files needed to run EPKL. No Source/Other/Data nor .bat/.git. files.
- The Kaomoji dead key now outshines the Extend layer with a related entry for each shifted letter/symbol, e.g., d( ^◇^)b vs (b ̄◇ ̄)b.
- An EPKL_Layouts_Default .ini file has been split off from the EPKL_Settings .ini so the layout definitions have a file of their own.
- If present, an EPKL_Layouts_Override.ini file will take precedence. In the future, this may be generated by a GUI panel.
- Several mappings and settings common to most layouts are now in the Layouts_Default file. This includes the Extend modifier mapping.
- The LayStack [ mainLay, baseLay, LayOver, LayDef ] can be used for most mappings and layout info, including Extend and DeadKey overrides.
- Added Layout Type (eD or VK) and Other Mod (e.g., Sym) shortcuts to the Layouts.ini file.
- The 'Sym' (;>' />=>- cycles) symbol key rotation mod I'm testing is available as a remap.
- The CurlM/DHm variant of the Curl(DH) mod is available through the remap 'Curl-DHmMod'; it isn't available for most premade layouts though.
- Added eD/VK Colemak Curl(DHm) only layouts. Used CurlM/DHm here, to support ortho boards. Ortho help images are on the TODO list.
- Fixed: The Extend modifier in the BaseLayout didn't work so most layouts didn't get Extend before adding it to their Layout.ini manually.
- Fixed: From PKL[eD] v0-4-5, DK+Spc didn't release the base accent as Spc was prefixed. Now, (&)Spc and {Space} are turned into a space glyph.
- Fixed: Some kaomoji with ^ or ` in them would get confused - (=・ω・^^=)丿 - due to insufficient handling of OS dead keys.
- Fixed: Ensured that a quickly used Extend press isn't open for re-use as an Extend tap! Example: Ext+Space, then quickly E.
- Fixed: The janitor timer kept resending mod up strokes every # s. Now it's once only after recent keyboard activity.
- Minor: Made a bool() fn to use bool(pklIniRead()) instead of a dedicated pklIniBool().
- Tested: The LAlt key (SC038) can work as Extend Modifier, just like any other key can. (Remapping another key to LAlt can still be tricky.)
- EPKL v1.1.4: Sym mod and Dvorak layouts. HIG updated for new Inkscape. Unified VK codes for layouts. Mapping/setting tweaks.
- Three Sym(bol) mod variants: Improving quote/apostrophe (Qu), Minus/hyphen (Mn) or both (QuMn). ANSI uses both. Choose between them in the Remap file.
- Premade Sym(QuMn) variants for VK/eD Colemak vanilla and CAW.
- Dvorak layouts, with suitable Curl/Angle/Wide ergo mods. These are my suggestions and not "official" variants for now.
- The HIG (Help Image Generator) has been updated for Inkscape v1.0 that's finally out! All images are now created in one call, a lot faster.
- Also tweaked the HIG for Co_## KLM key codes since the image template doesn't have the underscore for these codes.
- My KLM QW_## codes found in the Remap file may replace VK codes in layouts.
- All BaseLayout files are now unified for KbdType by replacing ANS/ISO specific OEM_# VK codes with KLM ones.
- Added a KbdType setting in the layout files, overriding the one used in layout selection.
- KbdType @K codes for ANS/ISO in LayStack files, further simplifying ISO/ANSI conversion. (For baseLayout, mapSC_, img_Extend#/DKeyDir/bgImage.)
- Keys can now be disabled by '--' or VK mapped to themselves by VK(ey) as their first layout entry.
- Key state and dead key mappings can be disabled using '--' or '-1' entries. Thus an entry can be removed in the LayStack.
- Remap cycles can consist of minicycles separated by slashes, like this: | a | b / c | d | e | to remap a-b and c-d-e separately.
- Instead of special '_ExtDV' remaps for Extend Ctrl+V to follow V under CurlDH, now prepend the mapSC_extend remap with 'V-B,'.
- All mapVK_mecSym (ANS2ISO/ISO2ANS) mappings removed from Layout.ini files. Still left in BaseLayout files as an example.
- Set the help image refresh timer a bit faster. Seems to help for Extend2, but not for Tap-Ext Kaomoji DK nor the initial help image?
- Three Sym(bol) mod variants: Improving quote/apostrophe (Qu), Minus/hyphen (Mn) or both (QuMn). ANSI uses both. Choose between them in the Remap file.
- EPKL v1.1.5: Tarmak Curl(DHm) w/ ortho images. Suspending apps. Language tweaks, fixes.
- The EPKL_Layouts_Override file is no longer tracked. Instead, there's an Override_Example file you can copy/rename/edit. Thus, your changes are kept over updates.
- Added Tarmak-DH(m) alias Curl(M) for Ortho boards. There's a line in the EPKL_Layouts files for the Tarmak steps with DHm, but you can also use the shortcut syntax.
- You can now list "suspendingApps" in Settings that automatically suspend EPKL when active. Specify by exe (X), window class (C) or any other AHK title match method.
- To see the AHK window class and other info about the currently active window, there's now a hotkey (default Ctrl+Shift+0).
- The janitor timer now handles suspending and/or exiting by the suspendTimeOut and exitAppTimeout settings. As before, set these to 0 to ignore them.
- The About hotkey is now shown in the tray menu, and toggles the About... GUI on/off.
- Image opacity hotkey (default Ctrl+Shift+8), toggling between opaque and transparent (by setting) help images.
- Moved EPKL specific string settings to the language files. Added a few languages (Italian, Norwegian Bm/Nn).
- Multi-ID locale variants can be addressed by their component. So for French, either Be Ca or Fr would point to the BeCaFr variant. Specified in the Tables file.
- Added the Cmk-eD-Pl ANSI CAW Polish variant designed by Kuba Wiecheć, Colemak forum user Wiechciu. It swaps Z and V from ANSI Cmk-CAW, and adds żŻ to the Z key.
- Added the QUARTZ pangram layout (Quartz/glyph [job];vex'd cwm,finks.), as a joke! I used a Wide mod for it, but beware that this is NOT a good layout! ╭(๑•﹏•)╮
- Fixed: Local on/off icons were broken since the LayStack (v1.1.3)
- Fixed: Help image didn't work if not shown initially, and might become an icon on the first minimize. Now it's shown once and if necessary toggled off again.
- Fixed: Sticky Shift didn't get reset by the next typed key on VK layouts, leading to MULtiple SHifted characters.
- Made Compile_EPKL.bat stop EPKL before compiling so the .exe can be overwritten, and rerun EPKL afterwards.
- EPKL v1.1.6: New Curl-DH standard! EPKL For Dummies. KLM key codes. Extend fixes. AltGr layouts for Es/It, and Pan-Germanic locale variants.
- Colemak-DH(m) (M on the home row) is now the Curl(DH) standard. The 2017 DH standard (K on the home row) is now named DHk in the Remap file. Files are updated.
- Added a link to the useful "EPKL For Dummies!" guide by Torben Gundtofte-Bruun in the README. Also some images and text updates, and a new README for the Files.
- Like VK codes, SC### scan codes in layouts & Extend can be replaced by the KLM Co or QW codes found in the Remap file. These are more intuitive and user friendly.
- For VK entries, vc### is a synonym for the QW### KLM code. I felt that it makes sense to distinguish between SC and VK this way.
- Fixed: Shift+Spc didn't send a shifted space, which should scroll up in most browser windows. Now, Spc is sent Blind.
- Fixed: The first Tap-or-Mod Extend key press didn't take if within the ToM timer term. An initializing call to setExtendInfo() solved the problem.
- Fixed: Extend mods such as
{Ext+S} = Shift
pressed quickly w/ ToM Ext often led to stuck mods. Now they're only depressed/released for each Extended key press. - Replaced some Loop Parse commands with more modern For loops, and made pklIniSect() return a row array for For loops. Let pklIniCSVs() take a specified separator.
- Added EsAlt and ItAlt for users who prefer AltGr to DKs. Es/It have áéíóú/àèìòù on AltGr+aoeiu, and some tweaks to fit in other symbols. Es_ANS has ñ on AltGr+n.
- Made the German and Scandinavian (De, DkNo & FiSe) Pan-Germanic, with easier access to each others' letters (De has ÆØÅ on AltGr+AOU; DkNo has ÄÖÜ etc).
- Tweaked a few AltGr mappings in the Vi and Hu laoyuts to better take care of lost symbol mappings.
- Added a setting that makes HIG delete its temporary files dir after generation. The options are 0=no, 1=paperbin, 2=delete.
- Local icons for Ru, Bg etc weren't working if there was an icons_OnOff entry in the LayStack. Now, local on/off icons take precedence.
- Help Image Generator reworked. It can now take non-numeric entries. For DKs, it marks strings as ellipses and prefix syntax as for instance '·¶·'.
- Currency dead key reworked. Several symbols added, most duplicates removed.
- Fixed: Help images didn't always show on rapid dead key activation. Added a help image refresh (if the image is active) whenever a DK is activated.
- Tip: Help images can be shown on other monitors using an extended workspace, by adjusting the margins to negative values. See the Settings file.
- EPKL v1.2.0: Layout/Settings UI.
- Layout/Settings GUI panel to help newcomers get into several of the powerful options EPKL offers.
- The Layout Picker UI can be used to select any existing layout variant combo in the Layouts folder.
- When a Main Layout, Layout Type and Keyboard Type are chosen, existing Variants and Mods for that combo are shown.
- Upon submitting, if a Layouts_Override file isn't found one can be created based on the
_Example
file. - A layout line is then written to the top of the
[pkl]
section of the Override file. This line will take precedence on the next Refresh. - Old UI generated lines of the same type are commented out and if there are many of them (>4) the oldest ones get deleted.
- The Key Mapper UI reads KeyLayoutMap (KLM) names from the Remap file. Keys not in the selection box may be edited manually into the text fields.
- Select row then code to remap, then the same for the VK code that you're mapping to. Then mapping type. Finally, edit any state mappings etc. manually.
- For most modifiers, you can select Left/Right or use the generic mod. The modifier is used in Mod, Tap-or-Mod (ToM) and MoDK mappings.
- The mapping is written into the
Layouts_Override
file. If that key is also mapped in your (Base)Layout.ini, write the line toLayout.ini
or it won't work. - Added a
Write to Layout.ini
button to the KeyMapper. Such mappings will override other LayStack mappings by writing to theLayout.ini
file.
- The Settings UI lets you choose between several EPKL settings. It shows their current value and any same-line comments. Edit their value and submit.
- The UI-adjustable settings have to be in the
Settings_Default
file and specified in the "setInGUI" entry of theEPKL_Tables.ini
file. - To allow the Settings UI to work, EPKL can now use a Settings Override/Default stack (like with the Layouts files) instead of just
EPKL_Settings.ini
.
- The UI-adjustable settings have to be in the
- The ߧ/þÞ/ŋŊ ligatures from the Colemak-eD AltGr layers were added to the RingAbove-Lig dead key as spares.
- Moved Cmk-eD/VK as subdirs under a Colemak folder, like other layouts are organized (
Layouts\LayMain\3LA-LT[-LayVar]_KbT[_Mods]
). - The Tarmak layout folders were also renamed to use the standard format. Tarmak step # is now a Tm# Layout Variant.
- The layout shortcuts for EPKL_Layouts files were tweaked somewhat, renaming Variant from
@L
to@V
and making the underscore before@K
explicit. - Switching Slash and Backslash for Wide modded Extend brings the WheelLeft/Right keys together. Used it for Colemak-ISO-CAWS. Less intuitive for (C)AWide Ext2.
- Added a
LayMain(\3LA)
setting and@L
shortcut for the main layout in the Layouts files. It may specify a 3-Letter Abbreviation (3LA) for subfolder names. - If not set directly, the 3-Letter Abbreviation is found from the Tables file. Failing that, the three first letters of LayMain are used.
- Renamed the KLM key code
_DT
(OEM_PERIOD) to_PD
and_EQ
(OEM_PLUS) to_PL
for better compatibility with the actual VK names. Also updated the HIG files. - Added a 'hideImageState' setting to hide certain help image shift states. Some users may want only AltGr, Extend and dead key images to show.
- Remaps and RemapCycle sections are now allowed in the LayStack. See the
_Test\Cmk-eD-Nyfee_ANS_CurlAngle
layout for an example.- LayStack Remaps and cycles will only be checked for if their sections are present in
Layout.ini
. This is to avoid slowing down other layouts. - The Nyfee Colemak-DH mods were added to test LayStack remaps. His mods move
Z W X C F K (V)
and the Bracket/Minus/Equals keys.
- LayStack Remaps and cycles will only be checked for if their sections are present in
- Detection of current system layout VK codes through GetKeyVK().
- This makes
key = VKey
mappings work as intended, enabling for instance Extend to see and use a key without changing its system layout mapping. - Added "System-VK" throughput layouts for Extend etc. users using VKey mappings. Ergomaps would also work on it. One could also remap some keys with states.
- This makes
- Non-Scandinavian installed ISO layouts such as the UK one, should now get the right VK codes detected for OEM_# symbol keys.
- If the underlying system layout is changed while running EPKL, for now you should Refresh EPKL to get the codes reread correctly.
- The old way of specifying VK remaps from the default KLM ANSI-based codes should still work, but shouldn't be neither necessary nor advisable anymore.
- QWERTZ and especially AZERTY are special in that they require some letter remaps too. There are remaps for them in the Remaps file but no layouts using those.
- Fixed: If a remap (cycle?) wasn't mapped to a cycle, it could lead to an infinite loop in ReadRemaps().
- Fixed: Some Ext-Shift presses would get lost, especially after having pressed Ext-Ctrl.
- Reworked extendKeyPress() to avoid this. Also let the Janitor clean up idle Ext-mods to be sure.
- Reworked Extend modifiers further, to send with the AHK prefixes
+^!#
instead of holding down modifier keys. Seems smoother. Also, releasing Ext sends mods up. - Updated the non-Wide Sym and ANSI CAWS to the latest versions. ISO and ANSI are the same now. The non-Wide variants swap brackets with minus/plus.
- Cz (Czech) ANSI variants. With no ISO key for Ůů, it was mapped to AltGr+Uu. There's optionally a map line to swap J and Z if desired, but it's non-standard.
- EPKL v1.3.0: Compose/Completion and Repeat keys.
- Repeat key: Set any state mapping to
®®
to make that entry repeat the previous key. Good for avoiding same-finger bigrams. - Compose/Completion key: Set any state mapping to
©<name>
to use it for composing up previously sent characters using specified tables.- The ISO key's unshifted state has been set as a Compose key (
©Def
) by default, editable inEPKL_Layouts_Default.ini
or the LayStack. - Compose tables are kept in a specified file, by default
Files\_eD_Compose.ini
. Each named key has a list of tables to use. - As a Compose key, this is like a post-hoc version of the famous Linux Compose method. It's a very powerful tool for producing new output!
- Instead of pressing the Multi/Compose key before a sequence, in EPKL you press the sequence then Compose.
- You can get, say, é by pressing e,',Compose. The
e'
sequence is deleted first.
- You can get, say, é by pressing e,',Compose. The
- As a Completion key, the previous input is kept and added to. This is specified by the tables entry in the Compose file.
- This is handy for making common n-grams easier. Some Colemak examples are: E-comma, UE, SC, Que/And/The/Ion.
- By default the method will look for the longest possible sequences first. You can adjust this behavior in the Compose file.
- Compose key entries can be any Unicode text, or even use EPKL prefix-entry syntax to do pretty much anything. Backslash escapes are allowed.
- Note: VK mapped keys and ## mapped states can't be used for composes, as EPKL can't know what their output is. E.g.,
88 ⇒ ∞
w/ ## numbers. - The standard Linux X
en_US.UTF-8
compose file was imported toFiles\_eD_Compose.ini
. Only entries starting with<Multi_key>
were used. - You can compose with any single-character input like dead key releases and AltGr mappings. So using the x11 compose, e.g.,
~(α
⇒ἇ
. - Backspace pops the last character from the Compose queue so you can correct a mistake and write the right sequence.
- See the
_eD_Compose.ini
file for more examples and explanations.
- The ISO key's unshifted state has been set as a Compose key (
- Compose table import module: Converts actual Linux tables like /usr/share/X11/locale/en_US.UTF-8/compose (~5000 lines) to EPKL Compose.ini entries.
- Composing Linux key sym names are translated to their U####[#] Unicode hex values as .ini keys, using a keysym file like the X keysymdef.h one.
- The keysyms.txt file by Dr Markus Kuhn uses proper Unicode.
- Moved layout variants into their own folders to reduce clutter, and for better variant documentation placement. Updated the Layout/Settings GUI accordingly.
- Layout additions:
- Added Nyfee's ColemaQ mod and NotGate's ISRT alias IndyRad layout, as ANSI Cmk-CA mods in the
_Test
folder. Nyfee's mod has his own Sym mod included. - Added the Cmk-DpgH mod using SteveP's
D>P>G
loop which leaves the left hand bottom row alone. It's considered a secondary, somewhat inferior variant. - Added Michael Dickens' MTGAP layout as an eD base layout, and some ergo mods for it. There are many MTGAP variants; I used the "main 30 keys" one.
- April's Foal! The Foalmak layout is an April Fool's joke layout by Semi at the Colemak Discord. It's still better than QWERTY, heh. And it's got nice images!
- Added Nyfee's new Colemak-QI mod as a Colemak variant, CAS & CAWS modded. Also the "extra mile" QI;x mod as
_Test
layouts like before.
- Added Nyfee's ColemaQ mod and NotGate's ISRT alias IndyRad layout, as ANSI Cmk-CA mods in the
- Layer/variant additions:
- Added some symbols to the RingAbov-Lig (ring symbols), Stroke-Bar (ballot boxes on s/v/x), Macron (trigrams on 0-7) and DotAbove (dice on 1-6) dead keys.
- Added the ijIJ digraphs and ijIJ bigrams to the Nl layouts, on the
OEM_102
"ISO" key and AltGr+iI, respectively. - Added a full set of CAWS locale variants.
- Added (Curl)AngleSym Colemak-eD variants. The non-Wide Sym variant now keeps Plus/Equal next to 0 and brackets above another as in the Wide variants.
- Added a Reset button to Layout/Settings. It deletes all UI-made lines for the current setting in the Override file, including commented-out UI lines.
- Separate BaseLayout for the Greek (Gre) and Kyrillic (Kyr, Ru/Bg) scripts. This removes the need for full mappings in layout files. Bg keeps the necessary mappings.
- Fixed: Minor bug in which the Settings GUI wouldn't try to make a new Override file but just lead to a file read error instead.
- Fixed: After the Ext-mods rework, spamming modded Ext presses led to stuckness (~5 s for Ext+S+N). Afterwards, Extend got wonky, w/ Ext+S+T+N the arrow was stuck.
- Fixed: Layout settings didn't initially show type/variant/mod. Arrow cycling back/forth "removed" VK/variants. Selecting a valid combo removed the problem.
- HIG updated so shift state help images show parseable entries like bigrams correctly.
- New mappings for Ext-tap
wfpblu
.{Ext-tap,w}
opens Windows Explorer; useful since the Win+E shortcut may be compromised in Colemak due to a hardwired Win+L. - Updated the EPKL compiler to Ahk2Exe from AHK v1.1.27.07. Later versions are currently not fully compatible with EPKL source, causing trouble with AltGr.
- A
##
state entry now sends the key's VK## Blind. Good for, e.g.,Win+<number>
which doesn't work otherwise. Warning: Output will depend on your OS layout.- In particular, if you run a self-made MSKLC layout underneath in which letter and/or
OEM_
VK codes are wrong, the result will be odd. - Added a
BaseLayout_Cmk-eD-NoVK.ini
file with only direct state mappings. If the VK mappings cause you any trouble, point yourLayout.ini
to this one. - Cut back on VK ## letter mappings in
BaseLayout_Cmk-eD.ini
again, as these cause some chained dead key outputs like ự and ậ to be preceded by an unwanted space.
- In particular, if you run a self-made MSKLC layout underneath in which letter and/or
- Added DK images for ANS AWide and CAWS, in addition to the existing vanilla and CAW. For ISO, we already have Angle, AWide, CAW and CAWS.
- Reworked the
@
layout codes. ErgoMod/@E
is now HardMod/@H
, as Curl/DH and Sym are also ergonomic mods. LayMain is now@L
and the ergo mod ensemble@E
. - Tidied up some complex remaps like
SL-BS,V-B
for Ext. MadeExt-CAW(S)_@K
remaps instead. Ext1/2 images were also renamed/copied to be simpler and more consistent. - The SL-BS swap is good for
Extend-CAWS_ISO
, bringing the WheelLeft/Right keys together. Since Ext1 and Ext2 use the same remap, it wasn't done for AWide/CAW. - Background image files were renamed more consistently.
- Replaced the global PklHotKeyBufDn queue string with a global array.
- Mirrored Colemak BaseLayouts. The AltGr layer holds mirror mappings, and ergo mods can be used normally. The Sym mod may not be ideal for it.
- There's a separate base layout for Cmk-DH to make mirroring work as it should. Curl mod remaps should not be added to the resulting layout, just other mods.
- The AHK Send command sends active modifiers up before a sent character/string, and down after, before the final up as you release them physically.
- Specifically, after an
AltGr
key press AHK sends bothLCtrl
andLCtrl+Ralt
down/up. If this happens too fast, they may get jumbled. - Tried adding
{LCtrl Up}
to getAltGrState(), ~15 ms after{LCtrl Down}{RAlt Down}
. It did not fix the stuckLCtrl
problem. - Using the AHK v1.1.27
{Text}
mode avoids the firstLCtrl
, so it may help. - However, Text mode doesn't work with Win+Key shortcuts, so it's only used for single-glyph mappings on AltGr layers.
- Fixed: Earlier, if Win+v (Paste Clipboard) was pressed, the clipboard would often close again unless Win were released very fast.
- Specifically, after an
- Seems all the
LCtrl+RAlt
sending aroundAltGr
inpkl_SendThis()
wasn't necessary? It has been removed. - Added the
{Text}
mode (AHK v1.1.27+) to PowerStrings, and made it default. It's more reliable for special characters. - The
img_Positions
setting may define which help image positions are allowed. By defaultTL,TM,TR,BL,BM,BR
(Top/Bottom + Left/Mid/Right). - Made string matches case sensitive using StringCaseSense. Hope that didn't break anything...?
- Fixed: Win+Spc was broken in commit "Repeat and Compose keys" (506e5b8) 2021-06-14. It sent a space instead. The error was in pkl_Send().
- In the
EPKL_HelpImgGen_Settings
file, the BrutalMode setting governs whether the EPKL HIG moves generated images straight into the layout folder.- If this setting is true, generated images may overwrite any existing ones. Also, the
ImgGen_
temporary folder is deleted after use.
- If this setting is true, generated images may overwrite any existing ones. Also, the
- Repeat key: Set any state mapping to
- EPKL v1.3.1: Compose/Completion developments. Folder/file restructuring. Cmk Heb/Epo/BrPt/Nl variants, Ortho kbd types, Boo layout, Dvk-Sym.
- Prefix-syntax Repeat and Compose/Completion mappings. In addition to key states, you can now map Extend or DK mappings to ®®/®# or ©###.
- If mapping a ©### key to a DK release, it must be preloaded elsewhere. Map it to an unused state or Extend mapping to achieve this.
- Mapping a state to
®#
where # is a hex number will repeat the previous key # times. This is affected by modifiers, but not sticky ones. - The Repeat key now resends the last character, not the last key. Repeat used to be affected by modifiers and prone to errors.
- Single-char Compose output is pushed to the LastKeys queue, thereby allowing some compose chaining. Example:
g'a
→α
then'
→ά
. - Composing
U####[#]
where#
are hex digits, sends the corresponding Unicode character - Compose table entries in the LayStack files override those in the Compose file. Use sections for existing tables like
[compose_adding]
. - Remapped dead key combining accents to
© ø Ø
to account for the Compose key taking the place ofœ
in many cases, and NBSP being iffy. - Tidied up the Tarmak folders with icon and Extend image links to a
_Res
folder instead of local files - The img_HideStates setting can hide the
ext
layer image too, and even DK shift states specified asdk#
; # is a shift state (0,1,6,7). - The BaseLayout setting in Layout.ini can now take a
..\
syntax. - Added ANS-Orth/ISO-Orth Colemak-eD. Images are still row-staggered, but this should clarify which ergo mods are for which board types.
- The bracket-lift Sym mod (SymQM-Br) looks better on ortho boards than the standard (SymQM-LB). Images were made for both mod variants.
- Suspend by layout Locale ID. Should make EPKL work better for users of IMEs such as Korean, as they may conflict with non-QWERTY layouts.
- The suspendingLIDs setting uses 4-xdigit LID codes as found in the About... menu. Use the Locale ID, not the Language one.
- An
--
entry allows disabling EPKL hotkeys in theEPKL_Settings_Override
file. Earlier, you'd have to use an unused key likeSleep
. - Added homing-nubbed help image ModState overlays. For now, there's a "GreenBlob" set for non-Wide and Wide homing, some with FShui colors.
- Usage: In Layout.ini, change the
img_ModsDir = Files\ImgModStates\GrnBlob
setting by appending-HomeNubs[Wide][-FShui]
.
- Usage: In Layout.ini, change the
- Allowed links for layout images, so layouts that use the same images as others don't need to keep their own copies.
- Made DK images in a local
DeadkeyImg
dir work with the ones set inimg_DKeyDir
. This also alleviates the need to declare a DeadkeyImg dir. - Added the Boo (Dvorak-like modern) layout.
- Added a Programmer Dvorak Symbol mod, affecting the Number row plus remapping ]} → @^ and swapping '" ↔ ;:.
- Disclaimer: This is a Dvorak Sym mod inspired by the Programmer Dvorak layout by Roland Kaufmann. It does not claim to be that layout.
- For the Nl locale, the ISO key was reclaimed as Compose! Kept ij on the images. Note that composing ij/IJ makes the ij/IJ ligature.
- Also, a Compose completion was added so that i,© →
ij
.
- Also, a Compose completion was added so that i,© →
- Esperanto variant, based on Compose. Like the normal Colemak-eD but with composes for ĉĝĵŝŭ added.
- Compose key on X for ANSI, since X isn't used in Esperanto. For X, hit K, X or AltGrX.
- Added Hebrew layouts. See the
Cmk-eD-Heb
layout folder and the Forum Locale post. - Fixed: A CapsLock off is sent at startup to avoid CapsLock being stuck on after an EPKL refresh.
- Fixed: Using relative paths for icon files, multiple layout selections wouldn't show the correct icons.
- Fixed: Setting any mod in the EPKL_Layouts file would make layout shortcuts that don't use mods fail.
- Fixed: Subfolder structure added to LayMain for the Colemak and Tarmak layouts. Consistent naming scheme for all such subfolders.
- Fixed: The Layout Selector would show non-existing mod combos for, e.g., ANS if there was a KbdType like ANS-Orth present
- Fixed: Capitalized sequences didn't compose if followed by a lowercase version in the table. Example:
LJ Lj lj → LJ lj lj
;Lj
didn't happen. - Fixed: Pressing a DK twice released both its base characters instead of just one. Now only base char 0 (the s0 DK entry) is released.
- Prefix-syntax Repeat and Compose/Completion mappings. In addition to key states, you can now map Extend or DK mappings to ®®/®# or ©###.
- EPKL v1.4.0: Better Send for key mapping. ScanCode key mapping. Dual-function CoDeKey (Compose+Dead key).
- EPKL now sends separate KeyUp and KeyDown events for VK/SC mapped keys. Typing games and typing tests should work fine now.
- This is a pretty huge development, really! It's a step in the direction of gaming-friendly EPKL.
- Dual-function Compose/DK "CoDeKey": If a sequence isn't recognized by the Compose key, it becomes a dead key (@co0) instead.
- This is very nice for locale layouts' special letters. I've put mine next to my mid-board (ISO) Compose key for easy rolls.
- I've also made punctuation-plus-space home row mappings, ++ on the
NEIO;UY'-
keys. These are great on a thumb Compose key! - Several default X11 sequences cause trouble with this:
c+<letter>
(caron),b+<letter>
(breve),ng
for ŋ,ae
for æ etc.- I had to nuke/unselect most one-char composes/completions, to make sure we don't stumble over a sequence when wanting the DK.
- Some sequences were restored with a leading apostrophe, like for instance
'ng
instead of justng
for ŋ.
- It isn't on by default in case someone finds it overmuch. Turn it on with a
CoDeKeys
entry inEPKL_Settings_Override.ini
.
- Added a separate dead key for the Shift-Compose mapping,
@co1
. Using the CoDeKey © key, we can then have both @co0 and @co1.- For now, it points to the Ext_Command release table. Slight caveat: Its releases are Shift sensitive, so be mindful of Sticky Shift timing.
- A
CoDeKeys
setting in the Settings file determines which Compose keys are CoDeKeys. The keys themselves are defined in the Compose file. - A syntax for Sticky Mods, e.g., {Shift OSM} in mapping entries. Handy for one-shot Shift on CoDeKey entries, for instance.
- This syntax works with any prefix-entry
α* β=
(AHK code) entries. - This is necessary to use OSM Shift in a string with VK/SC mapped keys, as their Send methods don't cancel {Shift DownTemp}.
- This syntax works with any prefix-entry
- A new
ScanCode
/SKey
key mapping type, sending a key's scan code instead of the more complex VK mappings. This is more robust in some cases.- KLM names such as
QW_A
orqwBSP
are allowed for SC mapping, in addition to the traditionalSC###
. - Several keys like PgUp/PgDn etc were changed from VK to SC mapping. Keys may be SC mapped to themselves by mapping them just as
System
. - The
System
passthrough layout now works as intended, usingSystem
SC key mappings throughout. - You could even send vk## or vk##sc### entries using
SKey
-type mappings, as these mappings are compatible with all AHK key Send syntax. - Sending SC is safer in the case of keys that have both a normal and a NumPad version, as AHK by default sends the NumPad version.
- This was already fixed by adding the SC for the normal version of these keys when sent as VK. You can still send any vk##sc### combo.
- WARNING: SC-mapping may be less robust than VK-mapping vs AZERTY et al. For these, the VK-remap with EPKL's VK detection should be better.
- KLM names such as
- Compose can now work with VK/SC mapped keys. This allows you to compose accented letters etc with a VK/SC/System type layout.
- The GetKeyName(sc) function doesn't work with shifted output etc, so I used a DLL call to ToUnicodeEx.
- This worked, but had a side effect: OS Dead Keys now output, e.g.,
¨¨
(whereas before they did nothing), due to a GetKeyboardState call(?)
- A "Special keys" tab on the Settings GUI can define Caps key behavior, Compose keys and CoDeKeys.
- These can also be set using the Key Mapper tab and
.ini
file editing, but this way should be more clear for newcomers.
- These can also be set using the Key Mapper tab and
- Remaps in BaseLayout files are now fully respected, so a Remap section in the Layout.ini file is no longer mandatory for remapping variants.
- You can hide the images for a specific dead key, rather than dead key images in general. To hide all DK images, specify 'DKs' (WIP).
- Added an optional
«»
-enclosed display tag to the prefix-entry syntax, so help images can show any desired short string on a key.- Example: «,␣» α{,}{Space} ; Comma-Space (on @co0)
- Changed the Prefix-Entry prefix for Unicode points from
«
to†
to accommodate the new«»
HIG prefix. Plus, it looks nicer. Still using~
for it. - Help image entries more than one character long may be scaled by a
fontSizes
table entry in the settings file. - Dead key images can utilize a "disp0" entry that contains a string to be displayed on the key, enclosed in any non-space glyphs (like
«»
).- NOTE: Remember to restart EPKL before image generation when there are changes to DK images
- Inkscape calls by the HIG was split into batches ruled by a batchSize setting. My Inkscape couldn't handle more than around 80 files per call.
- You can have a hotkey run a debug/utility routine (in
_PKL_main.ahk
) of choice, by means ofepklDebugHotkey
andwhichUtility
in the Settings files. - Moved all HIG settings from their separate file into the Settings file: They'll be easier to find, and Settings_Override works on them.
- The "kaomoji" speech bubbles and other links are now PowerStrings, and their Compose and DeadKey entries updated.
- Fixed: Shifted state entries with an unshifted character would get the character shifted by sticky Shift. This is the case for Dvorak Sym.
- As a fix, the offending entries were given
→
prefixes so they're sent literally. - Note that Win+‹key› (here Win+number) shortcuts won't work with this kind of mapping. I don't know a fix that works in both cases.
- As a fix, the offending entries were given
- Fixed: The caron dead key in the MSKLC files was missing the important Čč entries.
- Fixed: Several language files had the wrong encoding so menus became full of
�
symbols. - Fixed: VK-mapped PgUp,PgDn,End,Home,Ins,Del and arrows had their NumPad versions sent as per AHK Send default, due to degenerate VK codes.
- ScanCodes are now added to the VirtualKey codes (VK21–28,2D–2E) so their normal versions (SC 149,151,14F,147,152,153 etc) are sent.
- Fixed: QWERTY-VK layouts pointed to the Colemak-VK BaseLayout_Cmk-VK without the Cmk-VK subfolder.
- Fixed: An end-of-line comment in the baseLayout entriy would cause the layout to fail.
- Prefix-Entry documentation updated, in main and Files README. Also added to the KeyMapper Help screen.
- Cmk-CAWS-eD MicroSoft Keyboard Layout Creator
.KLC
files inOther\MSKLC
, both w/ ISO-Angle and an ANSI-Angle(Z) mods. Builds in.zip
files.- Vanilla Colemak-eD also added to the MSKLC folder. The Vanilla layout is ISO/ANSI agnostic.
- Rearranged the Layouts_Default (and Override_Example) file so that there's a commented-out
;[pkl]
section for Tarmak, then a[pkl]
w/ the rest.- That way, you only have to uncomment the first
;[pkl]
to get Tarmak! Much simpler. Also, more settings can be uncommented and ready.
- That way, you only have to uncomment the first
- Tidied up the Tarmak layout files, using existing BaseLayout/remaps instead of explicit VK mappings.
- Separated the layout shorthand
@L
into LayMain (@L
) and LayPath (@P
). It's clearer, and you can use@L
as LayName in description strings. - Decided to support DK images and suchlike mainly for Cmk vanilla, CA and CAWS. I consider these the best and/or most popular combos.
- Dropped Cmk-CAW support for she sake of my own sanity; there are now links to CAWS DeadKey images in files.
- I don't think a lot of people use plain AWide today. And they can always generate their own images.
- Added the Semimak-JQ variant. It's a simple
Q > J > QU
cycle from the original. - Reworked the Greek Colemak locale layouts, replacing the rare diaeresis letters on Q and ISO with Tonos/Diaeresis DKs and the default Compose.
- Note that the Compose method allows accented/polytonic Greek letters to be written as sequences using punctuation.
- Added Dutch Colemak-eD ANSI (
Cmk-eD-Nl_ANS
) variants, as most Dutch users actually have ANSI and not ISO boards – the poor things... - Updated the German/De locale with the letter ẞ (capital ß). The § sign was moved to AltGr+P.
- Added palatal-hook letters to the ogonek-commabelow DK, as only the s mapping overlapped. Mapped ᶊ to ß (AltGr+s) for this DK.
- Also, Macron-Below on the Macron key, more special digits and several other new mappings. Reworked turnstiles on the Science DK.
- Added
FRST/WP
arrow symbols to the Macron DK.FRST
is an arrow cross,WP
left-right and up-down arrows. Single on unshifted, double on shifted and AltGr.- These arrow symbol mappings are geometrically mapped in a Colemak-centric way. For another layout, revision is desirable.
- EPKL now sends separate KeyUp and KeyDown events for VK/SC mapped keys. Typing games and typing tests should work fine now.
- EPKL v1.4.1: Timerless EPKL! State-2-VK mapping types. SwiSh & FliCK modifiers. Layout_Override.
- Timerless EPKL! All key press (processKey and runKey) functions and timers were replaced by simply calling keyPressed() and sending KeyUp directly.
- This should remove the last bit of sluggishness and possibly allow EPKL to work with more games and the like. It could be pretty huge!
- Critical priority was given to some functions to improve timing for OSMs etc.
- Be careful w/ Critical though; it may lead to hard hangs if added indiscriminately. An example is the last part of keyPressed().
- Got hard hangs on EPKL dead keys on initial tests and suspected the DK Input fn, but it's probably innocent.
- CSGO experienced stuck keys in stress testing before, using https://keyboardchecker.com/ to show it. He reports that it's fixed now.
- You can hybridize a state-mapped layout type into state/VK by appending "2VK" to its layType. Example: For eD-type layouts,
layType = eD2VK
.- This only affects the BaseLayout, so any mappings in Layout.ini will work as before. It allows, e.g., locale VK/State hybrids from existing state maps.
- In the Layout Settings GUI, you can only choose
eD2VK
whenever there is aneD
option. For any other state-map types, edit the layout setting manually.
- Two new modifiers: SwiSh and FliCK! SwiSh ("Swiss Shift") corresponds to the Windows SGCaps modifier, and FliCK ("Flip Cap Key") is custom.
- To get a SwiSh modifier for instance, just map a key like you would for any modifier, to
Swish Modifier
. - The SwiSh & FliCK modifiers are virtual, not physical like Shift/Ctrl/Alt/Win. They add 8 and 16 to the ShiftState, respectively.
- For ShiftStates in layout files, use hex values. Corresponding to the standard
0:1:6:7
plus SwiSh, are8:9:e:f
–a
is the Ctrl+SwiSh state. - SwiSh/FliCK modifiers can be made Sticky (one-shot) via the stickyMods setting, like other modifiers.
- SwiSh and FliCK were kindly sponsored by Antoine Olivier (Rastast at the Colemak Discord, IKLProject on GitHub)! Thanks a lot – sorry about the delay!
- To get a SwiSh modifier for instance, just map a key like you would for any modifier, to
- Added the possibility for a
Layout_Override.ini
file in the active layout folder, as a master override that avoids editingLayout.ini
directly.- This allows a non-version-controlled copy of your layout file changes.
- Added a new OS DeadKey detection routine
getWinLayDKs()
using a ToAscii DLL call; it returns -1 if the specified key/state is a Windows Layout DK.- It runs on init/refresh. It returns a dictionary of
{ SC:DK-ShiftStates }
, like `{ "SC003" : "6:7", } (if SC003 has DKs on states 6 and 7). - The old
Detect Dead Keys...
menu option was hidden and demoted to utility/debug routine #7.
- It runs on init/refresh. It returns a dictionary of
- Added BaseLayout for QWERTY VK. (QWERTY-eD still uses a remap from the Colemak-eD BaseLayout.)
- Makes the KeyMapper more intuitive, as you can use QW key positions directly instead of having to map from Co positions w/ the QWERTY remap.
- Robust
trayMenuDefault
setting. As before,#&
selects item by position – but it now ignores separators. Also, partial matches are allowed for text entries. - Fixed: SC/VK-mapping turned OS dead keys inactive, outputting either nothing or two accents.
- This happens when calling the ToUnicode DLL while a DK is active;
_composeVK()
did this to determine the output of a key/state. - Solution: Don't call ToUnicode if a DK! Both for the OS DK itself, and the next key press.
- The problem occurs using GetKeyName/VK/SC() too: These turn active OS DKs etc inert.
- Made a wrapper for the MapVirtualKey DLL to avoid this. Call
dllMapVK()
with "VK","SC","ord","chr" to get conversions as desired. - The GetKeyboardState DLL and GetKeyState() don't harm DKs. Maybe WM_CHAR from the PeekMessage DLL could've proved useful too.
- This happens when calling the ToUnicode DLL while a DK is active;
- Fixed: Compose and Repeat didn't register the
0
(zero) character. Right after startup, Repeat would print{¤}
. - Fixed: Repeat is counted in the LastKeys queue so it works with composing.
- Fixed: End-of-line comments in layout entries are now stripped, w/o harming semicolon state entries. These now have to be on the form
Tab-;-spaces-Tab
. - Fixed: When KeyMapper was used with an eD2VK layType, submitting to Layout.ini failed with an "Override file not found" error, looking for an eD2VK folder.
- Fixed: Holding down auto-repeating keys could lead to hotkey buffer overflow, making EPKL unresponsive. Especially when holding down Extend mousing keys.
- The first fix was to limit the HotKeyBufDn buffer array size to 24 entries, to avoid too many concurrent timers.
- KeyUp was put on a 1 ms timer like KeyDn had, to ensure it doesn't sneak past a last KeyDown of a repeating key.
- Eventually though, the whole timer system was removed to make EPKL timerless.
- Fixed: NumPadDot was state mapped as an explicit dot/comma key. This behavior is unintuitive, so it's been relegated to
EPKL_Layouts_Override_Example
.
- Timerless EPKL! All key press (processKey and runKey) functions and timers were replaced by simply calling keyPressed() and sending KeyUp directly.
- EPKL v1.4.2: Layout/Settings enhancements. Mapping additions and reworks.
- Reworked Settings GUI globals. Now these are initialized at startup, hopefully making GUI creation a bit faster.
- Also made an array of layout folders: Subfolders under "Layouts" contaning a "Layout.ini" file and fulfilling certain naming criteria.
- This way, no layout folder read nor FileExist checks are necessary at GUI creation/selection time.
- Instead of an array of Compose sequence lengths, now there's just
bufSize
for max length. Sequences are processed from longest to shortest. - More ways to reset the Composer queue. Backspace pops the last key as before. Del/Enter/Esc Ctrl+Back and AHK syntax (α prefix) now delete the queue.
- This fixes a problem with using powerstrings for Delete Word, as they would leave undesired characters in the lastKeys queue.
- ToM mappings required a VK code before the slash but an AHK modifier name after. Now, you can use any modifier alias (VK or KLM name).
- A template for implementing new layouts, under
Layouts\_Template
. See itsREADME
file for more info. - Using the NewLayout template framework, a few more modern layouts were added. Semimak(-JQ) and Canary were already in place.
- The APT(v3) layout by Apsu, with Angle, Wide and Sym ergo mods.
- The Sturdy layout by Oxey, with an Angle ergo mod. Wide and Sym ergo mods are WIP for Sturdy (and Graphite), for now.
- The Graphite layout by Richard Davison alias 'stronglytyped'. Also a keymap-friendly Graphite-HB variant (no shift state changes).
- The very similiar Gallium layout by Bryson James alias 'GalileoBlues'.
- With the Gallium & Graphite layouts, "Galliard" and "Gralmak" variants w/ symbol key mappings as in Cmk-CAWS.
- Added Ukrainian "Ukromak" (Cmk-Ukr), based on a commit by Grenudi (#92).
- Switched all Kyr script locale codes from 2-letter to 3-letter ISO codes (ISO 639-1 to 639-2): Ru-Rus, Uk-Ukr, Bg-Bul.
- The SymMn (only the MN loop) partial mod is now a named Remap. Fits layouts with no symbol in the QWERTY
P
position.- This includes Semimak, APTv3 and several other alternative keyboard layouts.
- Fixed: Several Layout Selector GUI bugs.
- Fixed a Layout Selector bug for Cmk (which uses a subdir), causing the loss of a backslash in the layout path.
- It was broken in commit "Reworked Settings GUI initalization " (12d964a) 2023-07-13, in the file
pkl_gui_settings.ahk
.
- It was broken in commit "Reworked Settings GUI initalization " (12d964a) 2023-07-13, in the file
- Fixed a Layout Selector bug that would allow an invalid KbdType to show up if another LayType had that KbdType.
- Any LayDir not starting with the LayMain's 3LA (usually the 3 first letters) is not shown in the Layout Selector anymore.
- Fixed a Layout Selector bug for Cmk (which uses a subdir), causing the loss of a backslash in the layout path.
- Fixed: HIG only made "state0.png" (really the last state) plus state0.svg.png (actual state0) instead of the state images it should.
- InkScape v1.3 (2023-07) had a bug affecting batch export. Fixed in later versions. The HIG works w/ the standalone v1.2.1 install.
- Tweaked the dialog GUI and several settings' names for the HIG, to hopefully be a little more descriptive.
- Reworked Ext-tap DK layers.
- The URL and BBC tags weren't universally useful, somewhat unintuitive and better solved as sequences anyway.
- Added WheelUp/Dn to Ext-tap, on the same keys as on Ext (Cmk W/R). Moves on Cmk:
Cap
Pp → Ll,^w
Ww → Pp,w³?
L → U.- This is handy for scrolling (web) pages, in conjunction with the other Ext/Ext-Tap MouseWheel and PgUp/Dn mappings.
- The NEIO
!,.?
Ext-tap mappings were unused: They work a lot better on CoDeKey due to Ext-tap ToM timing issues.- Considered something arrow-based like Ctrl(+Shift)+Arrows/Delete, but none of it felt really useful.
- Kept
!
for now, as it's the most unaccessible symbol. Moved^a #e #i +↓
etc around, added⌫ʷ
and left less accessible keys empty.
- Reworked Single-Entry key mapping. In addition to
vk|vkey
andsc|skey|system
,--|disabled
disables a key and<>|unmapped
leaves it alone.- The main purpose of
Unmapped
is to allow an Override file such asLayout_Override.ini
to instruct EPKL to leave a key untouched. - Added a
Single-Entry
mapping type in the KeyMapper, with these four "Map to..." flavors. - Changed the Special Keys CapsLock entry in the Settings GUI to
Unmapped
. This makes reclaiming the CapsLock key (at the user's loss) easier.
- The main purpose of
- Rewrote the Kaomoji mappings as PowerStrings, so they are easily and consistently useable both for Kaomoji DK mappings and Compose sequences.
- Tested whether GitHub Markdown can support
style="background-color:white;"
or similar html/MD- This could make EPKL layer images work with dark browser themes. Today those are shown as black-on-dark.
- Unfortunately, the result was negative. I found no solutions online; only plenty of complaints about this shortcoming of GF Markdown.
- A
runTarget
hotkey that by default opens or focuses on the main EPKL folder. Ctrl+Shift+7 was available, by moving the MoveImage Hotkey.- Any location, file or app can be set as the
openMenuTarget
. Files and folders are opened by their default programs.
- Any location, file or app can be set as the
- The menuIconList function from Source\Extras was internalized, callable as the "debug" function. It shows icons and their positions in any file.
- Reworked HIG image tags. Now, any
«##»
tag in a state/DK/Ext mapping is cut off and stored before the mapping is processed. - PwrStrings are now pre-read into memory at the first use of a PwrString. Hopefully, this will aid speed and reduce disk access.
- A
¢[Cmd()]¢
syntax useable within α/β AHK code. Sends the first part of the string, executes the specified command and then proceeds sending.- The pkl_exec() fn governs specified commands for sent strings; it could be expanded with several new AHK commands.
- For now, Sleep() and Run() are what I felt were most needed. Sleep() helps timing string parts, while Run() adds new mapping options.
- Using these new syntax possibilities, some Ext-tap mappings were added or improved.
- Reworked Settings GUI globals. Now these are initialized at startup, hopefully making GUI creation a bit faster.