2
0
mirror of https://github.com/koreader/koreader synced 2024-11-18 03:25:46 +00:00
koreader/keys.lua
Dobrica Pavlinusic 88d5f578f8 added last row of keyboard for DXG
DXG has bigger screen, so we have to make sure that we don't have more
than 30 options on screen (or we will run out of shortcuts)
2012-03-06 14:37:00 +01:00

268 lines
5.0 KiB
Lua

--[[
This file contains settings related to key codes
Copyright (C) 2011 Hans-Werner Hilse <hilse@web.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
This file is based on include/keydefs.h from "launchpad"
application, which is
Copyright (C) 2010 Andy M. aka h1uke h1ukeguy @ gmail.com
and was licensed under the GPLv2
]]--
Keys = {
altmode = false,
shiftmode = false,
}
KEY_1 = 2
KEY_2 = 3
KEY_3 = 4
KEY_4 = 5
KEY_5 = 6
KEY_6 = 7
KEY_7 = 8
KEY_8 = 9
KEY_9 = 10
KEY_0 = 11
KEY_Q = 16
KEY_W = 17
KEY_E = 18
KEY_R = 19
KEY_T = 20
KEY_Y = 21
KEY_U = 22
KEY_I = 23
KEY_O = 24
KEY_P = 25
KEY_A = 30
KEY_S = 31
KEY_D = 32
KEY_F = 33
KEY_G = 34
KEY_H = 35
KEY_J = 36
KEY_K = 37
KEY_L = 38
KEY_DEL = 14
KEY_Z = 44
KEY_X = 45
KEY_C = 46
KEY_V = 47
KEY_B = 48
KEY_N = 49
KEY_M = 50
KEY_DOT = 52
KEY_SLASH = 53
KEY_ENTER = 28
KEY_SHIFT = 42
KEY_ALT = 56
KEY_SPACE = 57
KEY_AA = 90
KEY_SYM = 94
KEY_VPLUS = 115
KEY_VMINUS = 114
KEY_HOME = 98
KEY_PGBCK = 109
KEY_PGFWD = 124
KEY_MENU = 139
KEY_BACK = 91
KEY_FW_LEFT = 105
KEY_FW_RIGHT = 106
KEY_FW_UP = 122
KEY_FW_DOWN = 123
KEY_FW_PRESS = 92
-- constants from <linux/input.h>
EV_KEY = 1
-- event values
EVENT_VALUE_KEY_PRESS = 1
EVENT_VALUE_KEY_REPEAT = 2
EVENT_VALUE_KEY_RELEASE = 0
function set_k3_keycodes()
KEY_AA = 190
KEY_SYM = 126
KEY_HOME = 102
KEY_BACK = 158
KEY_PGFWD = 191
KEY_LPGBCK = 193
KEY_LPGFWD = 104
KEY_VPLUS = 115
KEY_VMINUS = 114
KEY_FW_UP = 103
KEY_FW_DOWN = 108
KEY_FW_PRESS = 194
end
function set_emu_keycodes()
KEY_PGFWD = 117
KEY_PGBCK = 112
KEY_HOME = 110 -- home
KEY_BACK = 22 -- backspace
KEY_DEL = 119 -- Delete
KEY_MENU = 67 -- F1
KEY_FW_UP = 111
KEY_FW_DOWN = 116
KEY_FW_LEFT = 113
KEY_FW_RIGHT = 114
KEY_FW_PRESS = 115 -- end for now (above arrows)
KEY_SPACE = 65
KEY_ENTER = 36
KEY_1 = 10
KEY_2 = 11
KEY_3 = 12
KEY_4 = 13
KEY_5 = 14
KEY_6 = 15
KEY_7 = 16
KEY_8 = 17
KEY_9 = 18
KEY_0 = 19
KEY_Q = 24
KEY_W = 25
KEY_E = 26
KEY_R = 27
KEY_T = 28
KEY_Y = 29
KEY_U = 30
KEY_I = 31
KEY_O = 32
KEY_P = 33
KEY_A = 38
KEY_S = 39
KEY_D = 40
KEY_F = 41
KEY_G = 42
KEY_H = 43
KEY_J = 44
KEY_K = 45
KEY_L = 46
KEY_Z = 52
KEY_X = 53
KEY_C = 54
KEY_V = 55
KEY_B = 56
KEY_N = 57
KEY_M = 58
KEY_DOT = 60
KEY_SLASH = 61
KEY_AA = 105 -- right alt
KEY_SYM = 62 -- right shift
KEY_SHIFT = 50 -- left shift
KEY_ALT = 64 -- left alt
KEY_VPLUS = 95 -- F11
KEY_VMINUS = 96 -- F12
end
function getRotationMode()
--[[
return code for four kinds of rotation mode:
0 for no rotation,
1 for landscape with bottom on the right side of screen, etc.
2
+-----------+
| +-------+ |
| | | |
| | | |
| | | |
3 | | | | 1
| | | |
| | | |
| +-------+ |
| |
+-----------+
0
--]]
if KEY_FW_DOWN == 116 then -- in EMU mode always return 0
return 0
end
orie_fd = assert(io.open("/sys/module/eink_fb_hal_broads/parameters/bs_orientation", "r"))
updown_fd = assert(io.open("/sys/module/eink_fb_hal_broads/parameters/bs_upside_down", "r"))
mode = orie_fd:read() + (updown_fd:read() * 2)
return mode
end
function adjustKeyEvents(ev)
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
if ev.code == KEY_SHIFT then
Keys.shiftmode = true
elseif ev.code == KEY_ALT then
Keys.altmode = true
end
elseif ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_RELEASE then
if ev.code == KEY_SHIFT then
Keys.shiftmode = false
elseif ev.code == KEY_ALT then
Keys.altmode = false
end
end
-- adjust five way key according to rotation mode
local code = ev.code
if getRotationMode() == 0 then
return code
elseif getRotationMode() == 1 then
if code == KEY_FW_UP then
return KEY_FW_RIGHT
elseif code == KEY_FW_RIGHT then
return KEY_FW_DOWN
elseif code == KEY_FW_DOWN then
return KEY_FW_LEFT
elseif code == KEY_FW_LEFT then
return KEY_FW_UP
else
return code
end
elseif getRotationMode() == 2 then
if code == KEY_FW_UP then
return KEY_FW_DOWN
elseif code == KEY_FW_RIGHT then
return KEY_FW_LEFT
elseif code == KEY_FW_DOWN then
return KEY_FW_UP
elseif code == KEY_FW_LEFT then
return KEY_FW_RIGHT
else
return code
end
elseif getRotationMode() == 3 then
if code == KEY_FW_UP then
return KEY_FW_LEFT
elseif code == KEY_FW_RIGHT then
return KEY_FW_UP
elseif code == KEY_FW_DOWN then
return KEY_FW_RIGHT
elseif code == KEY_FW_LEFT then
return KEY_FW_DOWN
else
return code
end
end
end