D7net Mini Sh3LL v1
Current File : /var/../usr/../lib/python3/dist-packages/cloudinit/config/cc_keyboard.py |
# Copyright (c) 2022 Floris Bos
#
# Author: Floris Bos <bos@je-eigen-domein.nl>
#
# This file is part of cloud-init. See LICENSE file for license information.
"""keyboard: set keyboard layout"""
from logging import Logger
from textwrap import dedent
from cloudinit import distros
from cloudinit import log as logging
from cloudinit.cloud import Cloud
from cloudinit.config import Config
from cloudinit.config.schema import MetaSchema, get_meta_doc
from cloudinit.settings import PER_INSTANCE
# FIXME: setting keyboard layout should be supported by all OSes.
# But currently only implemented for Linux distributions that use systemd.
DEFAULT_KEYBOARD_MODEL = "pc105"
supported_distros = distros.Distro.expand_osfamily(
["arch", "debian", "redhat", "suse"]
)
meta: MetaSchema = {
"id": "cc_keyboard",
"name": "Keyboard",
"title": "Set keyboard layout",
"description": "Handle keyboard configuration.",
"distros": supported_distros,
"examples": [
dedent(
"""\
# Set keyboard layout to "us"
keyboard:
layout: us
"""
),
dedent(
"""\
# Set specific keyboard layout, model, variant, options
keyboard:
layout: de
model: pc105
variant: nodeadkeys
options: compose:rwin
"""
),
],
"frequency": PER_INSTANCE,
"activate_by_schema_keys": ["keyboard"],
}
__doc__ = get_meta_doc(meta)
LOG = logging.getLogger(__name__)
def handle(
name: str, cfg: Config, cloud: Cloud, log: Logger, args: list
) -> None:
if "keyboard" not in cfg:
LOG.debug(
"Skipping module named %s, no 'keyboard' section found", name
)
return
kb_cfg = cfg["keyboard"]
layout = kb_cfg["layout"]
model = kb_cfg.get("model", DEFAULT_KEYBOARD_MODEL)
variant = kb_cfg.get("variant", "")
options = kb_cfg.get("options", "")
LOG.debug("Setting keyboard layout to '%s'", layout)
cloud.distro.set_keymap(layout, model, variant, options)
# vi: ts=4 expandtab
AnonSec - 2021 | Recode By D7net