add tag
निरंजन
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 :)

Enter question or answer id or url (and optionally further answer ids/urls from the same question) from

Separate each id/url with a space. No need to list your own answers; they will be imported automatically.