[keyboard] Improve xkb parsing
This commit is contained in:
parent
ec42e3294f
commit
0f6602cad7
@ -138,18 +138,25 @@ Config::init()
|
|||||||
{
|
{
|
||||||
const QStringList list = QString( process.readAll() ).split( "\n", SplitSkipEmptyParts );
|
const QStringList list = QString( process.readAll() ).split( "\n", SplitSkipEmptyParts );
|
||||||
|
|
||||||
for ( QString line : list )
|
// A typical line looks like
|
||||||
|
// xkb_symbols { include "pc+latin+ru:2+inet(evdev)+group(alt_shift_toggle)+ctrl(swapcaps)" };
|
||||||
|
for ( const auto& line : list )
|
||||||
{
|
{
|
||||||
line = line.trimmed();
|
if ( !line.trimmed().startsWith( "xkb_symbols" ) )
|
||||||
if ( !line.startsWith( "xkb_symbols" ) )
|
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
line = line.remove( "}" ).remove( "{" ).remove( ";" );
|
int firstQuote = line.indexOf('"');
|
||||||
line = line.mid( line.indexOf( "\"" ) + 1 );
|
int lastQuote = line.lastIndexOf('"');
|
||||||
|
|
||||||
QStringList split = line.split( "+", SplitSkipEmptyParts );
|
if (firstQuote < 0 || lastQuote < 0 || lastQuote <= firstQuote)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList split = line.mid(firstQuote+1, lastQuote-firstQuote).split( "+", SplitSkipEmptyParts );
|
||||||
|
cDebug() << split;
|
||||||
if ( split.size() >= 2 )
|
if ( split.size() >= 2 )
|
||||||
{
|
{
|
||||||
currentLayout = split.at( 1 );
|
currentLayout = split.at( 1 );
|
||||||
|
Loading…
Reference in New Issue
Block a user