diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2023-07-07 18:51:29 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2023-07-07 18:51:29 -0700 |
commit | 24b21b9cfcd71cc683901d617ac39e8017b2f84b (patch) | |
tree | c1b56ee926a75b0d61136479b7302e20b947edfd | |
parent | 3d3039c4f851304095f0a0c637dced6b01197a02 (diff) | |
parent | a995471ebc95411c45c2b6d656be4c9091c8b1a0 (diff) | |
download | view.love-24b21b9cfcd71cc683901d617ac39e8017b2f84b.tar.gz |
Merge text.love
-rw-r--r-- | keychord.lua | 37 |
1 files changed, 37 insertions, 0 deletions
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) |