package Ġorg . w ao ss . k 8 . java fx Ċ Ċ import Ġjavafx . scene . Scene Ċ import Ġorg . w ao ss . k 8 . input . Key Ċ import Ġorg . w ao ss . k 8 . input . Keyboard Ċ import Ġorg . w ao ss . k 8 . logger Ċ Ċ class ĠFX Keyboard ( private Ġval Ġscene : ĠScene ) Ġ: ĠKeyboard Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġkey Last Pressed Name : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval Ġkey Press Map Ġ= Ġmutable Map Of < String , ĠBoolean >() ĊĠĠĠ Ġprivate Ġval Ġkey Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" DIGIT 1 " Ġto Ġ" NUM 1 ", ĊĠĠĠĠĠĠĠ Ġ" DIGIT 2 " Ġto Ġ" NUM 2 ", ĊĠĠĠĠĠĠĠ Ġ" DIGIT 3 " Ġto Ġ" NUM 3 ", ĊĠĠĠĠĠĠĠ Ġ" DIGIT 4 " Ġto Ġ" C " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġscene . setOn Key Pressed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Name Ġ= Ġit . code . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Name Ġ!= Ġkey Last Pressed Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Last Pressed Name Ġ= Ġit . code . name . digit To Num () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Key Ġ$ code Name Ġpressed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Pressed ( key : ĠKey ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkey Last Pressed Name Ġ== Ġkey . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . digit To Num (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . startsWith (" DIGIT ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" NUM ${ this . remove Prefix (" DIGIT ") }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Key (): ĠKey Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKey . valueOf ( key Last Pressed Name . digit To Num ()) ĊĠĠĠ Ġ} Ċ }