class ScreenInfoCharacterPattern extends EscapeSequenceCharacterPattern {
    public ScreenInfoCharacterPattern() {
        useEscEsc = false; // stdMap and finMap don't matter here.
    }
    protected KeyStroke getKeyStrokeRaw(char first,int num1,int num2,char last,boolean bEsc) {
        if (first != '[' || last != 'R' || num1 == 0 || num2 == 0 || bEsc) {
            return null; // nope
        }
        if (num1 == 1 && num2 <= 8) {
            return null; // nope: much more likely it's an F3 with modifiers
        }
        TerminalPosition pos = new TerminalPosition(num2, num1);
        return new ScreenInfoAction(pos); // yep
    }

    public static ScreenInfoAction tryToAdopt(KeyStroke ks) {<FILL_FUNCTION_BODY>}


}

        if(ks == null) {
            return null;
        }
        switch (ks.getKeyType()) {
        case CURSOR_LOCATION: return (ScreenInfoAction)ks;
        case F3: // reconstruct position from F3's modifiers.
            if (ks instanceof KeyStroke.RealF3) { return null; }
            int col = 1 + (ks.isAltDown()  ? ALT  : 0)
                        + (ks.isCtrlDown() ? CTRL : 0)
                        + (ks.isShiftDown()? SHIFT: 0);
            TerminalPosition pos = new TerminalPosition(col,1);
            return new ScreenInfoAction(pos);
        default:  return null;
        }
    
<methods>public void <init>() ,public com.googlecode.lanterna.input.CharacterPattern.Matching match(List<java.lang.Character>) <variables>public static final int ALT,public static final int CTRL,public static final int SHIFT,protected final Map<java.lang.Character,com.googlecode.lanterna.input.KeyType> finMap,protected final Map<java.lang.Integer,com.googlecode.lanterna.input.KeyType> stdMap,protected boolean useEscEsc