{ lib }: let inherit (builtins) listToAttrs; inherit (lib) nameValuePair removePrefix removeSuffix; wrap = val: "<${val}>"; unwrap = val: removePrefix "<" (removeSuffix ">" val); char = num: wrap "Char-${num}"; # map a character by its decimal, octal or hexadecimal number shift = key: wrap "S-${unwrap key}"; # shift-key *shift* *