aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2016-08-11 10:11:55 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2016-08-11 10:11:55 -0400
commit1d1259196c1fcfb7daab6c987d13a57672a4f4d6 (patch)
tree4d7fb817bd27091a9ff14b228686523674915af1 /core
parent6bc8c3ae2d87758d4777fa170027dbe8cfa14d86 (diff)
downloadtextadept-1d1259196c1fcfb7daab6c987d13a57672a4f4d6.tar.gz
textadept-1d1259196c1fcfb7daab6c987d13a57672a4f4d6.zip
Fixed caps lock key handling.
Diffstat (limited to 'core')
-rw-r--r--core/events.lua1
-rw-r--r--core/keys.lua8
2 files changed, 7 insertions, 2 deletions
diff --git a/core/events.lua b/core/events.lua
index dcaf5716..8cfa6e9f 100644
--- a/core/events.lua
+++ b/core/events.lua
@@ -153,6 +153,7 @@ local M = {}
-- * _`ctrl`_: The "Control" modifier key is held down.
-- * _`alt`_: The "Alt"/"Option" modifier key is held down.
-- * _`meta`_: The "Command" modifier key on Mac OSX is held down.
+-- * _`caps_lock`_: The "Caps Lock" modifier is on.
-- @field MARGIN_CLICK (string)
-- Emitted when clicking the mouse inside a sensitive margin.
-- Arguments:
diff --git a/core/keys.lua b/core/keys.lua
index 6187b466..27ccfa91 100644
--- a/core/keys.lua
+++ b/core/keys.lua
@@ -195,9 +195,13 @@ end
-- @param control Whether or not the Control modifier is pressed.
-- @param alt Whether or not the Alt/option modifier is pressed.
-- @param meta Whether or not the Command modifier on Mac OSX is pressed.
+-- @param caps_lock Whether or not Caps Lock is enabled.
-- @return `true` to stop handling the key; `nil` otherwise.
-local function keypress(code, shift, control, alt, meta)
- --print(code, M.KEYSYMS[code], shift, control, alt, meta)
+local function keypress(code, shift, control, alt, meta, caps_lock)
+ --print(code, M.KEYSYMS[code], shift, control, alt, meta, caps_lock)
+ if caps_lock and (shift or control or alt or meta) and code < 256 then
+ code = string[shift and 'upper' or 'lower'](string.char(code)):byte()
+ end
local key = code < 256 and (not CURSES or (code ~= 7 and code ~= 13)) and
string.char(code) or M.KEYSYMS[code]
if not key then return end