// =============================================================================
// Zboard Config Utility
// Copyright (C) 2007  Matt Razza

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
// -------------------------------------------------------------------------------
// This file manages and interfaces with xModMap
// ===============================================================================

// Load header file
#include "zboard-xmodmap.h"

// ========================================================================
// Public Functions
// ========================================================================

// Binds a new settings file to the interface
bool mapInterface::bindNewFile(std::string sFile, bool bUseLoad)
{
	std::string sCommand = "";

	if (!bUseLoad)
        sCommand = "xmodmap ";
    else
        sCommand = "loadkeys ";

	int iRet;

	sCommand += sFile;
	iRet = system(sCommand.c_str());

	return !iRet;
}

// Exicutes a string into xModMap
bool mapInterface::bindString(std::string sString)
{
	std::string sCommand = "xmodmap -e '";
	int iRet;

	sCommand += sString;
	sCommand += "'";

	iRet = system(sCommand.c_str());

	return !iRet;
}

// Removes a map to the givien keycode
void mapInterface::removeMap(std::string keyCode)
{
	bindString("keycode " + keyCode + " = ");
}
