nsmarkop / plover_korean Goto Github PK
View Code? Open in Web Editor NEWKorean plugin for Plover
License: GNU General Public License v3.0
Korean plugin for Plover
License: GNU General Public License v3.0
Unit testing the numbers dictionary has revealed some issues even though the base functionality works as expected.
First, reverse_lookup sort-of worked but does not handle cases where the numbers are split with - or reversed with * properly. This may be a lost cause as at the moment it seems like it'd take significant effort to resolve.
Secondly, lookup is quite permissive of input. If you give it 1258
instead of 125-8
, 1290
instead of 12-90
, etc. it works fine even though that violates how the steno order is supposed to be written.
Thirdly, You can't unit test reverse_lookup code that has a return value (so, a "passing" case) because when it calls normalize_stroke it errors out due to a raised AssertionError because a "system" has not been initialized in the plover package which it's using during normalize_steno internally for things like NUMBER_KEY lookups and such.
Thank you for your effort to build Korean stenotype layout for Plover.
FYI, In your sorizava config, the ㅋ in the home row is actually a final consonant.
I found this on Youtube Sorizava channel.
Link
The video has no subtitles, so if you want to know what he says please email me.
-ㄹㅅ is normally used in syllable block logic to make the final syllable ㄽ which makes sense.
However, according to the CAS theory book -ㄹㅅ is the pattern for ㄹ 수 during syllable block logic as well. A note points out that for 올 수 you need to use ㅇㅗㄹㅅ instead of ㅗㄹㅅ, that latter taken by 옰, but has no mention of this conflicting for other ㄽ words.
At first I thought this may be a case of the CAS system not actually letting you type any ㄽ syllable blocks other than 옰, but that does not seem to be the case as elsewhere in the theory book when they first introduce -ㄹㅅ it uses 곬 as an examples,which with the new rule would output 골 수.
It is also clear that -ㄹㅅ does not mean using it individually rather than during syllable block logic should output ㄹ 수 due to context and the fact that -ㄹㅅ used individually is {^}로서.
Moving past basic functionality means going into the territory of special left and right hand briefs and partial briefs that mix with the standard syllable block construction rules. How all of these can be combined results in a large and hard to understand dictionary.
While dictionary generation code can be written like the syllable block rules are currently implemented, converting all of this base functionality into a dictionary composed of code to do the generation "real time" will be much simpler to maintain during development. It will also potentially be easier to extend for users adding to the special briefs with just one line in the dictionary code rather than needing a tool to generate all possible combinations a json dictionary would need for adding a new conjugation - whether this is the long term direction once everything settles is up in the air, though.
All entries that are actual dictionary entries and not part of the "logic" of the theory, like normal briefs for words or symbols or whatnot should still be in a base json dictionary.
I have this partially implemented using Hy via https://github.com/nsmarkop/plover_hy_dictionary (for fun) currently but I may switch to using a Python dictionary.
I'm Korean and really appreciate your hard work here.
But as a beginner, it was difficult to follow the documentation and install plover_korean plugin.
After spending half day I could install the plugin but still didn't understand meta_plugin thing and I don't think all the abbreviation is working properly.
I wanted to introduce your work to my youtube community (with 600K followers) hope the installing process was easier to beginners.
Again, thanks for your effort!
I've managed to acquire a Sorizava steno machine and accompanying theory book 디지털 영상속기사 Easy Start!, and decided to write up a summary of the theory principles so that a dictionary can be built and implemented in Plover.
As mentioned in #4, the second ㅋ key on the initial side is a final ㅋ, which is labeled ㉪ in the theory book, and ㈊ on my machine. I suggest ㉪
be used as the key label in Plover. Alternatively, because it is technically a final, -ㅋ
can be used, but it may need to be farther down in the steno order (not that there is one, officially).
Suggested implementation, using ㉪ for final ㅋ:
KEYS = (
# Steno order for consonants is roughly left-to-right
# then top-to-bottom, except for ㉪ and ᅴ
"ㅊ-", "ㅌ-", "ㅋ-", "ㅂ-", "ㅍ-",
"ㅅ-", "ㄷ-", "ㅈ-", "ㄱ-",
"ㅁ-", "ㄹ-", "ㄴ-", "ㅎ-",
"㉪", "ᅴ",
"ㅗ", "ㅏ", "ㅜ", "ㅡ", "ㅓ", "ㅣ",
"-ㄲ", "-ㅎ", "-ㅌ", "-ㅊ", "-ㅍ",
"-ㄱ", "-ㄴ", "-ㄹ", "-ㅅ", "-ㅂ",
"-ㅆ", "-ㅇ", "-ㅁ", "-ㄷ", "-ㅈ",
)
IMPLICIT_HYPHEN_KEYS = (
"㉪", "ᅴ", "ㅗ", "ㅏ", "ㅜ", "ㅡ", "ㅓ", "ㅣ",
)
Alternative using -ㅋ for final ㅋ:
KEYS = (
"ㅊ-", "ㅌ-", "ㅋ-", "ㅂ-", "ㅍ-",
"ㅅ-", "ㄷ-", "ㅈ-", "ㄱ-",
"ㅁ-", "ㄹ-", "ㄴ-", "ㅎ-",
"-ᅴ",
"-ㅗ", "-ㅏ", "-ㅜ", "-ㅡ", "-ㅓ", "-ㅣ",
# Has to come after vowels in order to allow
# vowels to have implicit hyphens without
# conflicting with ㅋ-, but this makes steno
# order potentially unintuitive
"-ㅋ",
"-ㄲ", "-ㅎ", "-ㅌ", "-ㅊ", "-ㅍ",
"-ㄱ", "-ㄴ", "-ㄹ", "-ㅅ", "-ㅂ",
"-ㅆ", "-ㅇ", "-ㅁ", "-ㄷ", "-ㅈ",
)
IMPLICIT_HYPHEN_KEYS = (
"-ᅴ", "-ㅗ", "-ㅏ", "-ㅜ", "-ㅡ", "-ㅓ", "-ㅣ",
)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.