Hello! First, I'd like to thank you for this program. Second, for some reason, whenever I create help images for my custom keyboard, they do not generate properly. This is what I mean:
There is likely something wrong with the way I have configured things, but I've read the documentation, compared with other layouts, and messed around, and I just can't get it to work. I'd appreciate your help, or anyone's who knows how to solve this.
;; ================================================================================================================================
;; Layout Definition file
;; for EPiKaL Portable Keyboard Layout (EPKL) by Øystein "DreymaR" Bech-Aase (2015-), based on PKL by Máté Farkas (2008-2010).
;
;; - The Layout.ini file may point to a base layout as well as Extend and DeadKey table files.
;; - It can override BaseLayout and EPKL_Layouts mappings, add key remaps and other layout info.
;; - To use a layout, try the Layout/Settings dialog from the EPKL tray menu (or Ctrl+Shift+6).
;; - Another way is to edit the EPKL_Layouts .ini 'layout = ' line and/or Type/Mod/ID/etc entries.
;; - Alternatively, run EPKL in compactMode with the layout's files in the main program folder.
;; ================================================================================================================================
;
;; Base Layout file info: for Beakl-27
;; - This file defines a useable layout in the EPKL format.
[information]
layoutName = Beakl-27 (KLM/ISO/ANSI unified Virtual Key codes)
layoutCode = Beakl-27
localeID = 00000525
copyright = ...
company = ...
homepage = ...
version = 0.1
[pkl]
;; A layout may augment its base one. The Remap file contains ergo and other layout remaps.
KbdType = ANS
;;baseLayout = BEAKL-27\Layout.ini
;; The Extend/dkList/string files hold Extend, dead key and literal/PowerString definitions.
;baseLayout = Colemak\BaseLayout_Cmk-eD
remapsFile = Files\_eD_Remap.ini
extendFile = Files\_eD_Extend.ini
dkListFile = Files\_eD_DeadKeys.ini
stringFile = Files\_eD_PwrStrings.ini
cmposrFile = Files\_eD_Compose.ini
;; The "layout/soft" ScanCode map is for typing, the "extend/hard" one for Extend mappings.
;; The "mechanical layout" VirtualKey map is mainly for ANS(I)/ISO/JIS conversion.
mapSC_layout = ANS
;mapSC_extend = Ext-CAW-_@K ; Only "hard" (non-letter) mods. Extend Curl-DH moves Ext+V with V.
;; DreymaR's Cmk-IBM help images (5*14 keys @96dpi)
img_sizeWH = 812,282 ; (541,188 @64dpi)
;; DreymaR's compact help images (3*10 keys @48dpi)
;;img_sizeWH = 292,85 ; ISO-Angle 298. Ortho 276. Others 292.
;; Scaling factor for help images, in %. (96->64)dpi = 66.66%; (96->48)dpi = 50%
img_scale = 100
Background image (key caps etc) and a background color for the image panel
;; img_bgImage = Files\ImgBackground\Bg_Nice-Tinted_@K.png
;; img_bgImage = Files\ImgBackground\Bg_Simple-TopsOnly_@K.png
img_bgImage = Files\ImgBackground\Bg_FingerShui-eD_@K.png
img_bgColor = 999999
;; On/Off, Extend, Dead key and Shift state marker (e.g., MagBlob, GrnBlob) images
icons_OnOff = Files\ImgIcons\Q_
img_Extend1 = Files\ImgExtend\@K_Ext1.png
img_Extend2 = Files\ImgExtend\@K_Ext2.png
img_Extend3 = Files\ImgExtend\@K_Ext3.png
img_Extend4 = Files\ImgExtend\_Empty_Ext.png
img_DKeyDir = .\Cmk-eD\Cmk-eD_@K\DeadkeyImg
img_ModsDir = Files\ImgModStates\GrnBlob
[layout]
;; - These mappings override any key mappings in the _Layouts_ files.
;; - They may in turn be overridden by mappings in the current Layout.ini file.
;
shiftStates = 0 : 1 : 2 : 6 : 7 ; 8 : 9 : e : f
;; SC = VKEY CStat Base Shift Ctrl AltGr AGrSh ; SwiSh SwShS SwAGr SwAGS
QW_GR = vc_GR 0 @07e -- -- –- -- ; SC029: US `~ - dk_Tilde (ANS/ISO OEM_3/OEM_5)
QW_1 = 3 0 ## ! -- –- ¡ ; SC002: US 1! - dk_DotBelow
QW_2 = 2 0 ## @ -- -- ² ; SC003: US 2@ - dk_HookAbove/PalatalHook
QW_3 = 1 0 ## # -- -- ³ ; SC004: US 3# - dk_Horn/Tail/RetroflexHook
QW_4 = 0 0 ## $ -- -- £ ; SC005: US 4$ - dk_Currency
QW_5 = 4 0 ## % -- -- ‰ ; SC006: US 5% - dk_Greek(Mu)
QW_6 = 7 0 ## ^ -- -- ∂ ; SC007: US 6^ - dk_Circumflex
QW_7 = 6 0 ## & -- -- ¬ ; SC008: US 7& - dk_Caron
QW_8 = 5 0 ## * -- -- ∞ ; SC009: US 8* - dk_Ogonek/CommaBelow
QW_9 = 9 0 ## ( -- -- · ; SC00a: US 9( - dk_Breve
QW_0 = 8 0 ## ) -- -- ° ; SC00b: US 0) - dk_RingAbove/Lig
QW_MN = vc_MN 0 - _ -- -- ± ; SC00c: US -_ - dk_Macron (ANS/ISO _MINUS/_PLUS)
QW_PL = vc_PL 0 = + -- -- ≠ ; SC00d: US =+ - dk_DblAcute/Sci (ANS/ISO _PLUS/_4)
QW_Q = Q 1 q Q -- –- „ ; SC010: QW qQ
QW_W = H 1 h H -- –- “ ; SC011: QW wW
QW_E = O 1 o O -- –- ” ; SC012: QW eE
QW_R = U 1 u U -- –- ¶ ; SC013: QW rR
QW_T = X 1 x X -- –- Ŋ ; SC014: QW tT
QW_Y = G 1 g G –- Ʃ ; SC015: QW yY
QW_U = C 1 c C -- –- Ł ; SC016: QW uU
QW_I = M 1 m M -- –- « ; SC017: QW iI
QW_O = R 1 r R -- –- » ; SC018: QW oO
QW_P = Z 1 z Z -- –- … ; SC019: QW pP - dk_Umlaut (ANS/ISO _1/_3)
QW_LB = vc_MN 0 - _ -- -- –- Å ; SC01a: US [{ - eD ## (ANS/ISO _4/_6)
QW_RB = vc_RB 0 @07e -- -- -- –- Æ ; SC01b: US ]} - eD ## (ANS/ISO _6/_1)
QW_A = Y 1 y Y -- –- α ; SC01e: QW aA
QW_S = I 1 i I -- –- ™ ; SC01f: QW sS
QW_D = E 1 e E -- –- § ; SC020: QW dD
QW_F = A 5 a A -- –- Þ ; SC021: QW fF
QW_G = . 0 . -- -- –- Ð ; SC022: QW gG
QW_H = D 5 d D -- –- Ħ ; SC023: QW hH
QW_J = S 1 s S -- –- ↑ ; SC024: QW jJ
QW_K = T 1 t T -- -- ← ; SC025: QW kK
QW_L = N 1 n N -- —- → ; SC026: QW lL
QW_SC = B 1 b B -- -- ª ; SC027: QW ;:
QW_QU = vc_SC 0 : ; -- -- ′ ; SC028: US '" - dk_Acute/Superscript (ANS/ISO _7)
QW_BS = vc_BS 0 -- -- -- -- ¦ ; SC02b: US \| - dk_Grave/Subscript (ANS/ISO _5/_2)
;QW_LG = vc_LG 5 œ Œ -- -- Ø ; SC056: US <> - eD ## (ISO OEM_102)
QW_Z = J 1 j J -- -- Ʒ ; SC02c: QW zZ
QW_X = vc_SL 0 / ? -- -- ‡ ; SC02d: QW xX
QW_C = vc_CM 0 , ! -- -- ¢ ; SC02e: QW cC
QW_V = K 1 k K -- -- γ ; SC02f: QW vV
QW_B = sc_QU 0 @0b4 " -- -- β ; SC030: QW bB
QW_N = W 1 w W -- -- Ç ; SC031: QW nN
QW_M = F 1 f F -- -- ↓ ; SC032: QW mM
QW_CM = L 1 l L -- -- ≤ ; SC033: US ,< - dk_Cedilla (ANS/ISO OEM_COMMA)
QW_PD = P 1 p P -- -- ≥ ; SC034: US .> - dk_DotAbove (ANS/ISO OEM_PERIOD)
QW_SL = V 1 v V -- -- ¿ ; SC035: US /? - dk_Stroke/Bar (ANS/ISO _2/_MINUS)
QWSPC = SPACE 0 Spc Spc -- Spc ; SC039: Space (NBSP may cause trouble?)
;
;; ================================================================================================================================
;; Program Settings file
;; for EPiKaL Portable Keyboard Layout (EPKL) by Øystein "DreymaR" Bech-Aase (2015-), based on PKL by Máté Farkas (2008-2010).
;; For more info, see the README files and the Big Bag Of Keyboard Tricks: https://dreymar.colemak.org – select Windows.
;
;; - For Layout choice and settings, use the EPKL_Layouts .ini file(s). For program settings, use EPKL_Settings.
;; - For each of these, there is a Default file and optionally an Override file, the settings in which take precedence.
;; - For Extend layer mappings (navigation/editing etc), use the _eD_Extend.ini file. Set the modifier key in your layout.
;; - In the Files folder there are also DeadKeys, Compose and PwrStrings files that contain different types of mappings.
;; ================================================================================================================================
;
;; The EPKL Settings GUI:
;; - You can set many of the settings below with a handy EPKL Settings window from the EPKL Layout/Settings menu.
;; - Any changes you submit from that window will be written to your Override file, thus taking precedence.
;; - If you wish, you can then edit the entries manually in the Override file. You may also Reset them with a button.
;; - The Settings GUI can also change the active layout, special keys (Extend and Compose) and individual key mappings.
;
;; EPKL Settings Default file info:
;; - Any settings in an EPKL_Settings_Override.ini file will override the corresponding Default settings in this file.
;
;; EPKL Settings syntax:
;; - You can use yes/y/true/1 and no/n/false/0 as entry values for all Boolean (yes/no) choices.
;; - To disable hotkeys or other settings in your Override file without touching the Default, you can set them to --.
;; - Otherwise, simply comment their line(s) out with a semicolon in the Default file to disable them.
;
[pkl]
;; ================================================================================================================================
;; EPKL Interface settings:
;; ================================================================================================================================
;
;; Hotkeys. For syntax rules, see http://www.autohotkey.com/docs/Hotkeys.htm#Symbols
helpImageHotkey = ^+1 ; Ctrl+Shift+1 = Toggle the help image on/off
changeLayHotkey = ^+2 ; Ctrl+Shift+2 = Activate the next layout in the Layouts menu
suspendMeHotkey = ^+3,^+SC029 ; Ctrl+Shift+3 = Suspend/re-enable EPKL. (^+` because sometimes ^+3 didn't work)
exitMeNowHotkey = ^+4 ; Ctrl+Shift+4 = Quit EPKL
refreshMeHotkey = ^+5 ; Ctrl+Shift+5 = Rerun EPKL
settingUIHotkey = ^+6 ; Ctrl+Shift+6 = Show/hide the Layout/Settings... User Interface
zoomImageHotkey = ^+7 ; Ctrl+Shift+7 = Zoom help image in/out. See below for zoom settings.
opaqImageHotkey = ^+8 ; Ctrl+Shift+8 = Toggle help image opacity. See below for its setting.
;moveImageHotkey = ^+9 ; Ctrl+Shift+9 = Move help image as if mousing over its left part
procStatsHotkey = ^+0 ; Ctrl+Shift+0 = Show the title, process (.exe) and class of the active window
;epklDebugHotkey = ^+SC00D ; Ctrl+Shift+= = EPKL/AHK debug and code test utilities - use at your own risk ;-)
;; Help image settings.
showHelpImage = yes ; yes/no - Display the layout help image on startup
img_HideStates = none ; --,0,1,6,7,ext,dk# - Hide these help image shift states. Shift+=1, AltGr+=6.
img_Positions = TL,TM,TR,BL,BM,BR ; TB+LMR - Allowed help image positions. Top/Bottom, Left/Middle/Right.
img_StartPos = BM ; TB+LMR - Initial help image position. Top/Bottom, Left/Middle/Right.
;; Help image transparency. 0 is invisible, 255 opaque. < 0 for transparent background color (WIP).
img_Opacity = 192 ; 0-255 - 0 is invisible, 255 opaque
;; The help images have individual size/scaling set in Layout.ini. With the zoom hotkey you can change the global scale.
img_Zooms = 50,100 ; % - Start at the first zoom value, then cycle with the zoom hotkey
;; Left, right, top and bottom margins for help images. A low margin of 40+ is above the menu bar.
;; To show the help image on a second monitor, set margins < 0. I used (R,T) = (-1918,-118) for the upper right corner.
img_Mrg_LRTB = 2, 2, 35, 42 ; px - Left, Right, Top, Bottom image margins. Can be <0 for second monitor.
;; Help image horizontal push zone, in percent. If you mouse over this the image jumps right/left.
img_HorZone = 25 ; % - Left/right part of image where mouse-over pushes it horizontally
;; Menu/dialog language: A file name in the Languages folder (without .ini).
;; - If it is 'auto', language definitions are loaded from the system's default locale
;; - See http://www.autohotkey.com/docs/misc/Languages.htm
menuLanguage = auto ; auto, or a Files\Languages file - Menu/dialog language
;; Advanced Mode adds some items to menus and the About... dialog.
advancedMode = yes ; yes/no - Show extra info/options
;; The default double-click menu item. The entry must match (part of) a menu item text, or you can use #& for position #.
;; NOTE: AdvancedMode affects the number of menu entries. Hotkey full names may change depending on the settings.
;trayMenuDefault = 5& ; pos& - The nth menu item
trayMenuDefault = Suspend ; text - Partial text matches are allowed
;; ================================================================================================================================
;; Other EPKL settings:
;; ================================================================================================================================
;
;; Modifiers that are "Sticky" or "One-Shot" can be tapped then shortly thereafter type the key to be modded.
stickyMods = LShift,RShift ; - Sticky alias One-Shot mods (Note: RCtrl may interfere with AltGr)
stickyTime = 600 ; ms - Sticky/One-Shot modifier tap time
;; Tap-or-Modifier keys have a VK/ModName layout entry. To tap, release the key within the specified time if set > 0 ms.
tapModTime = 250 ; ms - Tap-or-Mod/Dual-Role-Modifier tap time
;; Extend modifiers let you select Multi-Extend layers: Ext+Mod1 -> Ext2; Ext+Mod2 -> Ext3; Ext+Mod1+Mod2 -> Ext4.
extendMods = RAlt,RShift ; - Mod1,Mod2
;; Which Compose keys are used as CoDeKeys? That is, Compose+DeadKey, as explained elsewhere.
CoDeKeys = CDK ;,Def ; ### - These Compose keys (without the ©) are also advanced CoDeKeys
;; If your OS layout has dead keys, put them here. If, say, '^' is a dead key you must hit '^' then Space to type it.
;; "--" or "none" will ignore this. If you write "auto", EPKL will look for the correct mode in the EPKL_Tables file.
systemDeadKeys = auto ; ¨´^`~ etc., --, auto (use tables) - The dead keys of your OS layout ; eD WIP: Trying to do this automagically.
;; The "janitor" inactivity timer can clean up stuck modifiers. It also suspends EPKL by timer or active app, see below.
cleanupTimeOut = 4 ; s - Idle time in sec. before janitor cleanup functions are performed
;; If you often forget to exit EPKL at a shared computer, you can set suspend/exit timeouts in minutes.
;; After this time without keypresses, EPKL will suspend itself and/or shut down.
suspendTimeOut = 0 ; min - Idle time before EPKL is suspended by cleanup. 0 disables it.
exitAppTimeOut = 0 ; min - Idle time before EPKL is shut down by cleanup. 0 disables it.
;; The apps below will suspend EPKL while they're active. Use AHK window info as shown by the ProcStats hotkey.
;; Window class is quite robust. Title will change with docs open etc., and .exe will match all apps with that name.
;; Be aware that window titles may use the em dash (Colemak-eD AltGr+i) and it matters to title matching.
;; Shorthand: Use 'C' for ahk_class and 'X' for ahk_exe matching. For title matching, use 'T' or just the window title.
suspendingApps = -- ;X bash.exe ; T/C/X win. - Autosuspend EPKL. Case matters. E.g., C WordPadClass, X Notepad.exe
;; Layouts with these Locale IDs will suspend EPKL while they're active. Useful, say, if your IME conflicts with your layout.
suspendingLIDs = -- ;f0c1 ; --, 4-xdigit LocaleIDs; see the About... menu
;; If startSuspended is active, EPKL will start up suspended. But it's probably better to just start EPKL when needed?
;startSuspended = yes ; Start EPKL in the Suspended state
;; Compact mode: The layout file is in the same folder as EPKL.exe
compactMode = no ; Run EPKL in compact mode (layout in root folder)
;; The epklDebugHotkey, if active, runs a debug/utility routine from a selection in `_PKL_main.ahk`. Which one is specified here.
whichUtility = 5 ; { 1:KeyHistory,2:ListHotkeys,3:ListVars,4:ListLines,5:WinInfo,6:eD-WIP } - first 4 are AHK debug routines
[hig]
;; ================================================================================================================================
;; EPKL Help Image Generator settings:
;; The EPKL HIG generates help images from the active layout, using a SVG image file template and the Inkscape program (v1.1+).
;; ================================================================================================================================
;
;; Path to the Inkscape scalable vector graphics program, required for the Help Image Generator (HIG)
InkscapePath = "C:\Program Files\Inkscape\bin\inkscape.exe"
;; Efficiency lets you choose whether to make new images in a separate ImgGen folder or directly in the layout folder.
;; Using Efficiency level 1 means that if an image already exists it won't be overwritten but if not it'll be created.
Efficiency = 2 ; 0: Keeps new images in the ImgGen_ folder. 1: Moves images to the layout folder. 2: Overwrites existing images.
;; Erase the SVG temp file directory after creating the images
delTmpSvgFiles = 1 ; 0: Don't delete. 1: Move to Recycle Bin. 2: Delete completely.
;; If the DK image state suffix is empty, old style (""/"sh") is used by EPKL. The HIG produces the new style anyway.
img_DKStateSuf = _s
;; Make images only for these shift states, if present in the layout. +1 = Shift, +2 = Ctrl, +6 = AltGr, +8 = SwiSh/SGCaps, +16 = FliCK.
imgStates = 0:+1:+6:+7 ;:8:9:e:f
;; Symbol to replace nonprintables such as control characters and ligatures
imgNonCharMark = 0x25AF ; U+25AF/25A1 White Rectangle/Square. U+FFFD Replacment Character (question mark in diamond).
;; Symbols used in the DK layer for keys releasing DK entry 0/1 or combining accents. Remove one to turn it off.
dkBaseCharMark = 0x26AB ; U+2B24/26AB/25CF Black Large/Medium/-- Circle. Large may be too big for the key.
dkCombCharMark = 0x25CC ; U+25CC Dotted Circle. For combining accents.
k_TapOrModMark = 0x25CC ; U+25CC Dotted Circle. For Tap-or-Modifier keys. U+25A0/2B1B Black --/Large Square.
k_RepeatItChar = 0x1F504 ; For the Repeat key.
k_RepeatItMark = 0x1F504 ; U+1F501/2/3/4 – Clockwise Right/left, w/ 1, down/up Open Circle Arrows.
k_ComposerChar = 0x24b8 ; For the Compose key(s). U+2384 Composition Sym. U+24B8 Circled Lat. Cap. Letter C. U+2102 Double-Struck Cap. C.
k_ComposerMark = 0x23fa ; U+23FA Black Circle For Record. U+2B57 Heavy Circle with Circle Inside.
;; Font sizes to use, depending on the number of characters in each label (1,2,3,...). The SVG file default is 32px; 14 px for small text.
fontDefault = 32
fontSizes = 32,25,17,14,13 ;32,24,18,14,12 ; Font sizes for the help images. Longer entries will be shown as ellipses.
;; ; eD WIP: Mark certain keys in bold text and colors, like the Tarmak help images. Uncomment to use on new images.
;markKeyColors = #c00:_E/_N/_K, #009:_J ; Tarmak1 colors
;markKeyColors = #c00:_E/_N/_K, #990:_B/_T/_F, #009:_J ; Tarmak2 colors
;; The SVG template file used to generate images from, and image dimensions in the template
svgImgTemplate = Files\HelpImgGenerator\CmkKbdFig_KLM_Template.svg
imgPosISO = 100,100 ; (x,y) for the upper left corner
imgPosANS = 100,700 ; --"--
imgSizeWH = 812,282 ; 812,226 w/o space bar ; eD WIP: Ortho boards! Make them on the same template, to the right?
imgResDPI = 96 ; Image resolution in DPI (default 96)
;; The max number of files Inkscape should handle in one call. Mine couldn't make more than ≈80 files per batch.
batchSize = 72 ; Inkscape file batch size (may depend on available RAM etc?)
;; Refresh DK(s) only: Instead of a full set of images, render only the specified comma-separated dead keys.
;dkOnlyMakeThis = Compose_0 ;,Compose_1,Ext_Special,Ext_Cmd,
;; Heb-Niqqud-Y|O, RingAbov-Lig, Stroke-Bar, Acute-Sup, Ogonek-CmBel, DblAcute-Sci, Currency, DotBelow, Breve, Macron ...
;; Debug mode. I only use this to check how the UI works. DebugKey is which idKey to show, if any.
;DebugMode = 3 ; 0: Normal operation. 1: Show key info. 2: Don't call InkScape. 3: Don't make files either.
DebugKeyID = 0_Q ; [DKname_] . ShiftState . CO
Hello! First, I'd like to thank you for this program. Second, for some reason, whenever I create help images for my custom keyboard, they do not generate properly. This is what I mean:
There is likely something wrong with the way I have configured things, but I've read the documentation, compared with other layouts, and messed around, and I just can't get it to work. I'd appreciate your help, or anyone's who knows how to solve this.
Details about my setup:
OS: Windows 11 build 22621.2428
Inkscape v. 1.3 downloaded fresh from the website
This is my layout file (with some commented sections ommitted for brevity:
And this is my settings file: