Disclaimer - I am not a developer. I know nothing about C. I have modified and published [a keyboard layout](https://github.com/NiranjanTambe/Indic-IPA) ([released in xkeyboard v2.30](https://groups.google.com/a/listserv.bat.ru/g/xkb/c/43RQtYCdXGU/m/AUXGt1N5AAAJ)) for Linux devices, but people who use Windows are not able to use it. I just wanted to know if it is possible to develop a cross-platform and simple keyboard interpreter in C. I don't want a ready-made code obviously, but I would like to know from where should I start. What I have right now is the following code written in `C` and I need to build an interpreter (common for both the operating systems) which will read this code and map these characters with the actual keyboard keys. ``` partial alphanumeric_keys modifier_keys xkb_symbols "iipa" { name[Group1]= "Indic IPA (IIPA)"; key <AE01> { [ 1, exclam] }; key <AE02> { [ 2, at] }; key <AE03> { [ 3, numbersign] }; key <AE04> { [ 4, U20B9] }; key <AE05> { [ 5, percent] }; key <AE06> { [ 6, asciicircum] }; key <AE07> { [ 7, ampersand] }; key <AE08> { [ 8, asterisk] }; key <AE09> { [ 9, parenleft] }; key <AE10> { [ 0, parenright] }; key <AE11> { [ minus, underscore] }; key <AE12> { [ equal, plus] }; key <AD01> { [ U02B0, U02B1] }; // [ʰ], [ʱ] key <AD02> { [ U00E6, q] }; // [æ], [q] found in Urdu key <AD03> { [ a, U028B] }; // [a], [ʋ] key <AD04> { [ i, U026A] }; // [i] [ɪ] key <AD05> { [ u, U026F] }; // [u] [ɯ] found in Tamil key <AD06> { [ b, Y] }; // [b] key <AD07> { [ h, U014B] }; // [h], [ŋ] key <AD08> { [ g, U0263] }; // [g], [ɣ] found in Urdu key <AD09> { [ d, U00F0] }; // [d], [ð] found in Malayalam key <AD10> { [ U02A4, U02A3] }; // [ʤ], [ʣ] found in Marathi key <AD11> { [ U0256, U027D] }; // [ɖ], [ɽ] key <AD12> { [ bracketleft, bracketright] }; // "[", "]" needed for denoting phonetic symbols key <AC01> { [ o, U0254] }; // [o], [ɔ] found in Bangla key <AC02> { [ e, U025B] }; // [e], [ɛ] key <AC03> { [ U0259, U0361] }; // [ə], [ ͡ ] key <AC04> { [ i, U026A] }; // [i], [ɪ] key <AC05> { [ u, U026F] }; // [u], [ɯ] key <AC06> { [ p, f] }; // [p], [f] key <AC07> { [ U027E, r] }; // [ɾ], [r] key <AC08> { [ k, x] }; // [k], [x] found in Urdu key <AC09> { [ t, U03B8] }; // [t], [θ] key <AC10> { [ U02A7, U02A6] }; // [ʧ], [ʦ] found in Marathi key <AC11> { [ U0288, quotedbl] }; // [ʈ] key <TLDE> { [ grave, asciitilde] }; key <BKSL> { [ backslash, bar] }; key <AB01> { [ U032A, U0303] }; // [ ̪], [ ̃] Dental mark, nasalisation mark key <AB02> { [ U0306, X] }; // [ ̆] Short sound key <AB03> { [ m, U0273] }; // [m], [ɳ] key <AB04> { [ n, v] }; // [n], [v] key <AB05> { [ w, z] }; // [w], [z] key <AB06> { [ l, U026D] }; // [l], [ɭ] key <AB07> { [ s, U0283] }; // [s], [ʃ] key <AB08> { [ comma, U0282] }; // [ʂ] key <AB09> { [ period, U02D0] }; // [ː] Long sound key <AB10> { [ j, slash] }; // [j] } ``` # Core requirements * Quick and simple installer(s) for both the systems. * A switch to turn on and off the keyboard during a session which will be able to suppress the system keyboard when desired and stop my keyboard when not necessary. Please share your ideas :)