kalamine icon indicating copy to clipboard operation
kalamine copied to clipboard

Too many OEM keys error

Open TrialDragon opened this issue 9 months ago • 3 comments

Hiya, when trying to build my layout:

# kalamine keyboard layout descriptor
name        = "futhorc"  # full layout name, displayed in the keyboard settings
name8       = "futhorc"         # short Windows filename: no spaces, no special chars
locale      = "en"             # locale/language id
variant     = "futhorc"         # layout variant id
author      = "nobody"         # author name
description = "modern FUÞORC layout"
url         = "https://OneDeadKey.github.com/kalamine"
version     = "1.0.1"
geometry    = "ISO"

base = '''
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
│ ~   │ !   │ @   │ #   │ $   │ %   │ ^   │ &   │ *   │ (   │ )   │ _   │ +   ┃          ┃
│ `   │ 1   │ 2   │ 3   │ 4   │ 5   │ 6   │ 7   │ 8   │ 9   │ 0   │ -   │ =   ┃ ⌫        ┃
┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
┃        ┃     │     │     │     │     │     │     │     │     │     │ {   │ }   ┃       ┃
┃ ↹      ┃ ᚦ   │ ᚹ   │ ᛖ   │ ᚱ   │ ᛏ   │ ᛟ   │ ᚢ   │ ᛁ   │ ᚩ   │ ᛈ   │ [   │ ]   ┃       ┃
┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  ⏎   ┃
┃         ┃     │     │     │     │     │     │     │     │     │ ᛭   │ »   │ |   ┃      ┃
┃ ⇬       ┃ ᚫ   │ ᛋ   │ ᛞ   │ ᚠ   │ ᚸ   │ ᚻ   │ ᚷ   │ ᛣ   │ ᛚ   │ ᛬   │ «   │ \   ┃      ┃
┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
┃      ┃ |   │     │     │     │     │     │     │     │ <   │ >   │ ?   ┃               ┃
┃ ⇧    ┃ \   │ ᚪ   │ ᛇ   │ ᚳ   │ ᛝ   │ ᛒ   │ ᚾ   │ ᛗ   | ,   | ᛫   | /   ┃ ⇧             ┃
┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
┃       ┃       ┃       ┃                                ┃       ┃       ┃       ┃       ┃
┃ Ctrl  ┃ super ┃ Alt   ┃ ␣                              ┃ AltGr ┃ super ┃ menu  ┃ Ctrl  ┃
┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
'''

it errors on kalamine build layout.toml with this error:

... dist/futhorc.ahk
Traceback (most recent call last):
  File "/home/USER/.local/bin/kalamine", line 8, in <module>
    sys.exit(cli())
             ~~~^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/click/core.py", line 1161, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/click/core.py", line 1082, in main
    rv = self.invoke(ctx)
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/click/core.py", line 1697, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/click/core.py", line 1443, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/click/core.py", line 788, in invoke
    return __callback(*args, **kwargs)
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/kalamine/cli.py", line 117, in build
    build_all(layout, Path("dist"))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/kalamine/cli.py", line 53, in build_all
    file.write(klc.klc(layout))
               ~~~~~~~^^^^^^^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/kalamine/generators/klc.py", line 387, in klc
    out = substitute_lines(out, "LAYOUT",         klc_keymap(layout))
                                                  ~~~~~~~~~~^^^^^^^^
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/kalamine/generators/klc.py", line 142, in klc_keymap
    virtual_key = klc_virtual_key(layout, symbols, scan_code)
  File "/home/USER/.local/share/pipx/venvs/kalamine/lib64/python3.13/site-packages/kalamine/generators/klc.py", line 94, in klc_virtual_key
    raise Exception("Too many OEM keys")
Exception: Too many OEM keys

OS: Fedora 40-ish (upgraded to 41, but loading 41 freezes computer, so stuck on 40; happened prior to update too) Kalamine Version: 0.38 (installed via pipx)

TrialDragon avatar Mar 11 '25 05:03 TrialDragon

I’m afraid we don’t support non alphanumeric layout yet

Geobert avatar Mar 11 '25 11:03 Geobert

@Geobert In such case it should fallback to the Qwerty VK_s, as there is currently no support for transliteration.

wismill avatar Mar 11 '25 13:03 wismill

I’ve made a tiny hotfix that might help. In kalamine/generators/klc.py, add this in klc_virtual_key after if shifted.isascii() ...:

cyr_lat = dict(zip(
    'йцукенгшщзфывапролэячсмтьЙЦУКЕНГШЩЗФЫВАПРОЛДЯЧСМИТЬ',
    'qwertyuiopasdfgjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM',
))

if shifted in cyr_lat:
    print('cyr_lat:', shifted, cyr_lat[shifted])
    return cyr_lat[shifted]

Replace the Cyrillic letters with your characters. (This will only work if you don’t use Latin characters at all.)

notpushkin avatar Apr 05 '25 22:04 notpushkin