2
0
mirror of https://github.com/koreader/koreader synced 2024-11-18 03:25:46 +00:00
koreader/frontend/ui/data/keyboardlayouts/ko_KR_keyboard.lua
yparitcher 5e8d1227ef [feat, UX] Pick keyboard layout from keyboard (#5583)
* Tap goes to next activated keyboard.
* Hold opens a selection popup.
2019-11-18 17:16:06 +01:00

227 lines
9.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local logger = require("logger")
--------
-- # Korean 2-beolsik Keyboard layout
--------
local HgHelper = require("ui/data/keyboardlayouts/ko_KR_helper")
--------
-- UI handler implementation for communicating with text input box widget
--------
function HgHelper.UIHandler:put_char(char)
HgHelper.UIHandler.inputbox:_addChars(char)
end
function HgHelper.UIHandler:del_char(char)
HgHelper.UIHandler.inputbox:_delChar()
end
HgHelper.HgFSM:init(HgHelper.UIHandler)
--------
-- Custom key event handlers with Hangul support
--------
local wrapInputBox = function(inputbox)
HgHelper.HgFSM.clean_state() -- reset helper
if inputbox._wrapped == nil then
inputbox._wrapped = true
-- helper function
local function copy_func_reference(obj, name)
obj["_" .. name] = obj[name]
end
-- override original implementations with helper object
copy_func_reference(inputbox, "addChars")
copy_func_reference(inputbox, "delChar")
function inputbox:addChars(key)
logger.dbg("ko_KR_kbd:addChar(", key, ")")
HgHelper.UIHandler.inputbox = self
HgHelper.HgFSM:process_char(key)
end
function inputbox:delChar()
logger.dbg("ko_KR_kbd:delChar()")
HgHelper.UIHandler.inputbox = self
HgHelper.HgFSM:process_bsp()
end
-- override implementations: reset helper if we have to stop combining current syllable
---- helper function
local function wrap_func_with_hghelper_reset(obj, name)
copy_func_reference(obj, name)
obj[name] = function(self)
HgHelper.HgFSM.clean_state()
self["_" .. name](self)
end
end
---- delete text
wrap_func_with_hghelper_reset(inputbox, "delToStartOfLine")
wrap_func_with_hghelper_reset(inputbox, "clear")
---- move cursor
wrap_func_with_hghelper_reset(inputbox, "leftChar")
wrap_func_with_hghelper_reset(inputbox, "rightChar")
wrap_func_with_hghelper_reset(inputbox, "upLine")
wrap_func_with_hghelper_reset(inputbox, "downLine")
---- unfocus: move to other inputbox
wrap_func_with_hghelper_reset(inputbox, "unfocus")
---- tap/hold/swipe: move cursor
------ helper function
local function wrap_touch_event_func_with_hghelper_reset(obj, name)
copy_func_reference(obj, name)
obj[name] = function(self, arg, ges)
HgHelper.HgFSM.clean_state()
return self["_" .. name](self, arg, ges)
end
end
wrap_touch_event_func_with_hghelper_reset(inputbox, "onTapTextBox")
wrap_touch_event_func_with_hghelper_reset(inputbox, "onHoldTextBox")
wrap_touch_event_func_with_hghelper_reset(inputbox, "onSwipeTextBox")
end
end
-- Belows are just same as the English keyboard popup
local en_popup = require("ui/data/keyboardlayouts/keypopup/en_popup")
local com = en_popup.com -- comma (,)
local prd = en_popup.prd -- period (.)
local _at = en_popup._at
local _eq = en_popup._eq -- equals sign (=)
local _A_ = en_popup._A_
local _a_ = en_popup._a_
local _B_ = en_popup._B_
local _b_ = en_popup._b_
local _C_ = en_popup._C_
local _c_ = en_popup._c_
local _D_ = en_popup._D_
local _d_ = en_popup._d_
local _E_ = en_popup._E_
local _e_ = en_popup._e_
local _F_ = en_popup._F_
local _f_ = en_popup._f_
local _G_ = en_popup._G_
local _g_ = en_popup._g_
local _H_ = en_popup._H_
local _h_ = en_popup._h_
local _I_ = en_popup._I_
local _i_ = en_popup._i_
local _J_ = en_popup._J_
local _j_ = en_popup._j_
local _K_ = en_popup._K_
local _k_ = en_popup._k_
local _L_ = en_popup._L_
local _l_ = en_popup._l_
local _M_ = en_popup._M_
local _m_ = en_popup._m_
local _N_ = en_popup._N_
local _n_ = en_popup._n_
local _O_ = en_popup._O_
local _o_ = en_popup._o_
local _P_ = en_popup._P_
local _p_ = en_popup._p_
local _Q_ = en_popup._Q_
local _q_ = en_popup._q_
local _R_ = en_popup._R_
local _r_ = en_popup._r_
local _S_ = en_popup._S_
local _s_ = en_popup._s_
local _T_ = en_popup._T_
local _t_ = en_popup._t_
local _U_ = en_popup._U_
local _u_ = en_popup._u_
local _V_ = en_popup._V_
local _v_ = en_popup._v_
local _W_ = en_popup._W_
local _w_ = en_popup._w_
local _X_ = en_popup._X_
local _x_ = en_popup._x_
local _Y_ = en_popup._Y_
local _y_ = en_popup._y_
local _Z_ = en_popup._Z_
local _z_ = en_popup._z_
-- Based on English keyboard layout, but modifications are made for Korean layout
return {
min_layer = 1,
max_layer = 12,
shiftmode_keys = {[""] = true},
symbolmode_keys = {["Sym"] = true, ["ABC"] = true},
utf8mode_keys = {["🌐"] = true},
umlautmode_keys = {["Äéß"] = false}, -- Disabled 'umlaut' keys
keys = {
-- [shift, unshift, symbol-shift, symbol-unshift]
-- 1, 2, 3, 4: default
-- 5, 6, 7, 8: 'IM' (globe)
-- 9, 10, 11, 12: 'umlaut' (UNUSED)
--
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ _Q_, _q_, "", "0", "", "", "", "0", "Å", "å", "1", "ª", },
{ _W_, _w_, "!", "1", "", "", "!", "1", "Ä", "ä", "2", "º", },
{ _E_, _e_, _at, "2", "", "", _at, "2", "Ö", "ö", "3", "¡", },
{ _R_, _r_, "#", "3", "", "", "#", "3", "ß", "ß", "4", "¿", },
{ _T_, _t_, "+", _eq, "", "", "+", _eq, "À", "à", "5", "¼", },
{ _Y_, _y_, "", "(", "", "", "", "(", "Â", "â", "6", "½", },
{ _U_, _u_, "", ")", "", "", "", ")", "Æ", "æ", "7", "¾", },
{ _I_, _i_, "|", "\\", "", "", "", "\\", "Ü", "ü", "8", "©", },
{ _O_, _o_, "?", "/", "", "", "", "/", "È", "è", "9", "®", },
{ _P_, _p_, "~", "`", "", "", "", "`", "É", "é", "0", "", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ _A_, _a_, "", _at, "", "", "", "@", "Ê", "ê", "Ş", "ş", },
{ _S_, _s_, "$", "4", "", "", "$", "4", "Ë", "ë", "İ", "ı", },
{ _D_, _d_, "%", "5", "", "", "%", "5", "Î", "î", "Ğ", "ğ", },
{ _F_, _f_, "^", "6", "", "", "^", "6", "Ï", "ï", "Ć", "ć", },
{ _G_, _g_, ":", ";", "", "", ":", "'", "Ô", "ô", "Č", "č", },
{ _H_, _h_, '"', "'", "", "", "", "\"", "Œ", "œ", "Đ", "đ", },
{ _J_, _j_, "{", "[", "", "", "", "[", "Ù", "ù", "Š", "š", },
{ _K_, _k_, "}", "]", "", "", "", "]", "Û", "û", "Ž", "ž", },
{ _L_, _l_, "_", "-", "", "", "", "-", "Ÿ", "ÿ", "Ő", "ő", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "",
width = 1.5
},
{ _Z_, _z_, "&", "7", "", "", "", "7", "Á", "á", "Ű", "ű", },
{ _X_, _x_, "*", "8", "", "", "", "8", "Ø", "ø", "Ã", "ã", },
{ _C_, _c_, "£", "9", "", "", "*", "9", "Í", "í", "Þ", "þ", },
{ _V_, _v_, "<", com, "", "", "", com, "Ñ", "ñ", "Ý", "ý", },
{ _B_, _b_, ">", prd, "", "", "&", prd, "Ó", "ó", "", "", },
{ _N_, _n_, "", "", "", "", "", "", "Ú", "ú", "", "", },
{ _M_, _m_, "", "", "", "", "", "", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "🌐",
width = 2,
},
-- { "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "간격",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 3.0},
{ com, com, "", "", com, com, com, "", "Ũ", "ũ", com, com, },
{ prd, prd, "", "", prd, prd, prd, "", "Ĩ", "ĩ", prd, prd, },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
},
-- wrap InputBox for hooking events to the helper
wrapInputBox = wrapInputBox,
}