Server IP : 195.201.23.43 / Your IP : 3.15.0.242 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3/dist-packages/cloudinit/config/ |
Upload File : |
# 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""" import logging from textwrap import dedent from cloudinit import distros 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, # plus Alpine Linux. DEFAULT_KEYBOARD_MODEL = "pc105" supported_distros = distros.Distro.expand_osfamily( ["alpine", "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 """ ), dedent( """\ # For Alpine Linux set specific keyboard layout and variant, # as used by setup-keymap. Model and options are ignored. keyboard: layout: gb variant: gb-extd """ ), ], "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, 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"] if cloud.distro.name == "alpine": model = kb_cfg.get("model", "") else: 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)Private