Server IP : 23.254.227.96 / Your IP : 216.73.216.7 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3.6/site-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""" from textwrap import dedent from cloudinit import distros from cloudinit import log as logging from cloudinit.config.schema import ( MetaSchema, get_meta_doc, validate_cloudconfig_schema, ) from cloudinit.settings import PER_INSTANCE frequency = PER_INSTANCE # FIXME: setting keyboard layout should be supported by all OSes. # But currently only implemented for Linux distributions that use systemd. osfamilies = ["arch", "debian", "redhat", "suse"] distros = distros.Distro.expand_osfamily(osfamilies) DEFAULT_KEYBOARD_MODEL = "pc105" meta: MetaSchema = { "id": "cc_keyboard", "name": "Keyboard", "title": "Set keyboard layout", "description": dedent( """\ Handle keyboard configuration. """ ), "distros": 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": frequency, } schema = { "type": "object", "properties": { "keyboard": { "type": "object", "properties": { "layout": { "type": "string", "description": dedent( """\ Required. Keyboard layout. Corresponds to XKBLAYOUT. """ ), }, "model": { "type": "string", "default": DEFAULT_KEYBOARD_MODEL, "description": dedent( """\ Optional. Keyboard model. Corresponds to XKBMODEL. """ ), }, "variant": { "type": "string", "description": dedent( """\ Optional. Keyboard variant. Corresponds to XKBVARIANT. """ ), }, "options": { "type": "string", "description": dedent( """\ Optional. Keyboard options. Corresponds to XKBOPTIONS. """ ), }, }, "required": ["layout"], "additionalProperties": False, } }, } __doc__ = get_meta_doc(meta, schema) LOG = logging.getLogger(__name__) def handle(name, cfg, cloud, log, args): if "keyboard" not in cfg: LOG.debug( "Skipping module named %s, no 'keyboard' section found", name ) return validate_cloudconfig_schema(cfg, schema) 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