package Ġio . github . had ix lin . iss . lin Ċ Ċ import Ġio . github . had ix lin . iss . Input Method Switch er Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠLinux I bus Switch er Ġ: ĠInput Method Switch er Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlast Status : ĠString Ġ= ĠSTATUS _ EN GL ISH ĊĠĠĠ Ġoverride Ġfun Ġstore Current Then Switch To English () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= ĠgetStatus () ĊĠĠĠĠĠĠĠ Ġlast Status Ġ= Ġcurrent ĊĠĠĠĠĠĠĠ Ġif Ġ( current Ġ== ĠSTATUS _ EN GL ISH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswitch To English () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrestore () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last Status Ġ!= ĠSTATUS _ EN GL ISH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexec I bus Cmd ( last Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Status Ġ= ĠSTATUS _ EN GL ISH ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġswitch To English () Ġ{ ĊĠĠĠĠĠĠĠ Ġexec I bus Cmd ( STATUS _ EN GL ISH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATUS _ EN GL ISH Ġ= Ġ" x kb : us :: eng " ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġexec I bus Cmd ( im : ĠString ): ĠProcess Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Ġ= ĠarrayOf (" ibus ", Ġ" engine ", Ġim ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproc Ġ= ĠRuntime . get Runtime (). exec ( cmd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproc . waitFor ( 3 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproc ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetStatus (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Ġ= ĠarrayOf (" ibus ", Ġ" engine ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproc Ġ= ĠRuntime . get Runtime (). exec ( cmd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproc . waitFor ( 3 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠScanner ( proc . inputStream ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . hasNext Line ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . nextLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }