From 9df1c3f997e04194edc16db4999d204ea46332ff Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 7 Jul 2023 18:40:12 -0700 Subject: support for num pad MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It'll only work after LÖVE v12 comes out. --- keychord.lua | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'keychord.lua') diff --git a/keychord.lua b/keychord.lua index 16fa48d..f1b6a59 100644 --- a/keychord.lua +++ b/keychord.lua @@ -12,6 +12,11 @@ function App.keypressed(key, scancode, isrepeat) end function App.combine_modifiers(key) + if love.keyboard.isModifierActive then -- waiting for LÖVE v12 + if key:match('^kp') then + key = App.translate_numlock(key) + end + end local result = '' if App.ctrl_down() then result = result..'C-' @@ -53,6 +58,38 @@ function App.is_cursor_movement(key) return array.find({'left', 'right', 'up', 'down', 'home', 'end', 'pageup', 'pagedown'}, key) end +-- mappings only to non-printable keys; leave out mappings that textinput will handle +Numlock_off = { + kp0='insert', + kp1='end', + kp2='down', + kp3='pagedown', + kp4='left', + -- numpad 5 translates to nothing + kp6='right', + kp7='home', + kp8='up', + kp9='pageup', + ['kp.']='delete', + -- LÖVE handles keypad operators in textinput + -- what's with the `kp=` and `kp,` keys? None of my keyboards have one. + -- Hopefully LÖVE handles them as well in textinput. + kpenter='enter', + kpdel='delete', +} +Numlock_on = { + kpenter='enter', + kpdel='delete', +} +function App.translate_numlock(key) + if love.keyboard.isModifierActive('numlock') then + return Numlock_on[key] or key + else + return Numlock_off[key] or key + end + return key +end + array = {} function array.find(arr, elem) -- cgit 1.4.1-2-gfad0