Fix bug causing ext0...ext3 to sometimes appear pressed on 12btn gamepad
[lsnes.git] / src / lua / bind.cpp
blobfd151e7364e73f0e507dc6fcf71b94b35fce9a82
1 #include "core/keymapper.hpp"
2 #include "core/command.hpp"
3 #include "lua/internal.hpp"
4 #include <stdexcept>
6 namespace
8 function_ptr_luafun kbind(LS, "keyboard.bind", [](lua_state& L, const std::string& fname) -> int {
9 std::string mod = L.get_string(1, fname.c_str());
10 std::string mask = L.get_string(2, fname.c_str());
11 std::string key = L.get_string(3, fname.c_str());
12 std::string cmd = L.get_string(4, fname.c_str());
13 try {
14 lsnes_mapper.bind(mod, mask, key, cmd);
15 } catch(std::exception& e) {
16 L.pushstring(e.what());
17 L.error();
18 return 0;
20 return 0;
21 });
23 function_ptr_luafun kunbind(LS, "keyboard.unbind", [](lua_state& L, const std::string& fname) -> int {
24 std::string mod = L.get_string(1, fname.c_str());
25 std::string mask = L.get_string(2, fname.c_str());
26 std::string key = L.get_string(3, fname.c_str());
27 try {
28 lsnes_mapper.unbind(mod, mask, key);
29 } catch(std::exception& e) {
30 L.pushstring(e.what());
31 L.error();
32 return 0;
34 return 0;
35 });
37 function_ptr_luafun kalias(LS, "keyboard.alias", [](lua_state& L, const std::string& fname) -> int {
38 std::string alias = L.get_string(1, fname.c_str());
39 std::string cmds = L.get_string(2, fname.c_str());
40 try {
41 lsnes_cmd.set_alias_for(alias, cmds);
42 } catch(std::exception& e) {
43 L.pushstring(e.what());
44 L.error();
45 return 0;
47 return 0;
48 });