diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index d1b62b4d6907319b1ae18568573b8a2e16d3fb68..9dafae8b76a6c2fbeeb71859350aaa5b0b27427c 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -202,7 +202,8 @@ KeyboardPage::prettyStatus() const QList< Calamares::job_ptr > KeyboardPage::createJobs( const QString& xOrgConfFileName, - const QString& convertedKeymapPath ) + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard ) { QList< Calamares::job_ptr > list; QString selectedModel = m_models.value( ui->comboBoxModel->currentText(), @@ -212,7 +213,8 @@ KeyboardPage::createJobs( const QString& xOrgConfFileName, m_selectedLayout, m_selectedVariant, xOrgConfFileName, - convertedKeymapPath ); + convertedKeymapPath, + writeEtcDefaultKeyboard ); list.append( Calamares::job_ptr( j ) ); return list; diff --git a/src/modules/keyboard/KeyboardPage.h b/src/modules/keyboard/KeyboardPage.h index a2243e95790873ce7badc87da88cf515d6337210..c60d62b2b3bc906ae285e7b1f7b838a7c75ade7a 100644 --- a/src/modules/keyboard/KeyboardPage.h +++ b/src/modules/keyboard/KeyboardPage.h @@ -50,7 +50,8 @@ public: QString prettyStatus() const; QList< Calamares::job_ptr > createJobs( const QString& xOrgConfFileName, - const QString& convertedKeymapPath ); + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard ); void onActivate(); void finalize(); diff --git a/src/modules/keyboard/KeyboardViewStep.cpp b/src/modules/keyboard/KeyboardViewStep.cpp index fa6f60c81e989dd1317640a1015be79964048950..e6521e1ab2a23159b7dccddbbb92d62091eb2d8d 100644 --- a/src/modules/keyboard/KeyboardViewStep.cpp +++ b/src/modules/keyboard/KeyboardViewStep.cpp @@ -123,7 +123,9 @@ void KeyboardViewStep::onLeave() { m_widget->finalize(); - m_jobs = m_widget->createJobs( m_xOrgConfFileName, m_convertedKeymapPath ); + m_jobs = m_widget->createJobs( m_xOrgConfFileName, + m_convertedKeymapPath, + m_writeEtcDefaultKeyboard ); m_prettyStatus = m_widget->prettyStatus(); } @@ -157,4 +159,14 @@ KeyboardViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_convertedKeymapPath = QString(); } + + if ( configurationMap.contains( "writeEtcDefaultKeyboard" ) && + configurationMap.value( "writeEtcDefaultKeyboard" ).type() == QVariant::Bool ) + { + m_writeEtcDefaultKeyboard = configurationMap.value( "writeEtcDefaultKeyboard" ).toBool(); + } + else + { + m_writeEtcDefaultKeyboard = true; + } } diff --git a/src/modules/keyboard/KeyboardViewStep.h b/src/modules/keyboard/KeyboardViewStep.h index 476d71a3c80897c28c4e7b1ad47acda18b05c4b6..239639251e23c36c16e9c5fc3f64ad1f8412c94c 100644 --- a/src/modules/keyboard/KeyboardViewStep.h +++ b/src/modules/keyboard/KeyboardViewStep.h @@ -64,6 +64,7 @@ private: QString m_xOrgConfFileName; QString m_convertedKeymapPath; + bool m_writeEtcDefaultKeyboard; QList< Calamares::job_ptr > m_jobs; }; diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.cpp b/src/modules/keyboard/SetKeyboardLayoutJob.cpp index 80024cfa5818239bb3eecab0fff2e910c73e51fb..430a227eb4b51ea1b15c410d0b911a251fc61d0d 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.cpp +++ b/src/modules/keyboard/SetKeyboardLayoutJob.cpp @@ -40,13 +40,15 @@ SetKeyboardLayoutJob::SetKeyboardLayoutJob( const QString& model, const QString& layout, const QString& variant, const QString& xOrgConfFileName, - const QString& convertedKeymapPath ) + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard) : Calamares::Job() , m_model( model ) , m_layout( layout ) , m_variant( variant ) , m_xOrgConfFileName( xOrgConfFileName ) , m_convertedKeymapPath( convertedKeymapPath ) + , m_writeEtcDefaultKeyboard( writeEtcDefaultKeyboard ) { } @@ -322,7 +324,7 @@ SetKeyboardLayoutJob::exec() return Calamares::JobResult::error( tr( "Failed to write keyboard configuration for X11." ), tr( "Failed to write to %1" ).arg( keyboardConfPath ) ); - if ( !defaultKeyboardPath.isEmpty() ) + if ( !defaultKeyboardPath.isEmpty() && m_writeEtcDefaultKeyboard ) { if ( !writeDefaultKeyboardData( defaultKeyboardPath ) ) return Calamares::JobResult::error( tr( "Failed to write keyboard configuration to existing /etc/default directory." ), diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.h b/src/modules/keyboard/SetKeyboardLayoutJob.h index fb562813944590633b86b8e1ae8f945d74229aed..8cafdeb2998c53c9a3b6ef1d1d4971bcf778ed70 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.h +++ b/src/modules/keyboard/SetKeyboardLayoutJob.h @@ -31,7 +31,8 @@ public: const QString& layout, const QString& variant, const QString& xOrgConfFileName, - const QString& convertedKeymapPath ); + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard ); QString prettyName() const override; Calamares::JobResult exec() override; @@ -49,6 +50,7 @@ private: QString m_variant; QString m_xOrgConfFileName; QString m_convertedKeymapPath; + const bool m_writeEtcDefaultKeyboard; }; #endif /* SETKEYBOARDLAYOUTJOB_H */ diff --git a/src/modules/keyboard/keyboard.conf b/src/modules/keyboard/keyboard.conf index a2606b94e69e36041afc874a6a39b1bb158ae136..9f8f275246619ae97d079ced55cc91d336bb79a3 100644 --- a/src/modules/keyboard/keyboard.conf +++ b/src/modules/keyboard/keyboard.conf @@ -3,6 +3,12 @@ # The default value is the name used by upstream systemd-localed. # Relative paths are assumed to be relative to /etc/X11/xorg.conf.d xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf" + # The path to search for keymaps converted from X11 to kbd format # Leave this empty if the setting does not make sense on your distribution. convertedKeymapPath: "/lib/kbd/keymaps/xkb" + +# Write keymap configuration to /etc/default/keyboard, usually +# found on Debian-related systems. +# Defaults to true if nothing is set. +#writeEtcDefaultKeyboard: true