mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
key event map for Android
This commit is contained in:
@@ -104,21 +104,31 @@ end
|
||||
|
||||
Device.isAndroid = util.isAndroid
|
||||
|
||||
function Device:hasNoKeyboard()
|
||||
if self.has_no_keyboard ~= nil then return self.has_no_keyboard end
|
||||
-- device has qwerty keyboard
|
||||
function Device:hasKeyboard()
|
||||
if self.has_keyboard ~= nil then return self.has_keyboard end
|
||||
if not isAndroid then
|
||||
local model = self:getModel()
|
||||
self.has_no_keyboard = (model == "KindlePaperWhite") or (model == "KindlePaperWhite2")
|
||||
or (model == "KindleTouch") or self:isKobo()
|
||||
self.has_keyboard = (model == "Kindle2") or (model == "Kindle3")
|
||||
or util.isEmulated()
|
||||
else
|
||||
self.has_no_keyboard = ffi.C.AConfiguration_getKeyboard(android.app.config)
|
||||
~= ffi.C.ACONFIGURATION_KEYBOARD_QWERTY
|
||||
self.has_keyboard = ffi.C.AConfiguration_getKeyboard(android.app.config)
|
||||
== ffi.C.ACONFIGURATION_KEYBOARD_QWERTY
|
||||
end
|
||||
return self.has_no_keyboard
|
||||
return self.has_keyboard
|
||||
end
|
||||
|
||||
function Device:hasKeyboard()
|
||||
return not self:hasNoKeyboard()
|
||||
function Device:hasNoKeyboard()
|
||||
return not self:hasKeyboard()
|
||||
end
|
||||
|
||||
-- device has hardware keys for pagedown/pageup
|
||||
function Device:hasKeys()
|
||||
if self.has_keys ~= nil then return self.has_keys end
|
||||
local model = self:getModel()
|
||||
self.has_keys = (model ~= "KindlePaperWhite") and (model ~= "KindlePaperWhite2")
|
||||
and (model ~= "KindleTouch") and not self:isKobo()
|
||||
return self.has_keys
|
||||
end
|
||||
|
||||
function Device:isTouchDevice()
|
||||
|
||||
@@ -245,6 +245,35 @@ function Input:initKeyMap()
|
||||
[78] = "RPgFwd", -- normal PageDown
|
||||
[76] = "Del", -- Delete
|
||||
}
|
||||
self.android_event_map = {
|
||||
[29] = "A", [30] = "B", [31] = "C", [32] = "D", [33] = "E", [34] = "F",
|
||||
[35] = "G", [36] = "H", [37] = "I", [38] = "J", [39] = "K", [40] = "L",
|
||||
[41] = "M", [42] = "N", [43] = "O", [44] = "P", [45] = "Q", [46] = "R",
|
||||
[47] = "S", [48] = "T", [49] = "U", [50] = "V", [51] = "W", [52] = "X",
|
||||
[53] = "Y", [54] = "Z", [ 7] = "0", [ 8] = "1", [ 9] = "2", [10] = "3",
|
||||
[11] = "4", [12] = "5", [13] = "6", [14] = "7", [15] = "8", [16] = "9",
|
||||
|
||||
[4] = "Back", -- BACK
|
||||
[19] = "Up", -- DPAD_UP
|
||||
[20] = "Down", -- DPAD_UP
|
||||
[21] = "Left", -- DPAD_LEFT
|
||||
[22] = "Right", -- DPAD_RIGHT
|
||||
[23] = "Press", -- DPAD_CENTER
|
||||
[24] = "LPgBack", -- VOLUME_UP
|
||||
[25] = "LPgFwd", -- VOLUME_DOWN
|
||||
[56] = ".", -- PERIOD
|
||||
[59] = "Shift", -- SHIFT_LEFT
|
||||
[60] = "Shift", -- SHIFT_RIGHT
|
||||
[62] = " ", -- SPACE
|
||||
[63] = "Sym", -- SYM
|
||||
[66] = "Enter", -- ENTER
|
||||
[67] = "Del", -- DEL
|
||||
[76] = "/", -- SLASH
|
||||
[82] = "Menu", -- MENU
|
||||
[84] = "Search",--SEARCH
|
||||
[92] = "LPgBack", -- PAGE_UP
|
||||
[93] = "LPgFwd", -- PAGE_DOWN
|
||||
}
|
||||
|
||||
self.modifiers = {
|
||||
Alt = false,
|
||||
@@ -426,6 +455,7 @@ function Input:init()
|
||||
input.open("/dev/input/event1")
|
||||
elseif util.isAndroid() then
|
||||
DEBUG("Auto-detected Android")
|
||||
self.event_map = self.android_event_map
|
||||
self:adjustAndroidEventMap()
|
||||
function Input:handleMiscEv(ev)
|
||||
return Input:handleAndroidMiscEvent(ev)
|
||||
@@ -467,6 +497,9 @@ function Input:adjustKoboEventMap()
|
||||
end
|
||||
|
||||
function Input:adjustAndroidEventMap()
|
||||
self.event_map[104] = "LPgBack" -- T68 PageUp
|
||||
self.event_map[109] = "LPgFwd" -- T68 PageDown
|
||||
self.event_map[139] = "Menu" -- T68 Menu
|
||||
end
|
||||
|
||||
function Input:setTimeout(cb, tv_out)
|
||||
|
||||
Reference in New Issue
Block a user