Kaynağa Gözat

Merge pull request #2 from jmiskovic/master

Implemented textinput callback and fixed a table-reversing bug
Bjorn 5 yıl önce
ebeveyn
işleme
f0e1ddcdc9
1 değiştirilmiş dosya ile 12 ekleme ve 1 silme
  1. 12 1
      lovr-keyboard.lua

+ 12 - 1
lovr-keyboard.lua

@@ -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