/* reads user input keys and produces tinyfugue-keybinding macros */ /* written by a.sahlbach@earthbox.escape.de */ CALL RxFuncAdd 'SysGetKey', 'RexxUtil', 'SysGetKey' keybuffer = '' DO FOREVER SAY "--- Press keys and <cr> to produce a tf-keymacro with no istrip" SAY "--- Press only <cr> to end" CALL readbuffer IF Length(keybuffer) = 0 THEN LEAVE kmacro = '' i = 1 DO WHILE i <= Length(keybuffer) key = SubStr(keybuffer,i,1) IF BitAnd(key,'80'x) = '80'x THEN kmacro = kmacro||'^[' key = BitAnd(key,'7f'x) IF isctrl(key) THEN kmacro = kmacro||'^'ctrl(key) ELSE kmacro = kmacro||key i = i + 1 END SAY "tf-macro for key-sequence "C2X(keybuffer)":" SAY " /def -b'"kmacro"' = <macro-action>" END EXIT ctrl: ret = BitAnd(C2D(Translate(Arg(1)))+C2D('@'),'7f'x) RETURN D2C(ret) isctrl: knum = C2D(Arg(1)) IF ((knum >= 0) & (knum <= 31)) | (knum >= 127) THEN ret = 1 ELSE ret = 0 RETURN ret readbuffer: keybuffer = "" rkey = "" DO WHILE rkey <> D2C(13) IF rkey = X2C('E0') THEN rkey = D2C(0) keybuffer = keybuffer||rkey rkey = SysGetKey('NOECHO') END SAY "" RETURN