/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠPat rick ĠGold inger Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġdev . pat rick gold . fl or is board . ime . text Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Toast Ċ import Ġandroid . widget . View Flip per Ċ import Ġdev . pat rick gold . fl or is board . Build Config Ċ import Ġdev . pat rick gold . fl or is board . R Ċ import Ġdev . pat rick gold . fl or is board . ime . clip . provider . Clipboard Item Ċ import Ġdev . pat rick gold . fl or is board . ime . core .* Ċ import Ġdev . pat rick gold . fl or is board . ime . dictionary . Dictionary Ċ import Ġdev . pat rick gold . fl or is board . ime . dictionary . Dictionary Manager Ċ import Ġdev . pat rick gold . fl or is board . ime . extension . Asset Ref Ċ import Ġdev . pat rick gold . fl or is board . ime . extension . Asset Source Ċ import Ġdev . pat rick gold . fl or is board . ime . nlp . Token Ċ import Ġdev . pat rick gold . fl or is board . ime . nlp . toString List Ċ import Ġdev . pat rick gold . fl or is board . ime . text . editing . Editing Keyboard View Ċ import Ġdev . pat rick gold . fl or is board . ime . text . gest ures . Swipe Action Ċ import Ġdev . pat rick gold . fl or is board . ime . text . key .* Ċ import Ġdev . pat rick gold . fl or is board . ime . text . keyboard . Keyboard Mode Ċ import Ġdev . pat rick gold . fl or is board . ime . text . keyboard . Keyboard View Ċ import Ġdev . pat rick gold . fl or is board . ime . text . layout . LayoutManager Ċ import Ġdev . pat rick gold . fl or is board . ime . text . smart bar . Smart bar View Ċ import Ġkotlinx . coroutines .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ import Ġkotlin . math . round To Long Ċ Ċ /** Ċ Ġ* ĠText Input Manager Ġis Ġresponsible Ġfor Ġmanaging Ġeverything Ġwhich Ġis Ġrelated Ġto Ġtext Ġinput . ĠAll Ġof Ċ Ġ* Ġthe Ġfollowing Ġcount Ġas Ġtext Ġinput : Ġcharacter , Ġnumeric Ġ(+ advanced ), Ġphone Ġand Ġsymbol Ġlayouts . Ċ Ġ* Ċ Ġ* ĠAll Ġof Ġthe ĠUI Ġfor Ġthe Ġdifferent Ġkeyboard Ġlayouts Ġare Ġkept Ġunder Ġthe Ġsame Ġcontainer Ġelement Ġand Ċ Ġ* Ġare Ġseparated Ġfrom Ġmedia - related ĠUI . ĠThe Ġcore Ġ[ Fl or is Board ] Ġwill Ġpass Ġany Ġevent Ġdefined Ġin Ċ Ġ* Ġ[ Fl or is Board . EventListener ] Ġthrough Ġto Ġthis Ġclass . Ċ Ġ* Ċ Ġ* ĠText Input Manager Ġis Ġalso Ġthe Ġhub Ġin Ġthe Ġcommunication Ġbetween Ġthe Ġsystem , Ġthe Ġactive Ġeditor Ċ Ġ* Ġinstance Ġand Ġthe ĠSmart bar . Ċ Ġ*/ Ċ class ĠText Input Manager Ġprivate Ġconstructor () Ġ: ĠCor outine Scope Ġby ĠMain Scope (), ĠInput KeyEvent Receiver , ĊĠĠĠ ĠFl or is Board . EventListener , ĠSmart bar View . EventListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfl or is board Ġ= ĠFl or is Board . getInstance () ĊĠĠĠ Ġprivate Ġval Ġactive Editor Instance : ĠEditor Instance ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfl or is board . active Editor Instance ĊĊĠĠĠ Ġlateinit Ġvar Ġlayout Manager : ĠLayout Manager ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġactive Keyboard Mode : ĠKeyboard Mode ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġanim ator : ĠObject Animator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġkeyboard Views Ġ= ĠEnum Map < Keyboard Mode , ĠKeyboard View >( Keyboard Mode :: class . java ) ĊĠĠĠ Ġprivate Ġvar Ġediting Keyboard View : ĠEdit ing Keyboard View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġloading Placeholder Keyboard : ĠKeyboard View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠtextView Flip per : ĠView Flip per ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtext ViewGroup : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġdictionary Manager : ĠDictionary Manager Ġ= ĠDictionary Manager . default () ĊĠĠĠ Ġprivate Ġvar Ġactive Dictionary : ĠDictionary < String , ĠInt >? Ġ= Ġnull ĊĠĠĠ Ġval Ġinput EventDispatcher : ĠInput EventDispatcher Ġ= ĠInput EventDispatcher . new ( ĊĠĠĠĠĠĠĠ Ġparent Scope Ġ= Ġthis , ĊĠĠĠĠĠĠĠ Ġrepeat able Key Codes Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . DELETE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . FORWARD _ DELETE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġkey Variation : ĠKey Variation Ġ= ĠKey Variation . NORMAL ĊĠĠĠ Ġprivate Ġvar Ġsmart bar View : ĠSmart bar View ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠC aps / Shift Ġrelated Ġproperties ĊĠĠĠ Ġvar Ġcaps : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġcaps Lock : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġnew Caps State : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠComp osing Ġtext Ġrelated Ġproperties ĊĠĠĠ Ġvar Ġis Manual Selection Mode : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Manual Selection Mode Start : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Manual Selection Mode End : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠText Input Manager ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠText Input Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠText Input Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfl or is board . addEventListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNon - UI - related Ġsetup Ġ+ Ġpre loading Ġof Ġall Ġrequired Ġcomputed Ġlayouts Ġ( as ynchronous Ġin Ġthe ĊĠĠĠĠ Ġ* Ġbackground ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" onCreate () ") ĊĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLayout Manager ( this ) ĊĠĠĠĠĠĠĠ Ġinput EventDispatcher . key Event Receiver Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġvar Ġsub types Ġ= Ġfl or is board . subtype Manager . sub types ĊĠĠĠĠĠĠĠ Ġif Ġ( sub types . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub types Ġ= ĠlistOf ( Subtype . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( subtype Ġin Ġsub types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( mode Ġin ĠKeyboard Mode . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager . preload Computed Layout ( mode , Ġsubtype , Ġfl or is board . prefs , Ġfl or is board . subtype Manager . getC urrency Set ( subtype )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Input View () Ġ{ ĊĠĠĠĠĠĠĠ Ġkeyboard Views . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġadd Keyboard View ( mode : ĠKeyboard Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeyboard View Ġ= ĠKeyboard View ( fl or is board . context ) ĊĠĠĠĠĠĠĠ Ġkeyboard View . computed Layout Ġ= Ġlayout Manager . fetch Computed Layout Async ( mode , Ġfl or is board . active Subtype , Ġfl or is board . prefs , Ġfl or is board . subtype Manager . getC urrency Set ( fl or is board . active Subtype )). await () ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ mode ] Ġ= Ġkeyboard View ĊĠĠĠĠĠĠĠ ĠtextView Flip per ?. addView ( keyboard View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġup Ġthe Ġnewly Ġregistered Ġinput Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Register Input View ( input View : ĠInput View ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" on Register Input View ( input View )") ĊĊĠĠĠĠĠĠĠ Ġtext ViewGroup Ġ= Ġinput View . findViewById ( R . id . text _ input ) ĊĠĠĠĠĠĠĠ ĠtextView Flip per Ġ= Ġinput View . findViewById ( R . id . text _ input _ view _ flip per ) ĊĠĠĠĠĠĠĠ Ġediting Keyboard View Ġ= Ġinput View . findViewById ( R . id . editing ) ĊĠĠĠĠĠĠĠ Ġloading Placeholder Keyboard Ġ= Ġinput View . findViewById ( R . id . keyboard _ preview ) ĊĊĠĠĠĠĠĠĠ Ġlaunch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ViewGroup ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠObject Animator . of Float ( it , Ġ" alpha ", Ġ 0 . 9 f , Ġ 1 . 0 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 1 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠValue Animator . RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Float Values ( 1 . 0 f , Ġ 0 . 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠException ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Keyboard Mode Ġ= Ġget Active Keyboard Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Keyboard View ( active Keyboard Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Active Keyboard Mode ( active Keyboard Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ViewGroup ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠObject Animator . of Float ( it , Ġ" alpha ", Ġit . alpha , Ġ 1 . 0 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ((( 1 . 0 f Ġ- Ġit . alpha ) Ġ/ Ġ 0 . 6 f ) Ġ* Ġ 1 2 5 f ). round To Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( mode Ġin ĠKeyboard Mode . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ!= Ġactive Keyboard Mode Ġ&& Ġmode Ġ!= ĠKeyboard Mode . SM ART BAR _ NUMBER _ ROW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Keyboard View ( mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Smart bar View ( view : ĠSmart bar View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsmart bar View Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. set EventListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Smart bar View ( view : ĠSmart bar View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( smart bar View Ġ== Ġview ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsmart bar View Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel s Ġall Ġcor outines Ġand Ġcle ans Ġup . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" on Destroy () ") ĊĊĠĠĠĠĠĠĠ Ġinput EventDispatcher . key Event Receiver Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinput EventDispatcher . close () ĊĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠĠĠĠĠ Ġlayout Manager . on Destroy () ĊĠĠĠĠĠĠĠ Ġinstance Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEvalu ates Ġthe Ġ[ active Keyboard Mode ], Ġ[ key Variation ] Ġand Ġ[ Editor Instance . is Comp osing Enabled ] ĊĠĠĠĠ Ġ* Ġproperty Ġvalues Ġwhen Ġstarting Ġto Ġinteract Ġwith Ġa Ġinput Ġeditor . ĠAlso Ġresets Ġthe Ġcomp osing ĊĠĠĠĠ Ġ* Ġtexts Ġand Ġsets Ġthe Ġinitial Ġcaps Ġmode Ġaccordingly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonStart Input View ( instance : ĠEditor Instance , Ġrestart ing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeyboard Mode Ġ= Ġwhen Ġ( instance . input Attributes . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Type . NUMBER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Variation Ġ= ĠKey Variation . NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . NUMERIC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Type . PHONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Variation Ġ= ĠKey Variation . NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . PHONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Type . TEXT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Variation Ġ= Ġwhen Ġ( instance . input Attributes . variation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Variation . EMAIL _ ADDRESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Variation . WEB _ EMAIL _ ADDRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Variation . EMAIL _ ADDRESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Variation . PASSWORD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Variation . VISIBLE _ PASSWORD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Variation . WEB _ PASSWORD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Variation . PASSWORD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Attributes . Variation . URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Variation . URI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Variation . NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . CHAR ACT ERS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Variation Ġ= ĠKey Variation . NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . CHAR ACT ERS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinstance . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Comp osing Enabled Ġ= Ġwhen Ġ( keyboard Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . NUMERIC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . PHONE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . PHONE 2 Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġkey Variation Ġ!= ĠKey Variation . PASSWORD Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfl or is board . prefs . suggestion . enabled // Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ//! instance . input Attributes . flag Text Auto Complete Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ//! instance . input Attributes . flag Text No Suggestions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Private Mode Ġ= Ġfl or is board . prefs . advanced . force Private Mode Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ime Options . flag No Personal ized Learning ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! fl or is board . prefs . correction . remember Caps Lock State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Lock Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Caps State () ĊĠĠĠĠĠĠĠ Ġset Active Keyboard Mode ( keyboard Mode ) ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. set Candidate Suggestion Words ( System . nano Time (), Ġnull ) ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle Ġstuff Ġwhen Ġfinish ing Ġto Ġinteract Ġwith Ġa Ġinput Ġeditor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Finish Input View ( finish ing Input : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Window Shown () Ġ{ ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ Keyboard Mode . CHAR ACT ERS ]?. update Visibility () ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġ[ active Keyboard Mode ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠIf Ġnull Ġ[ Keyboard Mode . CHAR ACT ERS ], Ġelse Ġ[ active Keyboard Mode ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Active Keyboard Mode (): ĠKeyboard Mode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġactive Keyboard Mode Ġ?: ĠKeyboard Mode . CHAR ACT ERS ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġ[ active Keyboard Mode ] Ġand Ġupdates Ġthe Ġ[ Smart bar View . is Quick Actions Visible ] Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Active Keyboard Mode ( mode : ĠKeyboard Mode ) Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView Flip per ?. display ed Child Ġ= ĠtextView Flip per ?. indexOf Child ( when Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . EDIT ING Ġ-> Ġediting Keyboard View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġkeyboard Views [ mode ] ĊĠĠĠĠĠĠĠ Ġ}) ?. coerce At Least ( 0 ) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ mode ]?. update Visibility () ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ mode ]?. request Layout () ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ mode ]?. request Layout All Keys () ĊĠĠĠĠĠĠĠ Ġactive Keyboard Mode Ġ= Ġmode ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. is Quick Actions Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Subtype Changed ( new Subtype : ĠSub type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Editor Instance . is Comp osing Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdictionary Manager . load Dictionary ( Asset Ref ( Asset Source . Assets ," ime / dict / en . f lict ")). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Dictionary Ġ= Ġit . get OrDefault ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġheavy Ġload Ġon Ġmain Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( keyboard Mode Ġin ĠKeyboard Mode . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkeyboard View Ġ= Ġkeyboard Views [ keyboard Mode ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( keyboard View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard View . computed Layout Ġ= Ġlayout Manager . fetch Computed Layout Async ( keyboard Mode , Ġnew Subtype , Ġfl or is board . prefs , Ġfl or is board . subtype Manager . getC urrency Set ( new Subtype )). await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard View . update Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMain Ġlogic Ġpoint Ġfor Ġprocessing Ġcursor Ġupdates Ġas Ġwell Ġas Ġparsing Ġthe Ġcurrent Ġcomp osing Ġword ĊĠĠĠĠ Ġ* Ġand Ġpassing Ġthis Ġinfo Ġon Ġto Ġthe Ġ[ Smart bar View ] Ġto Ġturn Ġit Ġinto Ġcandidate Ġsuggestions . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonUpdate Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! input EventDispatcher . is Pressed ( KeyCode . SHIFT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Caps State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" current Ġword : Ġ${ active Editor Instance . cached Input . current Word . text }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( active Editor Instance . is Comp osing Enabled Ġ&& Ġ! input EventDispatcher . is Pressed ( KeyCode . DELETE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Editor Instance . should Re evaluate Comp osing Suggestions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . should Re evaluate Comp osing Suggestions Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Dictionary ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuggestions Ġ= Ġit . getToken Pred i ctions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreceding Tokens Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Token Ġ= ĠToken ( active Editor Instance . cached Input . current Word . text ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Suggestion Count Ġ= Ġ 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Po ss ibly Off ensive Ġ= Ġ! fl or is board . prefs . suggestion . block Po ss ibly Off ensive ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelapsed Ġ= Ġ( System . nano Time () Ġ- ĠstartTime ) Ġ/ Ġ 1 0 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" s ug g Ġfetch Ġtime : Ġ$ elapsed Ġus ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmart bar View ?. set Candidate Suggestion Words ( startTime , Ġsuggestions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmart bar View ?. update Candidate Suggestion Caps State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmart bar View ?. set Candidate Suggestion Words ( System . nano Time (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Primary Clip Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. on Primary Clip Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġthe Ġcurrent Ġcaps Ġstate Ġaccording Ġto Ġthe Ġ[ Editor Instance . cursor Caps Mode ], Ġwhile ĊĠĠĠĠ Ġ* Ġrespect ing Ġ[ caps Lock ] Ġproperty Ġand Ġthe Ġcorrection . auto Capital ization Ġpreference . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Caps State () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! caps Lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Ġ= Ġfl or is board . prefs . correction . auto Capital ization Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . cursor Caps Mode Ġ!= ĠInput Attributes . Caps Mode . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Views [ active Keyboard Mode ]?. invalidate All Keys () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġa Ġgiven Ġ[ Swipe Action ]. ĠI g no res Ġany Ġ[ Swipe Action ] Ġbut Ġthe Ġones Ġrelevant Ġfor Ġthis ĊĠĠĠĠ Ġ* Ġclass . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute Swipe Action ( swipe Action : ĠSw ipe Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Data Ġ= Ġwhen Ġ( swipe Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . DELETE _ WORD Ġ-> ĠKey Data . DELETE _ WORD ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . INSERT _ SPACE Ġ-> ĠKey Data . SPACE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ DOWN Ġ-> ĠKey Data . ARROW _ DOWN ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ UP Ġ-> ĠKey Data . ARROW _ UP ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ LEFT Ġ-> ĠKey Data . ARROW _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ RIGHT Ġ-> ĠKey Data . ARROW _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ START _ OF _ LINE Ġ-> ĠKey Data . MOVE _ START _ OF _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ END _ OF _ LINE Ġ-> ĠKey Data . MOVE _ END _ OF _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ START _ OF _ PAGE Ġ-> ĠKey Data . MOVE _ START _ OF _ PAGE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . MOVE _ CURSOR _ END _ OF _ PAGE Ġ-> ĠKey Data . MOVE _ END _ OF _ PAGE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . SHIFT Ġ-> ĠKey Data . SHIFT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . SWITCH _ TO _ CLIP BOARD _ CONTEXT Ġ-> ĠKey Data . SWITCH _ TO _ CLIP BOARD _ CONTEXT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ipe Action . SHOW _ INPUT _ METHOD _ P ICK ER Ġ-> ĠKey Data . SHOW _ INPUT _ METHOD _ P ICK ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( key Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput EventDispatcher . send ( Input KeyEvent . down Up ( key Data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Smart bar Back Button Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Active Keyboard Mode ( Keyboard Mode . CHAR ACT ERS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Smart bar Candidate Pressed ( word : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Completion ( word ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Smart bar Clipboard Candidate Pressed ( clipboard Item : ĠClip board Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Clipboard Item ( clipboard Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Smart bar Private Mode Button Clicked () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( fl or is board . context , ĠR . string . private _ mode _ dialog __ title , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Smart bar Quick Action Pressed ( quick Action Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( quick Action Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . quick _ action _ switch _ to _ editing _ context Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Keyboard Mode Ġ== ĠKeyboard Mode . EDIT ING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Active Keyboard Mode ( Keyboard Mode . CHAR ACT ERS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Active Keyboard Mode ( Keyboard Mode . EDIT ING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . quick _ action _ switch _ to _ media _ context Ġ-> Ġfl or is board . setActive Input ( R . id . media _ input ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . quick _ action _ open _ settings Ġ-> Ġfl or is board . launch Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . quick _ action _ one _ h anded _ toggle Ġ-> Ġfl or is board . toggle One H anded Mode ( is Right Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . quick _ action _ undo Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . perform Undo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . quick _ action _ redo Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . perform Redo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. is Quick Actions Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . DELETE ] Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Delete () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġactive Editor Instance . delete Back wards () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . DELETE _ WORD ] Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Delete Word () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġactive Editor Instance . delete Words Before Cursor ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . ENTER ] Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Enter () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( active Editor Instance . ime Options . flag No Enter Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . perform Enter () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( active Editor Instance . ime Options . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Options . Action . DONE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Options . Action . GO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Options . Action . NEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Options . Action . PREVIOUS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Options . Action . SEARCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Options . Action . SEND Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . perform Enter Action ( active Editor Instance . ime Options . action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġactive Editor Instance . perform Enter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . LANGUAGE _ SWITCH ] Ġevent . ĠAlso Ġhandles Ġif Ġthe Ġlanguage Ġswitch Ġshould Ġcycle ĊĠĠĠĠ Ġ* ĠFl or is Board Ġinternal Ġor Ġsystem - wide . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Language Switch () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( fl or is board . prefs . keyboard . utility Key Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility Key Action . DYNAMIC _ SWITCH _ LANGUAGE _ E MO J IS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility Key Action . SWITCH _ LANGUAGE Ġ-> Ġfl or is board . switch To Next Subtype () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfl or is board . switch To Next Keyboard () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . SHIFT ] Ġdown Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Shift Down ( ev : ĠInput KeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ev . is Con secutive Event Of ( input EventDispatcher . last KeyEvent Down , Ġfl or is board . prefs . keyboard . long Press Delay . to Long ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Caps State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Lock Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Caps State Ġ= Ġ! caps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Lock Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ active Keyboard Mode ]?. invalidate All Keys () ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Candidate Suggestion Caps State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . SHIFT ] Ġup Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Shift Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġcaps Ġ= Ġnew Caps State ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ active Keyboard Mode ]?. invalidate All Keys () ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Candidate Suggestion Caps State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . SHIFT ] Ġcancel Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Shift Cancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġcaps Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġcaps Lock Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġkeyboard Views [ active Keyboard Mode ]?. invalidate All Keys () ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Candidate Suggestion Caps State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . SHIFT ] Ġup Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Shift Lock () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast KeyEvent Ġ= Ġinput EventDispatcher . last KeyEvent Down Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( last KeyEvent . data . code Ġ== ĠKeyCode . SHIFT Ġ&& Ġlast KeyEvent . action Ġ== ĠInput KeyEvent . Action . DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Caps State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaps Lock Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Views [ active Keyboard Mode ]?. invalidate All Keys () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsmart bar View ?. update Candidate Suggestion Caps State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . SPACE ] Ġevent . ĠAlso Ġhandles Ġthe Ġauto - correction Ġof Ġtwo Ġspace Ġt aps Ġif ĊĠĠĠĠ Ġ* Ġenabled Ġby Ġthe Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Space ( ev : ĠInput KeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fl or is board . prefs . keyboard . space Bar Sw itches To Characters Ġ&& Ġget Active Keyboard Mode () Ġ!= ĠKeyboard Mode . CHAR ACT ERS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Active Keyboard Mode ( Keyboard Mode . CHAR ACT ERS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( fl or is board . prefs . correction . double Space Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ev . is Con secutive Event Of ( input EventDispatcher . last KeyEvent Up , Ġfl or is board . prefs . keyboard . long Press Delay . to Long ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġactive Editor Instance . getText Before Cursor ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . length Ġ== Ġ 2 Ġ&& Ġ! text . matches (""" [ . ! ? âĢ ½ \ s ][ \ s ] """. to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . delete Back wards () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Text (".") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Text ( KeyCode . SPACE . to Char (). toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġ[ KeyCode ] Ġarrow Ġand Ġmove Ġevents , Ġbehaves Ġdifferently Ġdepending Ġon Ġtext Ġselection . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Arrow ( code : ĠInt , Ġcount : ĠInt ) Ġ= Ġactive Editor Instance . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Shift Pressed Ġ= Ġis Manual Selection Mode Ġ|| Ġinput EventDispatcher . is Pressed ( KeyCode . SHIFT ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ DOWN , Ġmeta ( shift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ LEFT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ LEFT , Ġmeta ( shift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ RIGHT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ RIGHT , Ġmeta ( shift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ UP , Ġmeta ( shift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ START _ OF _ PAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ UP , Ġmeta ( alt Ġ= Ġtrue , Ġshift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ END _ OF _ PAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ DOWN , Ġmeta ( alt Ġ= Ġtrue , Ġshift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ START _ OF _ LINE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ LEFT , Ġmeta ( alt Ġ= Ġtrue , Ġshift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ END _ OF _ LINE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! selection . is Selection Mode Ġ&& Ġis Manual Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode End Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Down Up KeyEvent ( KeyEvent . KEYCODE _ DP AD _ RIGHT , Ġmeta ( alt Ġ= Ġtrue , Ġshift Ġ= Ġis Shift Pressed ), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġ[ KeyCode . CLIP BOARD _ SELECT ] Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Clipboard Select () Ġ= Ġactive Editor Instance . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selection . is Selection Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Manual Selection Mode Ġ&& Ġis Manual Selection Mode Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection . update And Notify ( selection . start , Ġselection . start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection . update And Notify ( selection . end , Ġselection . end ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Selection Mode Ġ= Ġ! is Manual Selection Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMust Ġcall Ġto Ġupdate ĠUI Ġproperly ĊĠĠĠĠĠĠĠĠĠĠĠ Ġediting Keyboard View ?. on Update Selection () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdjust s Ġa Ġgiven Ġkey Ġdata Ġfor Ġcaps Ġstate Ġand Ġreturns Ġthe Ġcorrect Ġreference . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Adjust ed Key Data ( key Data : ĠKey Data ): ĠKey Data Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( caps Ġ&& Ġkey Data Ġis ĠFl or is Key Data Ġ&& Ġkey Data . shift Ġ!= Ġnull ) Ġ{ Ġkey Data . shift !! Ġ} Ġelse Ġ{ Ġkey Data Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Input KeyDown ( ev : ĠInput KeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget Adjust ed Key Data ( ev . data ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( data . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . INTERNAL _ BATCH _ EDIT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfl or is board . begin Internal Batch Edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SHIFT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Shift Down ( ev ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Input KeyUp ( ev : ĠInput KeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget Adjust ed Key Data ( ev . data ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( data . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ARROW _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ START _ OF _ PAGE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ END _ OF _ PAGE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ START _ OF _ LINE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . MOVE _ END _ OF _ LINE Ġ-> Ġif Ġ( ev . action Ġ== ĠInput KeyEvent . Action . DOWN _ UP Ġ|| Ġev . action Ġ== ĠInput KeyEvent . Action . REPEAT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Arrow ( data . code , Ġev . count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Arrow ( data . code , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . CLIP BOARD _ CUT Ġ-> Ġactive Editor Instance . perform Clipboard Cut () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . CLIP BOARD _ COPY Ġ-> Ġactive Editor Instance . perform Clipboard Copy () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . CLIP BOARD _ P AST E Ġ-> Ġactive Editor Instance . perform Clipboard Paste () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . CLIP BOARD _ SELECT Ġ-> Ġhandle Clipboard Select () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . CLIP BOARD _ SELECT _ ALL Ġ-> Ġactive Editor Instance . perform Clipboard Select All () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . DELETE Ġ-> Ġhandle Delete () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . DELETE _ WORD Ġ-> Ġhandle Delete Word () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ENTER Ġ-> Ġhandle Enter () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . INTERNAL _ BATCH _ EDIT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfl or is board . end Internal Batch Edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . LANGUAGE _ SWITCH Ġ-> Ġhandle Language Switch () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SETTINGS Ġ-> Ġfl or is board . launch Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SHIFT Ġ-> Ġhandle Shift Up () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SHIFT _ LOCK Ġ-> Ġhandle Shift Lock () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SHOW _ INPUT _ METHOD _ P ICK ER Ġ-> Ġfl or is board . ime Manager ?. show Input Method Picker () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SPACE Ġ-> Ġhandle Space ( ev ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SWITCH _ TO _ MEDIA _ CONTEXT Ġ-> Ġfl or is board . setActive Input ( R . id . media _ input ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SWITCH _ TO _ CLIP BOARD _ CONTEXT Ġ-> Ġfl or is board . setActive Input ( R . id . clip _ input ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SWITCH _ TO _ TEXT _ CONTEXT Ġ-> Ġfl or is board . setActive Input ( R . id . text _ input , Ġforce Switch To Characters Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . CLEAR _ CLIP BOARD _ HISTORY Ġ-> Ġfl or is board . fl or is Clipboard Manager ?. clear History With Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . TO GGLE _ ONE _ H AN DED _ MODE _ LEFT Ġ-> Ġfl or is board . toggle One H anded Mode ( is Right Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . TO GGLE _ ONE _ H AN DED _ MODE _ RIGHT Ġ-> Ġfl or is board . toggle One H anded Mode ( is Right Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ CHAR ACT ERS Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . CHAR ACT ERS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ NUMERIC Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . NUMERIC ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ NUMERIC _ ADV ANCED Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . NUMERIC _ ADV ANCED ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ PHONE Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . PHONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ PHONE 2 Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . PHONE 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ SYMBOL S Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . SYMBOL S ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . VIEW _ SYMBOL S 2 Ġ-> Ġset Active Keyboard Mode ( Keyboard Mode . SYMBOL S 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( active Keyboard Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . NUMERIC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . NUMERIC _ ADV ANCED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . PHONE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Mode . PHONE 2 Ġ-> Ġwhen Ġ( data . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . CHARACTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . NUMERIC Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdata . code . to Char (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Text ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwhen Ġ( data . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . PHONE _ PAUSE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . PHONE _ WAIT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdata . code . to Char (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Text ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwhen Ġ( data . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . CHARACTER , ĠKey Type . NUMERIC Ġ-> Ġwhen Ġ( data . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . URI _ COMPONENT _ TL D Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ld Ġ= Ġdata . label . toLowerCase ( Locale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Text ( t ld ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġdata . code . to Char (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= Ġif Ġ( fl or is board . active Subtype . locale . language Ġ== Ġ" el ") Ġ{ ĠLocale . getDefault () Ġ} Ġelse Ġ{ Ġfl or is board . active Subtype . locale Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġwhen Ġ( caps Ġ&& Ġactive Keyboard Mode Ġ== ĠKeyboard Mode . CHAR ACT ERS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġtext . toUpperCase ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Editor Instance . commit Text ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" send KeyPress ( key Data ): ĠReceived Ġunknown Ġkey : Ġ$ data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( data . code Ġ!= ĠKeyCode . SHIFT Ġ&& Ġ! caps Lock Ġ&& Ġ! input EventDispatcher . is Pressed ( KeyCode . SHIFT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Caps State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsmart bar View ?. update Smart bar State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Input Key Repeat ( ev : ĠInput KeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Input KeyUp ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Input Key Cancel ( ev : ĠInput KeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget Adjust ed Key Data ( ev . data ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( data . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . SHIFT Ġ-> Ġhandle Shift Cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ