Commit 2e10aabe authored by longpanda's avatar longpanda
Browse files

Add VTOY_DEFAULT_KBD_LAYOUT in global control plugin

parent a63a41f7
This diff is collapsed.
......@@ -348,12 +348,38 @@ out:
return grub_errno;
}
static grub_extcmd_t cmd;
static void grub_keymap_add_by_string(const char *src, const char *dst)
{
int in = 0;
int out = 0;
in = parse_key(dst);
out = parse_key(src);
if (in && out)
{
grub_keymap_add (in, out);
}
}
#include "keyboard_layout.c"
static grub_err_t grub_cmd_set_keylayout (grub_extcmd_context_t ctxt, int argc, char **args)
{
(void)ctxt;
(void)argc;
ventoy_set_keyboard_layout(args[0]);
return 0;
}
static grub_extcmd_t cmd, setcmd;
GRUB_MOD_INIT(setkey)
{
cmd = grub_register_extcmd ("setkey", grub_cmd_setkey, 0, N_("NEW_KEY USA_KEY"),
N_("Map default USA_KEY to NEW_KEY."), options);
setcmd = grub_register_extcmd ("set_keyboard_layout", grub_cmd_set_keylayout, 0, N_("layout"),
N_("Set keyboard layout."), NULL);
}
GRUB_MOD_FINI(setkey)
......
......@@ -32,6 +32,7 @@
*save_env: loadenv
*search: search
*serial: serial
*set_keyboard_layout: setkey
*setkey: setkey
*sha1sum: hashsum
*sha256sum: hashsum
......
videotest: font video gfxmenu
setkey: extcmd
odc: archelp
loopback: extcmd
setkey: extcmd
macho:
gcry_des: crypto
memrw: extcmd
......
source $prefix/keyboard.cfg.gz
source $prefix/keyboard.cfg
submenu "Resolution Configuration" --class=debug_resolution {
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
......
......@@ -1749,6 +1749,9 @@ else
terminal_output gfxterm
fi
if [ -n "$VTOY_DEFAULT_KBD_LAYOUT" ]; then
set_keyboard_layout "$VTOY_DEFAULT_KBD_LAYOUT"
fi
if [ -n "$VTOY_PLUGIN_SYNTAX_ERROR" ]; then
clear
......
......@@ -43,6 +43,7 @@
*save_env: loadenv
*search: search
*serial: serial
*set_keyboard_layout: setkey
*setkey: setkey
*setpci: setpci
*sha1sum: hashsum
......
videotest: font video gfxmenu
setkey: extcmd
odc: archelp
loopback: extcmd
setkey: extcmd
macho:
gcry_des: crypto
memrw: extcmd
......
......@@ -47,6 +47,7 @@
*search: search
*sendkey: sendkey
*serial: serial
*set_keyboard_layout: setkey
*setkey: setkey
*setpci: setpci
*sha1sum: hashsum
......
videotest: font video gfxmenu
setkey: extcmd
odc: archelp
loopback: extcmd
setkey: extcmd
macho:
gcry_des: crypto
memrw: extcmd
......
submenu "Keyboard Layouts" --class=debug_krdlayout {
menuentry QWERTY_USA --class=debug_kbd {
set_keyboard_layout QWERTY_USA
}
menuentry AZERTY --class=debug_kbd {
set_keyboard_layout AZERTY
}
menuentry CZECH_QWERTY --class=debug_kbd {
set_keyboard_layout CZECH_QWERTY
}
menuentry CZECH_QWERTZ --class=debug_kbd {
set_keyboard_layout CZECH_QWERTZ
}
menuentry DANISH --class=debug_kbd {
set_keyboard_layout DANISH
}
menuentry DVORAK_USA --class=debug_kbd {
set_keyboard_layout DVORAK_USA
}
menuentry FRENCH --class=debug_kbd {
set_keyboard_layout FRENCH
}
menuentry GERMAN --class=debug_kbd {
set_keyboard_layout GERMAN
}
menuentry ITALIANO --class=debug_kbd {
set_keyboard_layout ITALIANO
}
menuentry JAPAN_106 --class=debug_kbd {
set_keyboard_layout JAPAN_106
}
menuentry LATIN_USA --class=debug_kbd {
set_keyboard_layout LATIN_USA
}
menuentry PORTU_BRAZIL --class=debug_kbd {
set_keyboard_layout PORTU_BRAZIL
}
menuentry QWERTY_UK --class=debug_kbd {
set_keyboard_layout QWERTY_UK
}
menuentry QWERTZ --class=debug_kbd {
set_keyboard_layout QWERTZ
}
menuentry QWERTZ_HUN --class=debug_kbd {
set_keyboard_layout QWERTZ_HUN
}
menuentry QWERTZ_SLOV_CROAT --class=debug_kbd {
set_keyboard_layout QWERTZ_SLOV_CROAT
}
menuentry SPANISH --class=debug_kbd {
set_keyboard_layout SPANISH
}
menuentry SWEDISH --class=debug_kbd {
set_keyboard_layout SWEDISH
}
menuentry TURKISH_Q --class=debug_kbd {
set_keyboard_layout TURKISH_Q
}
menuentry VIETNAMESE --class=debug_kbd {
set_keyboard_layout VIETNAMESE
}
}
......@@ -43,6 +43,7 @@
*save_env: loadenv
*search: search
*serial: serial
*set_keyboard_layout: setkey
*setkey: setkey
*setpci: setpci
*sha1sum: hashsum
......
videotest: font video gfxmenu
setkey: extcmd
odc: archelp
loopback: extcmd
setkey: extcmd
macho:
gcry_des: crypto
memrw: extcmd
......
This diff is collapsed.
......@@ -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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment