From patchwork Sun May 12 19:55:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGHFgiDFgXlzemN6ZWs=?= X-Patchwork-Id: 1098589 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=bofc.pl Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 452FHN1Byvz9sNf for ; Mon, 13 May 2019 06:02:56 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 4FFCE1FFC1; Sun, 12 May 2019 20:02:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kwn1xO6p1ai3; Sun, 12 May 2019 20:02:52 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 096842214F; Sun, 12 May 2019 20:02:52 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 5FEB91BF366 for ; Sun, 12 May 2019 20:02:50 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 5D68784E34 for ; Sun, 12 May 2019 20:02:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DO1rLAqNN2uP for ; Sun, 12 May 2019 20:02:49 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from cache12.mydevil.net (cache12.mydevil.net [128.204.216.223]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 9E57484DFF for ; Sun, 12 May 2019 20:02:49 +0000 (UTC) From: =?utf-8?b?TWljaGHFgiDFgXlzemN6ZWs=?= To: buildroot@buildroot.org Date: Sun, 12 May 2019 21:55:49 +0200 Message-Id: <20190512195550.24457-12-michal.lyszczek@bofc.pl> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20190512195550.24457-1-michal.lyszczek@bofc.pl> References: <20190512195550.24457-1-michal.lyszczek@bofc.pl> MIME-Version: 1.0 X-AV-Check: Passed X-System-Sender: michal.lyszczek@bofc.pl Subject: [Buildroot] [PATCH v2 12/13] package/openrc: add support for setting terminal keymap X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?b?TWljaGHFgiDFgXlzemN6ZWs=?= Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" When openrc init is enabled, user can chose to set terminal keymap or keep default settings. * system/Config.in New config BR2_TARGET_GENERIC_TERM_KEYMAP which is available only when openrc is selected and kbd package is installed. Used to set keymap from /usr/share/keymaps * package/openrc/openrc.mk monitors BR2_TARGET_GENERIC_TERM_KEYMAP and configures init to use specified keymap. It will also check if keymap exists in the system Signed-off-by: Michał Łyszczek --- Changes v1 -> v2 Own initiative: - fix "kdb" typo in system/Config.in (should be kbd) --- package/openrc/openrc.mk | 28 ++++++++++++++++++++++++++++ system/Config.in | 12 ++++++++++++ 2 files changed, 40 insertions(+) diff --git a/package/openrc/openrc.mk b/package/openrc/openrc.mk index 8d5e6ec381..0498c9c95f 100644 --- a/package/openrc/openrc.mk +++ b/package/openrc/openrc.mk @@ -74,4 +74,32 @@ OPENRC_TARGET_FINALIZE_HOOKS += OPENRC_TERMENCODING endif # BR2_TARGET_GENERIC_TERMENCODING_UTF8 endif # BR2_TARGET_GENERIC_TERMENCODING_KEEP +OPENRC_TERM_KEYMAP = $(call qstrip,$(BR2_TARGET_GENERIC_TERM_KEYMAP)) +ifneq ($(OPENRC_TERM_KEYMAP),) +OPENRC_DEPENDENCIES += kbd +# 1) check if passed kaymap exists in the installed system +# 2) set keymap value in /etc/conf.d/keymaps +# 3) set keyboard mode to same encoding as terminal encoding +define OPENRC_SET_TERM_KEYMAP + if ! find $(TARGET_DIR)/usr/share/keymaps -name "*$(OPENRC_TERM_KEYMAP).map*" | grep -q ".*"; then \ + echo "keymap $(OPENRC_TERM_KEYMAP) not found in $(TARGET_DIR)/usr/share/keymaps"; \ + exit 1; \ + fi + echo "keymap=\"$(OPENRC_TERM_KEYMAP)\"" > $(TARGET_DIR)/etc/conf.d/keymaps + if test -f $(TARGET_DIR)/etc/conf.d/termencoding; then \ + grep "unicode=" $(TARGET_DIR)/etc/conf.d/termencoding >> $(TARGET_DIR)/etc/conf.d/keymaps; \ + fi +endef +else +# openrc installs keymaps service by default, so if keymap is not set (like +# because kbd is not installed) we need to remove keymaps service from boot +# so there are no errors about missing programs. If kbd is installed, but +# keymap config is empty value, we also remove service to keep default values. +define OPENRC_SET_TERM_KEYMAP + $(RM) $(TARGET_DIR)/etc/runlevels/boot/{keymaps,save-keymaps} + $(RM) $(TARGET_DIR)/etc/conf.d/keymaps +endef +endif # OPENRC_TERM_KEYMAP +OPENRC_TARGET_FINALIZE_HOOKS += OPENRC_SET_TERM_KEYMAP + $(eval $(generic-package)) diff --git a/system/Config.in b/system/Config.in index 08bcb517e4..e0421d8dff 100644 --- a/system/Config.in +++ b/system/Config.in @@ -407,6 +407,18 @@ config BR2_TARGET_GENERIC_TERMENCODING_UTF8 bool "utf-8" endchoice +config BR2_TARGET_GENERIC_TERM_KEYMAP + string "Set terminal keymap" + default "us" + depends on BR2_INIT_OPENRC && BR2_PACKAGE_KBD + help + Configures all virtual terminals (on /dev/tty[1-12]) to use + specified keymap. List of keymaps are installed in /usr/share/keymaps. + Set to empty, to keep default keymap. + +comment "Setting terminal keymap requires OpenRC and kbd package" + depends on !(BR2_INIT_OPENRC && BR2_PACKAGE_KBD) + endif # BR2_ROOTFS_SKELETON_DEFAULT config BR2_SYSTEM_DEFAULT_PATH