[keyboard] Refactor argument-lists for setxkbmap

- separate functions for model, and layout+variant settings
This commit is contained in:
Adriaan de Groot 2020-10-12 14:37:00 +02:00
parent b54273f904
commit ec42e3294f

View File

@ -23,11 +23,22 @@
#include <QProcess> #include <QProcess>
#include <QTimer> #include <QTimer>
/* Returns stringlist with suitable setxkbmap command-line arguments
* to set the given @p model.
*/
static inline QStringList
xkbmap_model_args( const QString& model )
{
QStringList r { "-model", model };
return r;
}
/* Returns stringlist with suitable setxkbmap command-line arguments /* Returns stringlist with suitable setxkbmap command-line arguments
* to set the given @p layout and @p variant. * to set the given @p layout and @p variant.
*/ */
static inline QStringList static inline QStringList
xkbmap_args( const QString& layout, const QString& variant ) xkbmap_layout_args( const QString& layout, const QString& variant )
{ {
QStringList r { "-layout", layout }; QStringList r { "-layout", layout };
if ( !variant.isEmpty() ) if ( !variant.isEmpty() )
@ -49,7 +60,7 @@ Config::Config( QObject* parent )
connect( m_keyboardModelsModel, &KeyboardModelsModel::currentIndexChanged, [&]( int index ) { connect( m_keyboardModelsModel, &KeyboardModelsModel::currentIndexChanged, [&]( int index ) {
m_selectedModel = m_keyboardModelsModel->item( index ).value( "key", "pc105" ); m_selectedModel = m_keyboardModelsModel->item( index ).value( "key", "pc105" );
// Set Xorg keyboard model // Set Xorg keyboard model
QProcess::execute( "setxkbmap", QStringList { "-model", m_selectedModel } ); QProcess::execute( "setxkbmap", xkbmap_model_args( m_selectedModel ) );
emit prettyStatusChanged(); emit prettyStatusChanged();
} ); } );
@ -70,7 +81,7 @@ Config::Config( QObject* parent )
} }
connect( &m_setxkbmapTimer, &QTimer::timeout, this, [=] { connect( &m_setxkbmapTimer, &QTimer::timeout, this, [=] {
QProcess::execute( "setxkbmap", xkbmap_args( m_selectedLayout, m_selectedVariant ) ); QProcess::execute( "setxkbmap", xkbmap_layout_args( m_selectedLayout, m_selectedVariant ) );
cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant; cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant;
m_setxkbmapTimer.disconnect( this ); m_setxkbmapTimer.disconnect( this );
} ); } );