]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - KBD/mkconfig.sh
Fix the issue (introduced in 1.1.06) that the Ventoy ISO partition cannot be mounted...
[Ventoy.git] / KBD / mkconfig.sh
index b369005c46f67c1f27d7b05c55433272f18bea30..0e09792cd7365a8549877cff08efa878725cb433 100644 (file)
@@ -4,12 +4,13 @@
 # Configfiles are from grubfilemanager project
 #
 
-cfgfile=../INSTALL/grub/keyboard.cfg
-rm -f ${cfgfile}.gz
-
-echo "submenu \"Keyboard Layouts\" --class=debug_krdlayout {" >>$cfgfile
+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
@@ -25,6 +26,59 @@ ls -1 cfg | while read line; do
     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
 
-gzip $cfgfile
+
+