OneDeadKey / kalamine

Keyboard Layout Maker
MIT License
100 stars 29 forks source link

Generating bepo layout generates `Exception: Too many OEM keys` #175

Open gagath opened 1 month ago

gagath commented 1 month ago

This seems to be related to the klc Windows generator. When building the Linux files only, the program exits successfully:

$ kalamine build bepo.toml
... dist/custom.ahk
Traceback (most recent call last):
  File "$HOME/kalamine/venv/bin/kalamine", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/kalamine/cli.py", line 137, in build
    build_all(layout, Path("dist"))
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/kalamine/cli.py", line 73, in build_all
    file.write(klc.klc(layout))
               ^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/kalamine/generators/klc.py", line 384, in klc
    out = substitute_lines(out, "LAYOUT",         klc_keymap(layout))
                                                  ^^^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/kalamine/generators/klc.py", line 139, in klc_keymap
    virtual_key = klc_virtual_key(layout, symbols, scan_code)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "$HOME/kalamine/venv/lib/python3.12/site-packages/kalamine/generators/klc.py", line 91, in klc_virtual_key
    raise Exception("Too many OEM keys")
Exception: Too many OEM keys

The used bepo.toml attached: bepo.toml.txt

Suggestion: the error should be fixed, or at least a clear error message with actionable explanation should be displayed.

Ced-C commented 1 month ago

Same issue when trying to generate driver for the latest version of Bépolar:

base = ''' ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ ┆ ¬ ┃ # │ « “ │ » ” │ ( „ │ ) ‘ ┃ @ │ + ÷ │ ^ˇ │ / | │ × ┃µ ┆ § ¶ ┆ ┆ ~~ ┃ 1 & │ 2 < │ 3 > │ 4 ( │ 5 ) ┃ 6 @ │ 7 ± │ 8^ │ 9 \ │ 0 ° ┃ = ≠ ┆ % ‰ ┆ ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ · ┃ B │ M │ P │ O │ W ┃ Z │ V │ D │ L │ J ┃ { ┆ } ┆ · ┃ â │ û │ î │ ô │ œ ┃ │ ŭ │ ( │ ) │ ) ┃ [ ┆ ] ┆ · ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ · ┃ A │ U │ I │ E │ ; ┃ C │ T │ S │ R │ N ┃ " ┆ €¤ ┆ · ┃ à │ ù │ é │ è │ , ê ┃ ç │ ™ │ ß │ ® │ ñ ┃ ' ` ┆ $ ¢ ┆ ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ ┆ \ ¦ ┃ ! ¡ │ Y │ X │ : · │ K ┃ ? ¿ │ Q │ G │ H │ F ┃ · ┆ / | ┃ - — │ ŷ │ _ │ . … │ æ ┃***¨ │ – │ µ │ © │ ‑ ┃ · ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · '''

altgr = ''' ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ ┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ ┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ · ┃ ^ │ ≤ │ ≥ │ ¤ │ ‰ ┃ ˚ │ │ × │ ´ │ ` ┃ ┆ ┆ · ┃ ^ │ < │ > │ $ │ % ┃ @ │ & │ │ ' │ ` ┃ ┆ ┆ · ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ · ┃ ˇ │ │ │ ˙ │ ≠ ┃ / │ ± │ ¯ │ ÷ │ ” ┃ ┆ ┆ · ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ´ ┆ ┆ ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ ┆ ┃ ~ │ , │ ˛ │ – │ ┃ ¦ │ ¬ │ ¸ │ : │ *˘ ┃ · ┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ · ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · '''

[spacebar] shift = "\u202f" # NARROW NO-BREAK SPACE altgr = "\u0020" # SPACE altgr_shift = "\u00a0" # NO-BREAK SPACE 1dk = "\u2019" # RIGHT SINGLE QUOTATION MARK 1dk_shift = "\u2019" # RIGHT SINGLE QUOTATION MARK


using kalamine V**0.36**
Geobert commented 1 month ago

on both instances, removal of the 2 leading spaces on each line of base description fixes the issue

we need to bullet proof the parser