For PortableKeyboardLayout on Windows
(PKL[edition DreymaR] by DreymaR, 2017-)
Info about DreymaR's Big Bag of keyboard trickery is mainly found on the Colemak forum:
-
The Big Bag main topic with better explanations and links.
-
Daughter topics for implementations, including the Big Bag for PKL/Windows one.
-
This repo implements most of my Big Bag for PKL, as layout and PKL .ini files.
-
It also adds my own PKL - edition DreymaR (PKL[eD]) with several improvements.
-
Big thanks to Farkas Máté, the AutoHotkey people, Vortex(vVv) and all other contributors.
-
Download a copy of this repo, for instance with its GitHub Download/Clone button (and then unzip the file you got).
-
The simplest way of running PKL is to just put the main folder somewhere and run PKL.exe any way you like!
-
PKL, being portable, doesn't need an install with admin rights to work. You must still be allowed to run programs.
-
I usually put a shortcut to PKL_eD.exe in my Start Menu "Startup" folder so it starts on logon, per user.
-
PKL can also easily be used with the PortableApps.com menu by putting its folder in a C:\PortableApps folder.
-
If the PortableApps menu is started on logon it can start up PKL for you too.
-
Choose a layout with your ISO/ANS(I) keyboard type, locale and Curl/Angle/Wide preferences, by shorthand or full name.
-
In PKL_Settings.ini, activate the layout(s) you want by uncommenting (remove initial semicolon) and/or editing.
- My shortcuts use the KbdType (@K) etc values but you could also type the path to a layout folder out in full
- The format is: layout = <1st layout folder name>:,<2nd layout folder>:<2nd menu entry> etc
- The repo contains executables for the original PKL as well as PKL[eD], and source code for both.
- Most of the layouts are now updated to PKL[eD] format though, so they'd need a little reconstruction for old PKL.
- To make many PKL_eD changes work, your PKL settings .ini and layout.ini files need extra settings.
These PKL files may take a little tweaking to get what you want. Remember, there are several parameters:
-
The PKL_Settings.ini file holds layout choices. The layout.ini files hold layout settings and mappings.
-
ISO (European/World) vs ANSI (US) vs other keyboard types
- These differ notably in the VK_102 key at the lower left, and some of the OEM_ key codes
- I haven't supported JIS (Japanese) etc so far - sorry
-
QWERTY vs Colemak vs what-have-you, obviously. Choose wisely!
-
Full/VK mappings: I've provided my own Colemak[eD] as well as 'VirtualKey' versions
- The 'VK' layouts just move the keys of your installed OS layout around, without other changes
- The [eD] layouts have their own Shift/AltGr mappings specified. You may mix types if you want.
-
Curl(DH), Angle and/or Wide ergonomic mods, moving some keys to more comfortable positions
- Angle/Wide affect the "hard" key positions in the layout.ini file, usually both for Layout and Extend
- Curl(DH) is Colemak/Tarmak specific and for the most part should not affect Extend
-
Extend mappings, using for instance CapsLock as a modifier for nav/edit/multimedia/etc keys. It's awesome!!!
-
In PKL .ini you can use a shorthand specifying KbdType, CurlMod and ErgoMod, or use the layout folder name directly.
-
In layout.ini you can specify in the [eD_info] section some remaps that turn one layout into a modded one, and more.
-
If you need to tweak some Extend mappings, they're now in a separate file usually found in the PKL_eD folder.
- For Scan Codes (SC###) and Virtual Key names (VK##) see below.
-
In the layout folder(s) you've chosen, you may edit their layout.ini files further if required.
- Check out that the ISO/ANSI OEM_# key numbers are right for you, or remapped with a VK remap.
- Help image specifications, Extend key, key mappings etc are in the layout.ini file.
-
Help images aren't always available with the right ergo mod and keyboard type, since there are so many combos.
- First, check around in some of the eD layout folders. Maybe there's something that works for you there.
- With Advanced Mode active, there is a Help Image Generator that can make images for the currently active layout.
- You have to have Inkscape installed, for instance from PortableApps.com, and point to it in the HIG settings file.
- I recommend making state images only at first, since a full set of about 80 dead key images takes a long time!
Here are the columns of a full key mapping together with a sample key – semicolon (QWERTY P) from one of my layout.ini files:
SC01a = OEM_3 0 ; : -- dk13 … ; QWERTY pP - dk_umlaut
SC = VK CS S0 S1 S2 S6 S7 ; comments
Where:
- SC & VK: Scan code ("hard code") & Virtual Key Code ("key name"); see my Key Code Table.
- CS: Cap state (default 0; +1 if S0/S1 are non-/shifted versions of the same letter; +4 for S6/S7)
- S#: Standard modifier states for the key: Unmodified, 1:Shift, 2:Ctrl (not often used), 6:AltGr, 7:Shift+AltGr...
Look in the PKL .ini files if you're interested! Much is explained there.
These hotkeys are found in the PKL settings file:
- Ctrl+Shift+1 – Display/hide help image
- Ctrl+Shift+2 – Switch layout between the ones specified in the settings file
- Ctrl+Shift+3 – Suspend PKL; hit again to re-activate
- Ctrl+Shift+4 – Exit PKL
- Ctrl+Shift+5 – Refresh PKL, if it gets stuck or something
Maybe all the layout files aren't quite updated with remaps yet. Check out base ones like Colemak-eD_ISO vs Cmk-eD_ISO_CAWide.
- Tech note: Running PKL with other AutoHotkey key mapping scripts may get confusing if there is hook competition.
Anti-madness tips for PKL file editing:
- In layout.ini: Always use tabs as separators.
- In Extend sections: Don't use empty mappings; comment these out. See my examples for advanced mappings like hotstrings!
- PKL_eD uses both .ini and source files that may be UTF-8 Unicode encoded.
- PKL_eD allows end-of-line comments (whitespace-semicolon) in .ini files, but the original PKL only handles them in layouts.
These changes are now implemented in PKL_eD:
- 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 'Key history...' and other menu options, plus more info in the About... dialog.
- Help image 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.
- A Help Image Generator that uses Inkscape (separate download) to generate a set of help images from the current layout.
- A PKL_Tables.ini file for info tables that were formerly internal. This way, the user can make additions as necessary.
- Sensible dead key names for images and entries (e.g., dk14 -> tilde) in a central file that layouts can point to.
- A base layout file can be specified, allowing layout.ini to only contain entries that should override the base layout.
- Scan and virtual code modular remapping for layouts and Extend, making ergo and other variants much more accessible.
- The settings/layout and Extend parts of PKL.ini are now split into separate files.
- There's a shorthand notation in PKL_Settings.ini to specify KbdType (ISO/ANSI), CurlMod and ErgoMod with the layouts.
I have many more PKL_eD changes on my wishlist, including:
- A timer that checks whether the underlaying Windows layout has changed (affects dead keys) - and fixes any stuck modifiers?
- Multiple Extend layers (NumPad, hotstring...).
- Sticky a.k.a. One-Shot modifiers: Press-release modifier, then within a certain time hit the key to modify.
- More flexible dead key output in general, allowing literal glyphs, ligatures and DK chaining (one DK may release another).
- A settings panel instead of editing .ini files.
Best of luck! Øystein "DreymaR" Gadmar, 2018-10