5 [[ "$mount_needs" ]] && return 1
7 require_binaries setfont loadkeys kbd_mode ||
return 1
19 if dracut_module_included
"systemd"; then
22 [[ -f /etc
/vconsole.conf
]] && .
/etc
/vconsole.conf
25 KBDSUBDIRS
=consolefonts
,consoletrans
,keymaps
,unimaps
26 DEFAULT_FONT
="${i18n_default_font:-eurlatgr}"
27 I18N_CONF
="/etc/locale.conf"
28 VCONFIG_CONF
="/etc/vconsole.conf"
30 # This is from 10redhat-i18n.
33 local MAPNAME
=${1%.map*}
36 MAPS
=$
(find ${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\
*)
39 KEYMAPS
="$KEYMAPS $map "
46 for INCL
in $
($cmd "^include " $map |
while read a a b ||
[ -n "$a" ]; do echo ${a//\"/}; done); do
47 for FN
in $
(find ${kbddir}/keymaps
-type f
-name $INCL\
*); do
48 strstr
"$KEYMAPS" " $FN " || findkeymap
$FN
54 # Function gathers variables from distributed files among the tree, maps to
55 # specified names and prints the result in format "new-name=value".
57 # $@ = list in format specified below (BNF notation)
59 # <list> ::= <element> | <element> " " <list>
60 # <element> ::= <conf-file-name> ":" <map-list>
61 # <map-list> ::= <mapping> | <mapping> "," <map-list>
62 # <mapping> ::= <src-var> "-" <dst-var> | <src-var>
64 # We assume no whitespace are allowed between symbols.
65 # <conf-file-name> is a file holding <src-var> in your system.
66 # <src-var> is a variable holding value of meaning the same as <dst-var>.
67 # <dst-var> is a variable which will be set up inside initramfs.
68 # If <dst-var> has the same name as <src-var> we can omit <dst-var>.
71 # /etc/conf.d/keymaps:KEYMAP,extended_keymaps-EXT_KEYMAPS
72 # <list> = /etc/conf.d/keymaps:KEYMAP,extended_keymaps-EXT_KEYMAPS
73 # <element> = /etc/conf.d/keymaps:KEYMAP,extended_keymaps-EXT_KEYMAPS
74 # <conf-file-name> = /etc/conf.d/keymaps
75 # <map-list> = KEYMAP,extended_keymaps-EXT_KEYMAPS
78 # <mapping> = extended_keymaps-EXT_KEYMAPS
79 # <src-var> = extended_keymaps
80 # <dst-var> = EXT_KEYMAPS
87 for map
in ${item[1]//,/ }
90 if [[ -f "${item[0]}" ]]; then
91 value
=$
(grep "^${map[0]}=" "${item[0]}")
93 echo "${map[1]:-${map[0]}}=${value}"
100 inst_multiple setfont loadkeys kbd_mode stty
102 if ! dracut_module_included
"systemd"; then
103 inst
${moddir}/console_init.sh
/lib
/udev
/console_init
104 inst_rules
${moddir}/10-console.rules
105 inst_hook cmdline
20 "${moddir}/parse-i18n.sh"
108 if [[ ${kbddir} != "/usr/share" ]]; then
110 for _src
in $
(eval echo {${KBDSUBDIRS}}); do
111 [ ! -e "${initdir}/usr/share/${_src}" ] && ln -s "${kbddir}/${_src}" "${initdir}/usr/share/${_src}"
119 for _src
in $
(eval echo ${kbddir}/{${KBDSUBDIRS}}); do
121 $DRACUT_CP -L -t "${initdir}/${_src}" "$_src"/*
124 # remove unnecessary files
125 rm -f -- "${initdir}${kbddir}/consoletrans/utflist"
126 find "${initdir}${kbddir}/" -name README\
* -delete
127 find "${initdir}${kbddir}/" -name '*.gz' -print -quit \
128 |
while read line ||
[ -n "$line" ]; do
132 find "${initdir}${kbddir}/" -name '*.bz2' -print -quit \
133 |
while read line ||
[ -n "$line" ]; do
138 install_local_i18n
() {
141 eval $
(gather_vars
${i18n_vars})
142 [ -f $I18N_CONF ] && .
$I18N_CONF
143 [ -f $VCONFIG_CONF ] && .
$VCONFIG_CONF
145 shopt -q -s nocasematch
148 if [[ ${UNICODE} = YES ||
${UNICODE} = 1 ]]
151 elif [[ ${UNICODE} = NO ||
${UNICODE} = 0 ]]
158 if [[ ! ${UNICODE} && ${LANG} =~ .
*\.UTF-?
8 ]]
162 shopt -q -u nocasematch
164 # Gentoo user may have KEYMAP set to something like "-u pl2",
167 # openSUSE user may have KEYMAP set to something like ".gz"
168 KEYMAP
=${KEYMAP/.gz/}
170 # KEYTABLE is a bit special - it defines base keymap name and UNICODE
171 # determines whether non-UNICODE or UNICODE version is used
173 if [[ ${KEYTABLE} ]]; then
174 if [[ ${UNICODE} == 1 ]]; then
175 [[ ${KEYTABLE} =~ .
*\.uni.
* ]] || KEYTABLE
=${KEYTABLE%.map*}.uni
180 # I'm not sure of the purpose of UNIKEYMAP and GRP_TOGGLE. They were in
181 # original redhat-i18n module. Anyway it won't hurt.
182 EXT_KEYMAPS
+=\
${UNIKEYMAP}\
${GRP_TOGGLE}
185 dinfo
'No KEYMAP configured.'
191 for map
in ${EXT_KEYMAPS}
193 ddebug
"Adding extra map: ${map}"
197 for keymap
in ${KEYMAPS}; do
198 inst_opt_decompress
${keymap}
201 inst_opt_decompress
${kbddir}/consolefonts
/${DEFAULT_FONT}.
*
203 if [[ ${FONT} ]] && [[ ${FONT} != ${DEFAULT_FONT} ]]
206 inst_opt_decompress
${kbddir}/consolefonts
/${FONT}.
*
211 FONT_MAP
=${FONT_MAP%.trans}
212 # There are three different formats that setfont supports
213 inst_simple
${kbddir}/consoletrans
/${FONT_MAP} \
214 || inst_simple
${kbddir}/consoletrans
/${FONT_MAP}.trans \
215 || inst_simple
${kbddir}/consoletrans
/${FONT_MAP}_to_uni.trans \
216 || dwarn
"Could not find FONT_MAP ${FONT_MAP}!"
219 if [[ ${FONT_UNIMAP} ]]
221 FONT_UNIMAP
=${FONT_UNIMAP%.uni}
222 inst_simple
${kbddir}/unimaps
/${FONT_UNIMAP}.uni
225 if dracut_module_included
"systemd" && [[ -f ${I18N_CONF} ]]; then
226 inst_simple
${I18N_CONF}
228 mksubdirs
${initdir}${I18N_CONF}
229 print_vars LC_ALL LANG
>> ${initdir}${I18N_CONF}
232 if dracut_module_included
"systemd" && [[ -f ${VCONFIG_CONF} ]]; then
233 inst_simple
${VCONFIG_CONF}
235 mksubdirs
${initdir}${VCONFIG_CONF}
236 print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP
>> ${initdir}${VCONFIG_CONF}
243 for kbddir
in ${kbddir} /usr
/lib
/kbd
/lib
/kbd
/usr
/share
/usr
/share
/kbd
245 [[ -d "${kbddir}" ]] && \
246 for dir
in ${KBDSUBDIRS//,/ }
248 [[ -d "${kbddir}/${dir}" ]] && continue
254 [[ -f $I18N_CONF && -f $VCONFIG_CONF ]] || \
255 [[ ! ${hostonly} ||
${i18n_vars} ]] ||
{
256 derror
'i18n_vars not set! Please set up i18n_vars in ' \
257 'configuration file.'
265 if [[ ${hostonly} ]] && ! [[ ${i18n_install_all} == "yes" ]]; then
266 install_local_i18n || install_all_kbd