Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
dadigang
Ventoy
Commits
a68629a9
Commit
a68629a9
authored
Jan 07, 2021
by
longpanda
Browse files
Add support for keyboard layout
F5 ---> Keyboard Layouts
parent
c84855bb
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1023 additions
and
55 deletions
+1023
-55
GRUB2/MOD_SRC/grub-2.04/grub-core/Makefile.core.def
GRUB2/MOD_SRC/grub-2.04/grub-core/Makefile.core.def
+5
-0
GRUB2/MOD_SRC/grub-2.04/grub-core/kern/term.c
GRUB2/MOD_SRC/grub-2.04/grub-core/kern/term.c
+133
-0
GRUB2/MOD_SRC/grub-2.04/grub-core/term/setkey.c
GRUB2/MOD_SRC/grub-2.04/grub-core/term/setkey.c
+362
-0
GRUB2/MOD_SRC/grub-2.04/include/grub/term.h
GRUB2/MOD_SRC/grub-2.04/include/grub/term.h
+466
-0
GRUB2/MOD_SRC/grub-2.04/install.sh
GRUB2/MOD_SRC/grub-2.04/install.sh
+3
-3
INSTALL/grub/debug.cfg
INSTALL/grub/debug.cfg
+54
-52
INSTALL/grub/keyboard.cfg.gz
INSTALL/grub/keyboard.cfg.gz
+0
-0
No files found.
GRUB2/MOD_SRC/grub-2.04/grub-core/Makefile.core.def
View file @
a68629a9
...
@@ -1600,6 +1600,11 @@ module = {
...
@@ -1600,6 +1600,11 @@ module = {
common
=
ventoy/miniz.c
;
common
=
ventoy/miniz.c
;
};
};
module
=
{
name
=
setkey
;
common
=
term/setkey.c
;
};
module
=
{
module
=
{
name
=
hello
;
name
=
hello
;
common
=
hello/hello.c
;
common
=
hello/hello.c
;
...
...
GRUB2/MOD_SRC/grub-2.04/grub-core/kern/term.c
0 → 100644
View file @
a68629a9
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003,2005,2007,2008,2009 Free Software Foundation, Inc.
*
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GRUB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
#include <grub/term.h>
#include <grub/err.h>
#include <grub/mm.h>
#include <grub/misc.h>
#include <grub/env.h>
#include <grub/time.h>
struct
grub_term_output
*
grub_term_outputs_disabled
;
struct
grub_term_input
*
grub_term_inputs_disabled
;
struct
grub_term_output
*
grub_term_outputs
;
struct
grub_term_input
*
grub_term_inputs
;
/* Current color state. */
grub_uint8_t
grub_term_normal_color
=
GRUB_TERM_DEFAULT_NORMAL_COLOR
;
grub_uint8_t
grub_term_highlight_color
=
GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR
;
void
(
*
grub_term_poll_usb
)
(
int
wait_for_completion
)
=
NULL
;
void
(
*
grub_net_poll_cards_idle
)
(
void
)
=
NULL
;
/* Put a Unicode character. */
static
void
grub_putcode_dumb
(
grub_uint32_t
code
,
struct
grub_term_output
*
term
)
{
struct
grub_unicode_glyph
c
=
{
.
base
=
code
,
.
variant
=
0
,
.
attributes
=
0
,
.
ncomb
=
0
,
.
estimated_width
=
1
};
if
(
code
==
'\t'
&&
term
->
getxy
)
{
int
n
;
n
=
GRUB_TERM_TAB_WIDTH
-
((
term
->
getxy
(
term
).
x
)
%
GRUB_TERM_TAB_WIDTH
);
while
(
n
--
)
grub_putcode_dumb
(
' '
,
term
);
return
;
}
(
term
->
putchar
)
(
term
,
&
c
);
if
(
code
==
'\n'
)
grub_putcode_dumb
(
'\r'
,
term
);
}
static
void
grub_xputs_dumb
(
const
char
*
str
)
{
for
(;
*
str
;
str
++
)
{
grub_term_output_t
term
;
grub_uint32_t
code
=
*
str
;
if
(
code
>
0x7f
)
code
=
'?'
;
FOR_ACTIVE_TERM_OUTPUTS
(
term
)
grub_putcode_dumb
(
code
,
term
);
}
}
void
(
*
grub_xputs
)
(
const
char
*
str
)
=
grub_xputs_dumb
;
int
(
*
grub_key_remap
)(
int
key
)
=
NULL
;
int
grub_getkey_noblock
(
void
)
{
grub_term_input_t
term
;
if
(
grub_term_poll_usb
)
grub_term_poll_usb
(
0
);
if
(
grub_net_poll_cards_idle
)
grub_net_poll_cards_idle
();
FOR_ACTIVE_TERM_INPUTS
(
term
)
{
int
key
=
term
->
getkey
(
term
);
if
(
grub_key_remap
)
key
=
grub_key_remap
(
key
);
if
(
key
!=
GRUB_TERM_NO_KEY
)
return
key
;
}
return
GRUB_TERM_NO_KEY
;
}
int
grub_getkey
(
void
)
{
int
ret
;
grub_refresh
();
while
(
1
)
{
ret
=
grub_getkey_noblock
();
if
(
ret
!=
GRUB_TERM_NO_KEY
)
return
ret
;
grub_cpu_idle
();
}
}
void
grub_refresh
(
void
)
{
struct
grub_term_output
*
term
;
FOR_ACTIVE_TERM_OUTPUTS
(
term
)
grub_term_refresh
(
term
);
}
GRUB2/MOD_SRC/grub-2.04/grub-core/term/setkey.c
0 → 100644
View file @
a68629a9
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2020 Free Software Foundation, Inc.
*
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GRUB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
#include <grub/types.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/env.h>
#include <grub/err.h>
#include <grub/dl.h>
#include <grub/extcmd.h>
#include <grub/i18n.h>
#include <grub/term.h>
GRUB_MOD_LICENSE
(
"GPLv3+"
);
#define MAX_KEYMAP 255
struct
keymap
{
int
cnt
;
int
in
[
MAX_KEYMAP
];
int
out
[
MAX_KEYMAP
];
};
static
struct
keymap
setkey_keymap
;
struct
keysym
{
const
char
*
name
;
/* the name in unshifted state */
int
code
;
/* scan code */
};
/* The table for key symbols. (from GRUB4DOS) */
static
struct
keysym
keysym_table
[]
=
{
{
"escape"
,
GRUB_TERM_ESC
},
// ESC
{
"exclam"
,
0x21
},
// '!'
{
"at"
,
0x40
},
// '@'
{
"numbersign"
,
0x23
},
// '#'
{
"dollar"
,
0x24
},
// '$'
{
"percent"
,
0x25
},
// '%'
{
"caret"
,
0x5E
},
// '^'
{
"ampersand"
,
0x26
},
// '&'
{
"asterisk"
,
0x2A
},
// '*'
{
"parenleft"
,
0x28
},
// '('
{
"parenright"
,
0x29
},
// ')'
{
"minus"
,
0x2D
},
// '-'
{
"underscore"
,
0x5F
},
// '_'
{
"equal"
,
0x3D
},
// '='
{
"plus"
,
0x2B
},
// '+'
{
"backspace"
,
GRUB_TERM_BACKSPACE
},
// BS
{
"ctrlbackspace"
,
GRUB_TERM_CTRL
|
GRUB_TERM_BACKSPACE
},
// (DEL)
{
"tab"
,
GRUB_TERM_TAB
},
// Tab
{
"bracketleft"
,
0x5B
},
// '['
{
"braceleft"
,
0x7B
},
// '{'
{
"bracketright"
,
0x5D
},
// ']'
{
"braceright"
,
0x7D
},
// '}'
{
"enter"
,
0x0D
},
// Enter
{
"semicolon"
,
0x3B
},
// ';'
{
"colon"
,
0x3A
},
// ':'
{
"quote"
,
0x27
},
// '\''
{
"doublequote"
,
0x22
},
// '"'
{
"backquote"
,
0x60
},
// '`'
{
"tilde"
,
0x7E
},
// '~'
{
"backslash"
,
0x5C
},
// '\\'
{
"bar"
,
0x7C
},
// '|'
{
"comma"
,
0x2C
},
// ','
{
"less"
,
0x3C
},
// '<'
{
"period"
,
0x2E
},
// '.'
{
"greater"
,
0x3E
},
// '>'
{
"slash"
,
0x2F
},
// '/'
{
"question"
,
0x3F
},
// '?'
{
"space"
,
0x20
},
// Space
{
"F1"
,
GRUB_TERM_KEY_F1
},
{
"F2"
,
GRUB_TERM_KEY_F2
},
{
"F3"
,
GRUB_TERM_KEY_F3
},
{
"F4"
,
GRUB_TERM_KEY_F4
},
{
"F5"
,
GRUB_TERM_KEY_F5
},
{
"F6"
,
GRUB_TERM_KEY_F6
},
{
"F7"
,
GRUB_TERM_KEY_F7
},
{
"F8"
,
GRUB_TERM_KEY_F8
},
{
"F9"
,
GRUB_TERM_KEY_F9
},
{
"F10"
,
GRUB_TERM_KEY_F10
},
{
"F11"
,
GRUB_TERM_KEY_F11
},
{
"F12"
,
GRUB_TERM_KEY_F12
},
{
"home"
,
GRUB_TERM_KEY_HOME
},
{
"uparrow"
,
GRUB_TERM_KEY_UP
},
{
"pageup"
,
GRUB_TERM_KEY_NPAGE
},
// PgUp
{
"leftarrow"
,
GRUB_TERM_KEY_LEFT
},
{
"center"
,
GRUB_TERM_KEY_CENTER
},
// keypad center key
{
"rightarrow"
,
GRUB_TERM_KEY_RIGHT
},
{
"end"
,
GRUB_TERM_KEY_END
},
{
"downarrow"
,
GRUB_TERM_KEY_DOWN
},
{
"pagedown"
,
GRUB_TERM_KEY_PPAGE
},
// PgDn
{
"insert"
,
GRUB_TERM_KEY_INSERT
},
// Insert
{
"delete"
,
GRUB_TERM_KEY_DC
},
// Delete
{
"shiftF1"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F1
},
{
"shiftF2"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F2
},
{
"shiftF3"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F3
},
{
"shiftF4"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F4
},
{
"shiftF5"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F5
},
{
"shiftF6"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F6
},
{
"shiftF7"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F7
},
{
"shiftF8"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F8
},
{
"shiftF9"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F9
},
{
"shiftF10"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F10
},
{
"shiftF11"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F11
},
{
"shiftF12"
,
GRUB_TERM_SHIFT
|
GRUB_TERM_KEY_F12
},
{
"ctrlF1"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F1
},
{
"ctrlF2"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F2
},
{
"ctrlF3"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F3
},
{
"ctrlF4"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F4
},
{
"ctrlF5"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F5
},
{
"ctrlF6"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F6
},
{
"ctrlF7"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F7
},
{
"ctrlF8"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F8
},
{
"ctrlF9"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F9
},
{
"ctrlF10"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F10
},
{
"ctrlF11"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F11
},
{
"ctrlF12"
,
GRUB_TERM_CTRL
|
GRUB_TERM_KEY_F12
},
// A=Alt or AltGr. Provided by steve.
{
"Aq"
,
GRUB_TERM_ALT
|
0x71
},
{
"Aw"
,
GRUB_TERM_ALT
|
0x77
},
{
"Ae"
,
GRUB_TERM_ALT
|
0x65
},
{
"Ar"
,
GRUB_TERM_ALT
|
0x72
},
{
"At"
,
GRUB_TERM_ALT
|
0x74
},
{
"Ay"
,
GRUB_TERM_ALT
|
0x79
},
{
"Au"
,
GRUB_TERM_ALT
|
0x75
},
{
"Ai"
,
GRUB_TERM_ALT
|
0x69
},
{
"Ao"
,
GRUB_TERM_ALT
|
0x6F
},
{
"Ap"
,
GRUB_TERM_ALT
|
0x70
},
{
"Aa"
,
GRUB_TERM_ALT
|
0x61
},
{
"As"
,
GRUB_TERM_ALT
|
0x73
},
{
"Ad"
,
GRUB_TERM_ALT
|
0x64
},
{
"Af"
,
GRUB_TERM_ALT
|
0x66
},
{
"Ag"
,
GRUB_TERM_ALT
|
0x67
},
{
"Ah"
,
GRUB_TERM_ALT
|
0x68
},
{
"Aj"
,
GRUB_TERM_ALT
|
0x6A
},
{
"Ak"
,
GRUB_TERM_ALT
|
0x6B
},
{
"Al"
,
GRUB_TERM_ALT
|
0x6C
},
{
"Az"
,
GRUB_TERM_ALT
|
0x7A
},
{
"Ax"
,
GRUB_TERM_ALT
|
0x78
},
{
"Ac"
,
GRUB_TERM_ALT
|
0x63
},
{
"Av"
,
GRUB_TERM_ALT
|
0x76
},
{
"Ab"
,
GRUB_TERM_ALT
|
0x62
},
{
"An"
,
GRUB_TERM_ALT
|
0x6E
},
{
"Am"
,
GRUB_TERM_ALT
|
0x6D
},
{
"A1"
,
GRUB_TERM_ALT
|
0x31
},
{
"A2"
,
GRUB_TERM_ALT
|
0x32
},
{
"A3"
,
GRUB_TERM_ALT
|
0x33
},
{
"A4"
,
GRUB_TERM_ALT
|
0x34
},
{
"A5"
,
GRUB_TERM_ALT
|
0x35
},
{
"A6"
,
GRUB_TERM_ALT
|
0x36
},
{
"A7"
,
GRUB_TERM_ALT
|
0x37
},
{
"A8"
,
GRUB_TERM_ALT
|
0x38
},
{
"A9"
,
GRUB_TERM_ALT
|
0x39
},
{
"A0"
,
GRUB_TERM_ALT
|
0x30
},
//{"oem102", 0x5c},
//{"shiftoem102", 0x7c},
{
"Aminus"
,
GRUB_TERM_ALT
|
0x2D
},
{
"Aequal"
,
GRUB_TERM_ALT
|
0x3D
},
{
"Abracketleft"
,
GRUB_TERM_ALT
|
0x5B
},
{
"Abracketright"
,
GRUB_TERM_ALT
|
0x5D
},
{
"Asemicolon"
,
GRUB_TERM_ALT
|
0x3B
},
{
"Aquote"
,
GRUB_TERM_ALT
|
0x27
},
{
"Abackquote"
,
GRUB_TERM_ALT
|
0x60
},
{
"Abackslash"
,
GRUB_TERM_ALT
|
0x5C
},
{
"Acomma"
,
GRUB_TERM_ALT
|
0x2C
},
{
"Aperiod"
,
GRUB_TERM_ALT
|
0x2E
},
{
"Aslash"
,
GRUB_TERM_ALT
|
0x2F
},
{
"Acolon"
,
GRUB_TERM_ALT
|
0x3A
},
{
"Aplus"
,
GRUB_TERM_ALT
|
0x2B
},
{
"Aless"
,
GRUB_TERM_ALT
|
0x3C
},
{
"Aunderscore"
,
GRUB_TERM_ALT
|
0x5F
},
{
"Agreater"
,
GRUB_TERM_ALT
|
0x3E
},
{
"Aquestion"
,
GRUB_TERM_ALT
|
0x3F
},
{
"Atilde"
,
GRUB_TERM_ALT
|
0x7E
},
{
"Abraceleft"
,
GRUB_TERM_ALT
|
0x7B
},
{
"Abar"
,
GRUB_TERM_ALT
|
0x7C
},
{
"Abraceright"
,
GRUB_TERM_ALT
|
0x7D
},
{
"Adoublequote"
,
GRUB_TERM_ALT
|
0x22
},
};
static
int
grub_keymap_getkey
(
int
key
)
{
int
i
;
if
(
key
==
GRUB_TERM_NO_KEY
)
return
key
;
if
(
setkey_keymap
.
cnt
>
MAX_KEYMAP
)
setkey_keymap
.
cnt
=
MAX_KEYMAP
;
for
(
i
=
0
;
i
<
setkey_keymap
.
cnt
;
i
++
)
{
if
(
key
==
setkey_keymap
.
in
[
i
])
{
key
=
setkey_keymap
.
out
[
i
];
break
;
}
}
return
key
;
}
static
void
grub_keymap_reset
(
void
)
{
grub_memset
(
&
setkey_keymap
,
0
,
sizeof
(
struct
keymap
));
}
static
grub_err_t
grub_keymap_add
(
int
in
,
int
out
)
{
if
(
in
==
GRUB_TERM_NO_KEY
||
out
==
GRUB_TERM_NO_KEY
)
return
grub_error
(
GRUB_ERR_BAD_ARGUMENT
,
"invalid key: %d -> %d"
,
in
,
out
);
if
(
setkey_keymap
.
cnt
>=
MAX_KEYMAP
)
return
grub_error
(
GRUB_ERR_OUT_OF_MEMORY
,
"keymap FULL %d"
,
setkey_keymap
.
cnt
);
setkey_keymap
.
in
[
setkey_keymap
.
cnt
]
=
in
;
setkey_keymap
.
out
[
setkey_keymap
.
cnt
]
=
out
;
setkey_keymap
.
cnt
++
;
return
GRUB_ERR_NONE
;
}
static
void
grub_keymap_enable
(
void
)
{
grub_key_remap
=
grub_keymap_getkey
;
}
static
void
grub_keymap_disable
(
void
)
{
grub_key_remap
=
NULL
;
}
static
void
grub_keymap_status
(
void
)
{
int
i
;
if
(
setkey_keymap
.
cnt
>
MAX_KEYMAP
)
setkey_keymap
.
cnt
=
MAX_KEYMAP
;
for
(
i
=
0
;
i
<
setkey_keymap
.
cnt
;
i
++
)
{
grub_printf
(
"0x%x -> 0x%x
\n
"
,
setkey_keymap
.
in
[
i
],
setkey_keymap
.
out
[
i
]);
}
}
static
const
struct
grub_arg_option
options
[]
=
{
{
"reset"
,
'r'
,
0
,
N_
(
"Reset keymap."
),
0
,
0
},
{
"enable"
,
'e'
,
0
,
N_
(
"Enable keymap."
),
0
,
0
},
{
"disable"
,
'd'
,
0
,
N_
(
"Disable keymap."
),
0
,
0
},
{
"status"
,
's'
,
0
,
N_
(
"Display keymap."
),
0
,
0
},
{
0
,
0
,
0
,
0
,
0
,
0
}
};
enum
options
{
SETKEY_RESET
,
SETKEY_ENABLE
,
SETKEY_DISABLE
,
SETKEY_STATUS
,
};
static
int
ishex
(
const
char
*
str
)
{
if
(
grub_strlen
(
str
)
<
3
||
str
[
0
]
!=
'0'
)
return
0
;
if
(
str
[
1
]
!=
'x'
&&
str
[
1
]
!=
'X'
)
return
0
;
return
1
;
}
static
int
parse_key
(
const
char
*
str
)
{
int
i
;
if
(
ishex
(
str
))
return
grub_strtol
(
str
,
NULL
,
16
);
if
(
grub_strlen
(
str
)
==
1
)
return
(
int
)
str
[
0
];
for
(
i
=
0
;
i
<
(
int
)
(
sizeof
(
keysym_table
)
/
sizeof
(
keysym_table
[
0
]));
i
++
)
{
if
(
grub_strcmp
(
str
,
keysym_table
[
i
].
name
)
==
0
)
return
keysym_table
[
i
].
code
;
}
grub_error
(
GRUB_ERR_BAD_ARGUMENT
,
"invalid key %s"
,
str
);
return
0
;
}
static
grub_err_t
grub_cmd_setkey
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
)
{
struct
grub_arg_list
*
state
=
ctxt
->
state
;
int
in
,
out
;
if
(
state
[
SETKEY_ENABLE
].
set
)
{
grub_keymap_enable
();
goto
out
;
}
if
(
state
[
SETKEY_DISABLE
].
set
)
{
grub_keymap_disable
();
goto
out
;
}
if
(
state
[
SETKEY_RESET
].
set
)
{
grub_keymap_reset
();
goto
out
;
}
if
(
state
[
SETKEY_STATUS
].
set
)
{
grub_keymap_status
();
goto
out
;
}
if
(
argc
!=
2
)
{
grub_printf
(
"Key names: 0-9, A-Z, a-z or escape, exclam, at, numbersign, dollar,"
"percent, caret, ampersand, asterisk, parenleft, parenright, minus,"
"underscore, equal, plus, backspace, tab, bracketleft, braceleft,"
"bracketright, braceright, enter, semicolon, colon, quote, doublequote,"
"backquote, tilde, backslash, bar, comma, less, period, greater,"
"slash, question, alt, space, delete, [ctrl|shift]F1-12."
"For Alt+ prefix with A, e.g.
\'
setkey at Aequal
\'
."
);
goto
out
;
}
in
=
parse_key
(
args
[
1
]);
out
=
parse_key
(
args
[
0
]);
if
(
!
in
||
!
out
)
goto
out
;
grub_keymap_add
(
in
,
out
);
out:
return
grub_errno
;
}
static
grub_extcmd_t
cmd
;
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
);
}
GRUB_MOD_FINI
(
setkey
)
{
grub_unregister_extcmd
(
cmd
);
}
GRUB2/MOD_SRC/grub-2.04/include/grub/term.h
0 → 100644
View file @
a68629a9
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003,2005,2007,2008,2009,2010 Free Software Foundation, Inc.
*
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GRUB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GRUB_TERM_HEADER
#define GRUB_TERM_HEADER 1
#define GRUB_TERM_NO_KEY 0
/* Internal codes used by GRUB to represent terminal input. */
/* Only for keys otherwise not having shifted modification. */
#define GRUB_TERM_SHIFT 0x01000000
#define GRUB_TERM_CTRL 0x02000000
#define GRUB_TERM_ALT 0x04000000
/* Keys without associated character. */
#define GRUB_TERM_EXTENDED 0x00800000
#define GRUB_TERM_KEY_MASK 0x00ffffff
#define GRUB_TERM_KEY_LEFT (GRUB_TERM_EXTENDED | 0x4b)
#define GRUB_TERM_KEY_RIGHT (GRUB_TERM_EXTENDED | 0x4d)
#define GRUB_TERM_KEY_UP (GRUB_TERM_EXTENDED | 0x48)
#define GRUB_TERM_KEY_DOWN (GRUB_TERM_EXTENDED | 0x50)
#define GRUB_TERM_KEY_HOME (GRUB_TERM_EXTENDED | 0x47)
#define GRUB_TERM_KEY_END (GRUB_TERM_EXTENDED | 0x4f)
#define GRUB_TERM_KEY_DC (GRUB_TERM_EXTENDED | 0x53)
#define GRUB_TERM_KEY_PPAGE (GRUB_TERM_EXTENDED | 0x49)
#define GRUB_TERM_KEY_NPAGE (GRUB_TERM_EXTENDED | 0x51)
#define GRUB_TERM_KEY_F1 (GRUB_TERM_EXTENDED | 0x3b)
#define GRUB_TERM_KEY_F2 (GRUB_TERM_EXTENDED | 0x3c)
#define GRUB_TERM_KEY_F3 (GRUB_TERM_EXTENDED | 0x3d)
#define GRUB_TERM_KEY_F4 (GRUB_TERM_EXTENDED | 0x3e)
#define GRUB_TERM_KEY_F5 (GRUB_TERM_EXTENDED | 0x3f)
#define GRUB_TERM_KEY_F6 (GRUB_TERM_EXTENDED | 0x40)
#define GRUB_TERM_KEY_F7 (GRUB_TERM_EXTENDED | 0x41)
#define GRUB_TERM_KEY_F8 (GRUB_TERM_EXTENDED | 0x42)
#define GRUB_TERM_KEY_F9 (GRUB_TERM_EXTENDED | 0x43)
#define GRUB_TERM_KEY_F10 (GRUB_TERM_EXTENDED | 0x44)
#define GRUB_TERM_KEY_F11 (GRUB_TERM_EXTENDED | 0x57)
#define GRUB_TERM_KEY_F12 (GRUB_TERM_EXTENDED | 0x58)
#define GRUB_TERM_KEY_INSERT (GRUB_TERM_EXTENDED | 0x52)
#define GRUB_TERM_KEY_CENTER (GRUB_TERM_EXTENDED | 0x4c)
/* Hex value is used for ESC, since '\e' is nonstandard */
#define GRUB_TERM_ESC 0x1b
#define GRUB_TERM_TAB '\t'
#define GRUB_TERM_BACKSPACE '\b'
#define GRUB_PROGRESS_NO_UPDATE -1
#define GRUB_PROGRESS_FAST 0
#define GRUB_PROGRESS_SLOW 2
#ifndef ASM_FILE
#include <grub/err.h>
#include <grub/symbol.h>
#include <grub/types.h>
#include <grub/unicode.h>
#include <grub/list.h>
/* These are used to represent the various color states we use. */
typedef
enum
{
/* The color used to display all text that does not use the
user defined colors below. */
GRUB_TERM_COLOR_STANDARD
,
/* The user defined colors for normal text. */
GRUB_TERM_COLOR_NORMAL
,
/* The user defined colors for highlighted text. */
GRUB_TERM_COLOR_HIGHLIGHT
}
grub_term_color_state
;
/* Flags for representing the capabilities of a terminal. */
/* Some notes about the flags:
- These flags are used by higher-level functions but not terminals
themselves.
- If a terminal is dumb, you may assume that only putchar, getkey and
checkkey are called.
- Some fancy features (setcolorstate, setcolor and setcursor) can be set
to NULL. */
/* Set when input characters shouldn't be echoed back. */
#define GRUB_TERM_NO_ECHO (1 << 0)
/* Set when the editing feature should be disabled. */
#define GRUB_TERM_NO_EDIT (1 << 1)
/* Set when the terminal cannot do fancy things. */
#define GRUB_TERM_DUMB (1 << 2)
/* Which encoding does terminal expect stream to be. */
#define GRUB_TERM_CODE_TYPE_SHIFT 3
#define GRUB_TERM_CODE_TYPE_MASK (7 << GRUB_TERM_CODE_TYPE_SHIFT)
/* Only ASCII characters accepted. */
#define GRUB_TERM_CODE_TYPE_ASCII (0 << GRUB_TERM_CODE_TYPE_SHIFT)
/* Expects CP-437 characters (ASCII + pseudographics). */
#define GRUB_TERM_CODE_TYPE_CP437 (1 << GRUB_TERM_CODE_TYPE_SHIFT)
/* UTF-8 stream in logical order. Usually used for terminals
which just forward the stream to another computer. */
#define GRUB_TERM_CODE_TYPE_UTF8_LOGICAL (2 << GRUB_TERM_CODE_TYPE_SHIFT)
/* UTF-8 in visual order. Like UTF-8 logical but for buggy endpoints. */
#define GRUB_TERM_CODE_TYPE_UTF8_VISUAL (3 << GRUB_TERM_CODE_TYPE_SHIFT)
/* Glyph description in visual order. */
#define GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS (4 << GRUB_TERM_CODE_TYPE_SHIFT)
/* Bitmasks for modifier keys returned by grub_getkeystatus. */
#define GRUB_TERM_STATUS_RSHIFT (1 << 0)
#define GRUB_TERM_STATUS_LSHIFT (1 << 1)
#define GRUB_TERM_STATUS_RCTRL (1 << 2)
#define GRUB_TERM_STATUS_RALT (1 << 3)
#define GRUB_TERM_STATUS_SCROLL (1 << 4)
#define GRUB_TERM_STATUS_NUM (1 << 5)
#define GRUB_TERM_STATUS_CAPS (1 << 6)
#define GRUB_TERM_STATUS_LCTRL (1 << 8)
#define GRUB_TERM_STATUS_LALT (1 << 9)
/* Menu-related geometrical constants. */
/* The number of columns/lines between messages/borders/etc. */
#define GRUB_TERM_MARGIN 1
/* The number of columns of scroll information. */
#define GRUB_TERM_SCROLL_WIDTH 1
struct
grub_term_input
{
/* The next terminal. */
struct
grub_term_input
*
next
;
struct
grub_term_input
**
prev
;
/* The terminal name. */
const
char
*
name
;
/* Initialize the terminal. */
grub_err_t
(
*
init
)
(
struct
grub_term_input
*
term
);
/* Clean up the terminal. */
grub_err_t
(
*
fini
)
(
struct
grub_term_input
*
term
);
/* Get a character if any input character is available. Otherwise return -1 */
int
(
*
getkey
)
(
struct
grub_term_input
*
term
);
/* Get keyboard modifier status. */
int
(
*
getkeystatus
)
(
struct
grub_term_input
*
term
);
void
*
data
;
};
typedef
struct
grub_term_input
*
grub_term_input_t
;
/* Made in a way to fit into uint32_t and so be passed in a register. */
struct
grub_term_coordinate
{
grub_uint16_t
x
;
grub_uint16_t
y
;
};
struct
grub_term_output
{
/* The next terminal. */
struct
grub_term_output
*
next
;
struct
grub_term_output
**
prev
;
/* The terminal name. */
const
char
*
name
;
/* Initialize the terminal. */
grub_err_t
(
*
init
)
(
struct
grub_term_output
*
term
);
/* Clean up the terminal. */
grub_err_t
(
*
fini
)
(
struct
grub_term_output
*
term
);
/* Put a character. C is encoded in Unicode. */
void
(
*
putchar
)
(
struct
grub_term_output
*
term
,
const
struct
grub_unicode_glyph
*
c
);
/* Get the number of columns occupied by a given character C. C is
encoded in Unicode. */
grub_size_t
(
*
getcharwidth
)
(
struct
grub_term_output
*
term
,
const
struct
grub_unicode_glyph
*
c
);
/* Get the screen size. */
struct
grub_term_coordinate
(
*
getwh
)
(
struct
grub_term_output
*
term
);
/* Get the cursor position. The return value is ((X << 8) | Y). */
struct
grub_term_coordinate
(
*
getxy
)
(
struct
grub_term_output
*
term
);
/* Go to the position (X, Y). */
void
(
*
gotoxy
)
(
struct
grub_term_output
*
term
,
struct
grub_term_coordinate
pos
);
/* Clear the screen. */
void
(
*
cls
)
(
struct
grub_term_output
*
term
);
/* Set the current color to be used */
void
(
*
setcolorstate
)
(
struct
grub_term_output
*
term
,
grub_term_color_state
state
);
/* Turn on/off the cursor. */
void
(
*
setcursor
)
(
struct
grub_term_output
*
term
,
int
on
);
/* Update the screen. */
void
(
*
refresh
)
(
struct
grub_term_output
*
term
);
/* gfxterm only: put in fullscreen mode. */
grub_err_t
(
*
fullscreen
)
(
void
);
/* The feature flags defined above. */
grub_uint32_t
flags
;
/* Progress data. */
grub_uint32_t
progress_update_divisor
;
grub_uint32_t
progress_update_counter
;
void
*
data
;
};
typedef
struct
grub_term_output
*
grub_term_output_t
;
#define GRUB_TERM_DEFAULT_NORMAL_COLOR 0x07
#define GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR 0x70
#define GRUB_TERM_DEFAULT_STANDARD_COLOR 0x07
/* Current color state. */
extern
grub_uint8_t
EXPORT_VAR
(
grub_term_normal_color
);
extern
grub_uint8_t
EXPORT_VAR
(
grub_term_highlight_color
);
extern
struct
grub_term_output
*
EXPORT_VAR
(
grub_term_outputs_disabled
);
extern
struct
grub_term_input
*
EXPORT_VAR
(
grub_term_inputs_disabled
);
extern
struct
grub_term_output
*
EXPORT_VAR
(
grub_term_outputs
);
extern
struct
grub_term_input
*
EXPORT_VAR
(
grub_term_inputs
);
static
inline
void
grub_term_register_input
(
const
char
*
name
__attribute__
((
unused
)),
grub_term_input_t
term
)
{
if
(
grub_term_inputs
)
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_inputs_disabled
),
GRUB_AS_LIST
(
term
));
else
{
/* If this is the first terminal, enable automatically. */
if
(
!
term
->
init
||
term
->
init
(
term
)
==
GRUB_ERR_NONE
)
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_inputs
),
GRUB_AS_LIST
(
term
));
}
}
static
inline
void
grub_term_register_input_inactive
(
const
char
*
name
__attribute__
((
unused
)),
grub_term_input_t
term
)
{
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_inputs_disabled
),
GRUB_AS_LIST
(
term
));
}
static
inline
void
grub_term_register_input_active
(
const
char
*
name
__attribute__
((
unused
)),
grub_term_input_t
term
)
{
if
(
!
term
->
init
||
term
->
init
(
term
)
==
GRUB_ERR_NONE
)
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_inputs
),
GRUB_AS_LIST
(
term
));
}
static
inline
void
grub_term_register_output
(
const
char
*
name
__attribute__
((
unused
)),
grub_term_output_t
term
)
{
if
(
grub_term_outputs
)
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_outputs_disabled
),
GRUB_AS_LIST
(
term
));
else
{
/* If this is the first terminal, enable automatically. */
if
(
!
term
->
init
||
term
->
init
(
term
)
==
GRUB_ERR_NONE
)
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_outputs
),
GRUB_AS_LIST
(
term
));
}
}
static
inline
void
grub_term_register_output_inactive
(
const
char
*
name
__attribute__
((
unused
)),
grub_term_output_t
term
)
{
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_outputs_disabled
),
GRUB_AS_LIST
(
term
));
}
static
inline
void
grub_term_register_output_active
(
const
char
*
name
__attribute__
((
unused
)),
grub_term_output_t
term
)
{
if
(
!
term
->
init
||
term
->
init
(
term
)
==
GRUB_ERR_NONE
)
grub_list_push
(
GRUB_AS_LIST_P
(
&
grub_term_outputs
),
GRUB_AS_LIST
(
term
));
}
static
inline
void
grub_term_unregister_input
(
grub_term_input_t
term
)
{
grub_list_remove
(
GRUB_AS_LIST
(
term
));
grub_list_remove
(
GRUB_AS_LIST
(
term
));
}
static
inline
void
grub_term_unregister_output
(
grub_term_output_t
term
)
{
grub_list_remove
(
GRUB_AS_LIST
(
term
));
grub_list_remove
(
GRUB_AS_LIST
(
term
));
}
#define FOR_ACTIVE_TERM_INPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_inputs))
#define FOR_DISABLED_TERM_INPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_inputs_disabled))
#define FOR_ACTIVE_TERM_OUTPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_outputs))
#define FOR_DISABLED_TERM_OUTPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_outputs_disabled))
void
grub_putcode
(
grub_uint32_t
code
,
struct
grub_term_output
*
term
);
int
EXPORT_FUNC
(
grub_getkey
)
(
void
);
int
EXPORT_FUNC
(
grub_getkey_noblock
)
(
void
);
extern
int
(
*
EXPORT_VAR
(
grub_key_remap
))(
int
key
);
void
grub_cls
(
void
);
void
EXPORT_FUNC
(
grub_refresh
)
(
void
);
void
grub_puts_terminal
(
const
char
*
str
,
struct
grub_term_output
*
term
);
struct
grub_term_coordinate
*
grub_term_save_pos
(
void
);
void
grub_term_restore_pos
(
struct
grub_term_coordinate
*
pos
);
static
inline
unsigned
grub_term_width
(
struct
grub_term_output
*
term
)
{
return
term
->
getwh
(
term
).
x
?
:
80
;
}
static
inline
unsigned
grub_term_height
(
struct
grub_term_output
*
term
)
{
return
term
->
getwh
(
term
).
y
?
:
24
;
}
static
inline
struct
grub_term_coordinate
grub_term_getxy
(
struct
grub_term_output
*
term
)
{
return
term
->
getxy
(
term
);
}
static
inline
void
grub_term_refresh
(
struct
grub_term_output
*
term
)
{
if
(
term
->
refresh
)
term
->
refresh
(
term
);
}
static
inline
void
grub_term_gotoxy
(
struct
grub_term_output
*
term
,
struct
grub_term_coordinate
pos
)
{
term
->
gotoxy
(
term
,
pos
);
}
static
inline
void
grub_term_setcolorstate
(
struct
grub_term_output
*
term
,
grub_term_color_state
state
)
{
if
(
term
->
setcolorstate
)
term
->
setcolorstate
(
term
,
state
);
}
static
inline
void
grub_setcolorstate
(
grub_term_color_state
state
)
{
struct
grub_term_output
*
term
;
FOR_ACTIVE_TERM_OUTPUTS
(
term
)
grub_term_setcolorstate
(
term
,
state
);
}
/* Turn on/off the cursor. */
static
inline
void
grub_term_setcursor
(
struct
grub_term_output
*
term
,
int
on
)
{
if
(
term
->
setcursor
)
term
->
setcursor
(
term
,
on
);
}
static
inline
void
grub_term_cls
(
struct
grub_term_output
*
term
)
{
if
(
term
->
cls
)
(
term
->
cls
)
(
term
);
else
{
grub_putcode
(
'\n'
,
term
);
grub_term_refresh
(
term
);
}
}
#if HAVE_FONT_SOURCE
grub_size_t
grub_unicode_estimate_width
(
const
struct
grub_unicode_glyph
*
c
);
#else
static
inline
grub_size_t
grub_unicode_estimate_width
(
const
struct
grub_unicode_glyph
*
c
__attribute__
((
unused
)))
{
if
(
grub_unicode_get_comb_type
(
c
->
base
))
return
0
;
return
1
;
}
#endif
#define GRUB_TERM_TAB_WIDTH 8
static
inline
grub_size_t
grub_term_getcharwidth
(
struct
grub_term_output
*
term
,
const
struct
grub_unicode_glyph
*
c
)
{
if
(
c
->
base
==
'\t'
)
return
GRUB_TERM_TAB_WIDTH
;
if
(
term
->
getcharwidth
)
return
term
->
getcharwidth
(
term
,
c
);
else
if
(((
term
->
flags
&
GRUB_TERM_CODE_TYPE_MASK
)
==
GRUB_TERM_CODE_TYPE_UTF8_LOGICAL
)
||
((
term
->
flags
&
GRUB_TERM_CODE_TYPE_MASK
)
==
GRUB_TERM_CODE_TYPE_UTF8_VISUAL
)
||
((
term
->
flags
&
GRUB_TERM_CODE_TYPE_MASK
)
==
GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS
))
return
grub_unicode_estimate_width
(
c
);
else
return
1
;
}
struct
grub_term_autoload
{
struct
grub_term_autoload
*
next
;
char
*
name
;
char
*
modname
;
};
extern
struct
grub_term_autoload
*
grub_term_input_autoload
;
extern
struct
grub_term_autoload
*
grub_term_output_autoload
;
static
inline
void
grub_print_spaces
(
struct
grub_term_output
*
term
,
int
number_spaces
)
{
while
(
--
number_spaces
>=
0
)
grub_putcode
(
' '
,
term
);
}
extern
void
(
*
EXPORT_VAR
(
grub_term_poll_usb
))
(
int
wait_for_completion
);
#define GRUB_TERM_REPEAT_PRE_INTERVAL 400
#define GRUB_TERM_REPEAT_INTERVAL 50
#endif
/* ! ASM_FILE */
#endif
/* ! GRUB_TERM_HEADER */
GRUB2/MOD_SRC/grub-2.04/install.sh
View file @
a68629a9
...
@@ -12,12 +12,12 @@ make install
...
@@ -12,12 +12,12 @@ make install
PATH
=
$PATH
:
$VT_DIR
/GRUB2/INSTALL/bin/:
$VT_DIR
/GRUB2/INSTALL/sbin/
PATH
=
$PATH
:
$VT_DIR
/GRUB2/INSTALL/bin/:
$VT_DIR
/GRUB2/INSTALL/sbin/
net_modules_legacy
=
"net tftp http"
net_modules_legacy
=
"net tftp http"
all_modules_legacy
=
"date drivemap blocklist regexp newc vga_text ntldr search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio lspci pci ext2 xfs ventoy chain read halt iso9660 linux16 test true sleep reboot echo videotest videoinfo videotest_checksum video_colors video_cirrus video_bochs vga vbe video_fb font video gettext extcmd terminal linux minicmd help configfile tr trig boot biosdisk disk ls tar squash4 password_pbkdf2 all_video png jpeg part_gpt part_msdos fat exfat ntfs loopback gzio normal udf gfxmenu gfxterm gfxterm_background gfxterm_menu"
all_modules_legacy
=
"
setkey
date drivemap blocklist regexp newc vga_text ntldr search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio lspci pci ext2 xfs ventoy chain read halt iso9660 linux16 test true sleep reboot echo videotest videoinfo videotest_checksum video_colors video_cirrus video_bochs vga vbe video_fb font video gettext extcmd terminal linux minicmd help configfile tr trig boot biosdisk disk ls tar squash4 password_pbkdf2 all_video png jpeg part_gpt part_msdos fat exfat ntfs loopback gzio normal udf gfxmenu gfxterm gfxterm_background gfxterm_menu"
net_modules_uefi
=
"efinet net tftp http"
net_modules_uefi
=
"efinet net tftp http"
all_modules_uefi
=
"blocklist ventoy test regexp newc search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux relocator jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop efi_uga video_bochs video_cirrus video video_fb gfxterm_background gfxterm_menu"
all_modules_uefi
=
"
setkey
blocklist ventoy test regexp newc search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux relocator jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop efi_uga video_bochs video_cirrus video video_fb gfxterm_background gfxterm_menu"
all_modules_arm64_uefi
=
"blocklist ventoy test regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
all_modules_arm64_uefi
=
"
setkey
blocklist ventoy test regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
if
[
"
$1
"
=
"uefi"
]
;
then
if
[
"
$1
"
=
"uefi"
]
;
then
...
...
INSTALL/grub/debug.cfg
View file @
a68629a9
source $prefix/keyboard.cfg.gz
submenu "Resolution Configuration" --class=debug_resolution {
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
vt_update_cur_video_mode VT_CUR_MODE
set vdid=0
while [ $vdid -lt $VTOY_VIDEO_MODE_NUM ]; do
vt_get_video_mode $vdid vtCurMode
unset vtActive
if [ "$vtCurMode" = "$VT_CUR_MODE" ]; then
set vtActive="[*]"
fi
menuentry "$vtCurMode $vtActive" --class=debug_videomode VTOY_RUN_RET {
terminal_output console
set gfxmode=$1
terminal_output gfxterm
}
vt_incr vdid 1
done
}
submenu "Screen Display Mode" --class=debug_screen_mode {
menuentry 'Force Text Mode' --class=debug_text_mode {
terminal_output console
}
menuentry 'Force Graphics Mode' --class=debug_gui_mode {
terminal_output gfxterm
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
if [ "$grub_platform" != "pc" ]; then
submenu 'Ventoy UEFI Utilities' --class=debug_util {
menuentry 'Fixup Windows BlinitializeLibrary Failure' --class=debug_util_blinit {
chainloader ${vtoy_path}/vtoyutil_${VTOY_EFI_ARCH}.efi env_param=${env_param} ${vtdebug_flag} feature=fix_windows_mmap
boot
echo -e "\npress ENTER to exit ..."
read vtInputKey
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
fi
submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
menuentry 'Check global control plugin configuration' --class=debug_control {
menuentry 'Check global control plugin configuration' --class=debug_control {
...
@@ -118,58 +172,6 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
...
@@ -118,58 +172,6 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json {
}
}
submenu "Resolution Configuration" --class=debug_resolution {
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
vt_update_cur_video_mode VT_CUR_MODE
set vdid=0
while [ $vdid -lt $VTOY_VIDEO_MODE_NUM ]; do
vt_get_video_mode $vdid vtCurMode
unset vtActive
if [ "$vtCurMode" = "$VT_CUR_MODE" ]; then
set vtActive="[*]"
fi
menuentry "$vtCurMode $vtActive" --class=debug_videomode VTOY_RUN_RET {
terminal_output console
set gfxmode=$1
terminal_output gfxterm
}
vt_incr vdid 1
done
}
submenu "Screen Display Mode" --class=debug_screen_mode {
menuentry 'Force Text Mode' --class=debug_text_mode {
terminal_output console
}
menuentry 'Force Graphics Mode' --class=debug_gui_mode {
terminal_output gfxterm
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
if [ "$grub_platform" != "pc" ]; then
submenu 'Ventoy UEFI Utilities' --class=debug_util {
menuentry 'Fixup Windows BlinitializeLibrary Failure' --class=debug_util_blinit {
chainloader ${vtoy_path}/vtoyutil_${VTOY_EFI_ARCH}.efi env_param=${env_param} ${vtdebug_flag} feature=fix_windows_mmap
boot
echo -e "\npress ENTER to exit ..."
read vtInputKey
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
fi
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
echo 'Return ...'
}
}
INSTALL/grub/keyboard.cfg.gz
0 → 100644
View file @
a68629a9
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment