# mkbqnkeyboard.bqn [mkbqnkeyboard.bqn][] is a script that updates a given Plan 9 `/lib/keyboard` file to support the familiar [BQN keymap][] via compose sequences. Since it uses the GNU Readline [inputrc distributed with BQN][inputrc] as a database for the keymap, you can use a [remapped][] version of the layout. Once applied, you'll be able to type the Unicode characters used by BQN via Compose followed by \\ and the mapped ASCII character. For details on the file and what button is used for Compose, refer to [keyboard(6)][p9f-keyboard] (see also [plan9port's keyboard(7)][p9p-keyboard], [9front's keyboard(6)][9front-keyboard] etc.). TIP: [mkbqnkeyboard.bqn][] has only been tested with [plan9port][], so the instructions below may not work with every Plan 9 variant. If you have any any information on/trouble with getting it to work on a proper Plan 9 (fork), feel free to [let me know][me] or [send a patch][submitting-patches]. The process for updating `/lib/keyboard` with [mkbqnkeyboard.bqn][] is a follows: 1. Prerequisites: - [CBQN][] (other BQN implementations are untested) - A local checkout of [mlochbaum/BQN][], `aecb56a323aa` is the latest tested revision. 2. Run ./mkbqnkeyboard.bqn -i /path/to/mlochbaum/BQN/editors/inputrc /path/to/lib/keyboard If you omit `-i`, the modified `keyboard` file will be printed to stdout instead of written to the file. If you add `-s`, the result will be sorted by (resulting) codepoint. 3. If you're using **plan9port**, you'll need to 1. Apply [latin1-increase-compose-capacity.patch][] since the default compose sequence lookup table is too small to hold all the mappings BQN adds. 2. Recompile plan9port. Other Plan 9 variants may also require extra steps. 4. The compose sequences should now work in the [acme][] and [sam][] text editors as well as all other Plan 9 programs. [acme]: https://9p.io/sys/doc/acme/acme.pdf [sam]: https://9p.io/sys/doc/sam/sam.pdf [BQN keymap]: https://mlochbaum.github.io/BQN/keymap.html [me]: https://grep.tvl.fyi/search/?q=%20path%3Aops%2Fusers%2Fdefault.nix%20name%20%3D%20%22sterni%22%3B&fold_case=auto®ex=false&context=true [mkbqnkeyboard.bqn]: ./mkbqnkeyboard.bqn [inputrc]: https://github.com/mlochbaum/BQN/blob/master/editors/inputrc [remapped]: https://mlochbaum.github.io/BQN/editors/index.html#alternate-layouts [p9f-keyboard]: https://p9f.org/magic/man2html/6/keyboard [p9p-keyboard]: https://9fans.github.io/plan9port/man/man7/keyboard.html [9front-keyboard]: http://man.9front.org/6/keyboard [plan9port]: https://9fans.github.io/plan9port/ [submitting-patches]: https://code.tvl.fyi/about/docs/REVIEWS.md [mlochbaum/BQN]: https://github.com/mlochbaum/BQN [CBQN]: https://github.com/dzaima/cbqn [latin1-increase-compose-capacity.patch]: ./plan9port/latin1-increase-compose-capacity.patch