support for num pad

It'll only work after LÖVE v12 comes out.
This commit is contained in:
Kartik K. Agaram 2023-07-07 18:40:12 -07:00
parent 33934337ab
commit 9df1c3f997
1 changed files with 37 additions and 0 deletions

View File

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