Better screen support
This commit is contained in:
parent
6df2f11d3a
commit
f10d1ac0f0
|
@ -87,9 +87,7 @@
|
|||
[_ (simple-key (unknown-escape-sequence lexeme))])]
|
||||
[_ (error 'analyze-vt-bracket-key "Unexpected input sequence from lexer: ~v" lexeme)]))
|
||||
|
||||
(define (analyze-vt-O-key lexeme)
|
||||
(match lexeme
|
||||
[(pregexp "\eO(.)" (list _ mainchar))
|
||||
(define (analyze-vt-O-mainchar lexeme mainchar)
|
||||
(match mainchar
|
||||
["a" (C- 'up)]
|
||||
["b" (C- 'down)]
|
||||
|
@ -120,10 +118,20 @@
|
|||
["B" (simple-key 'down)] ;; kcud1
|
||||
["C" (simple-key 'right)] ;; kcuf1
|
||||
["D" (simple-key 'left)] ;; kcub1
|
||||
["E" (simple-key 'begin)] ;; in screen
|
||||
["F" (simple-key 'end)] ;; kend
|
||||
["H" (simple-key 'home)] ;; khome
|
||||
["M" (C- #\M)] ;; keypad enter (rxvt)
|
||||
[_ (simple-key (unknown-escape-sequence lexeme))])]
|
||||
["M" (add-modifier 'control (simple-key #\M))] ;; keypad enter (rxvt)
|
||||
[_ (simple-key (unknown-escape-sequence lexeme))]))
|
||||
|
||||
(define (analyze-vt-O-key lexeme)
|
||||
(match lexeme
|
||||
[(pregexp "\eO(.)(.)" (list _ v-plus-one-str mainchar))
|
||||
;; screen generates shifting escapes for the keypad like this
|
||||
(decode-shifting-number (string->number v-plus-one-str)
|
||||
(analyze-vt-O-mainchar lexeme mainchar))]
|
||||
[(pregexp "\eO(.)" (list _ mainchar))
|
||||
(analyze-vt-O-mainchar lexeme mainchar)]
|
||||
[other (simple-key (unknown-escape-sequence lexeme))]))
|
||||
|
||||
(define lex-lcd-input
|
||||
|
@ -136,8 +144,8 @@
|
|||
[#\uff (M- 'backspace)]
|
||||
[(:: "\e[" (:? (:+ numeric) (:* #\; (:+ numeric))) any-char)
|
||||
(analyze-vt-bracket-key lexeme)]
|
||||
[(:: "\eO" any-char)
|
||||
(analyze-vt-O-key lexeme)]
|
||||
[(:: "\eO" any-char) (analyze-vt-O-key lexeme)]
|
||||
[(:: "\eO" numeric any-char) (analyze-vt-O-key lexeme)]
|
||||
))
|
||||
|
||||
(module+ main
|
||||
|
|
Loading…
Reference in New Issue