#!/bin/sh # # Configfiles are from grubfilemanager project # cfgfile=keyboard_layout.c rm -f ${cfgfile} cat >>$cfgfile << EOF #define ventoy_keyboard_set_layout(name) if (grub_strcmp(layout, #name) == 0) return ventoy_keyboard_layout_##name() menuentry QWERTY_USA --class=debug_kbd { setkey -r setkey -d } EOF ls -1 cfg | while read line; do kbd=${line%.cfg} name=${kbd#KBD_} echo "menuentry $name --class=debug_kbd {" >> $cfgfile grep '^setkey' cfg/$line >>$cfgfile echo "}" >> $cfgfile done dos2unix $cfgfile sed 's/menuentry \([^ ]*\) .*/static void ventoy_keyboard_layout_\1(void) {/g' -i $cfgfile sed 's/setkey *-r/grub_keymap_reset();/g' -i $cfgfile sed 's/setkey *-d/grub_keymap_disable();/g' -i $cfgfile sed 's/setkey *-e/grub_keymap_enable();/g' -i $cfgfile sed 's/^setkey *\([^ ]*\) *\([^ ]*\)/grub_keymap_add_by_string("\1", "\2");/g' -i $cfgfile rm -f .tmpfunc echo "void ventoy_set_keyboard_layout(const char *layout);" >> .tmpfunc echo "void ventoy_set_keyboard_layout(const char *layout) {" >> .tmpfunc grep 'void *ventoy_keyboard_layout_' $cfgfile | while read line; do name=$(echo $line | sed 's/.*ventoy_keyboard_layout_\(.*\)(.*/\1/g') echo "ventoy_keyboard_set_layout($name);" >> .tmpfunc done echo "}" >> .tmpfunc cat .tmpfunc >> $cfgfile rm -f .tmpfunc rm -f ../GRUB2/SRC/grub-2.04/grub-core/term/$cfgfile cp -a $cfgfile ../GRUB2/SRC/grub-2.04/grub-core/term/$cfgfile ############ # # cfg ############# cfgfile=../INSTALL/grub/keyboard.cfg rm -f ${cfgfile} echo "submenu \"Keyboard Layouts\" --class=debug_krdlayout {" >>$cfgfile cat >>$cfgfile << EOF menuentry QWERTY_USA --class=debug_kbd { set_keyboard_layout QWERTY_USA } EOF ls -1 cfg | while read line; do kbd=${line%.cfg} name=${kbd#KBD_} echo " menuentry $name --class=debug_kbd {" >> $cfgfile echo " set_keyboard_layout $name" >> $cfgfile echo " }" >> $cfgfile done echo "}" >>$cfgfile