|
@@ -6,10 +6,12 @@ local C = ffi.os == 'Windows' and ffi.load('glfw3') or ffi.C
|
|
|
ffi.cdef [[
|
|
|
typedef struct GLFWwindow GLFWwindow;
|
|
|
typedef void(*GLFWkeyfun)(GLFWwindow*, int, int, int, int);
|
|
|
+ typedef void (*GLFWcharfun)(GLFWwindow*, unsigned int);
|
|
|
|
|
|
GLFWwindow* glfwGetCurrentContext(void);
|
|
|
int glfwGetKey(GLFWwindow* window, int key);
|
|
|
GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback);
|
|
|
+ GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback);
|
|
|
]]
|
|
|
|
|
|
local window = C.glfwGetCurrentContext()
|
|
@@ -131,9 +133,14 @@ local keymap = {
|
|
|
['menu'] = 348
|
|
|
}
|
|
|
|
|
|
+local reverse = {}
|
|
|
for k, v in pairs(keymap) do
|
|
|
- keymap[v] = k
|
|
|
+ reverse[v] = k
|
|
|
end
|
|
|
+for k, v in pairs(reverse) do
|
|
|
+ keymap[k] = v
|
|
|
+end
|
|
|
+
|
|
|
|
|
|
local keyboard = {}
|
|
|
|
|
@@ -150,4 +157,8 @@ C.glfwSetKeyCallback(window, function(window, key, scancode, action, mods)
|
|
|
end
|
|
|
end)
|
|
|
|
|
|
+C.glfwSetCharCallback(window, function(window, char)
|
|
|
+ lovr.event.push('textinput', string.char(char))
|
|
|
+ end)
|
|
|
+
|
|
|
return keyboard
|