---
name: "filterm"
section: "1"
platform: "linux"
package: "konwert"
version: "1.8-15"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/filterm"
---

# filterm(1)

filter terminal input and/or output

## NAME

filterm - filter terminal input and/or output

## SYNOPSIS

**filterm** *INPUT OUTPUT* \[*COMMAND* \[*ARGS*\]\]

## DESCRIPTION

Execute the specified *COMMAND* (default is the shell), filtering terminal input and/or output.

It can help e.g. when our terminal is unable to display non-ASCII characters or to enter them from the keyboard. It also makes writing various terminal filters easier.

*INPUT* and *OUTPUT* are names of konwert's filters - they are passed as the first argument to the [**konwert**(1)](/konwert/1.md) program. **filterm -** *OUTPUT* filters only output, and **filterm** *INPUT* **-** only input.

The command  **-** executes the shell as a login shell.

It differs from **konwert** *INPUT* **\|** *COMMAND* **\|** **konwert** *OUTPUT* in that the command is executed on a pseudo-terminal, so full-screen programs work correctly.

The filters have to output the characters as soon as they receive all necessary input, without buffering. [**trs**(1)](/trs/1.md) scripts are OK, but [**sed**(1)](/sed/1.md) or [**awk**(1)](/awk/1.md) or [**tr**(1)](/tr/1.md) scripts are not. In C you may use **read()**, **getchar()**, **fread()**, and **write()**, but **putchar()** and **fwrite()** only together with **fflush(stdout)**. In C++: **cin.get()**, **cout.put()**, and **cout \<\<**. In perl: **sysread**, **getc**, **read**, and **syswrite**, but **print** only with **$\| = 1**.

The input filter will have set the environment variable **FILTERM=in**, and the output one - **FILTERM=out**. This way some filters can slightly alter their behaviour when working for filterm.

### OPTIONS

- **--help**

  display help and exit

- **--version**

  output version information and exit

## FILTERS FOR FILTERM

See [**konwert**(1)](/konwert/1.md). Additionally the following konwert's filters are designed only for filterm:

- **tyldy** (input)

  Polish *~a~c~e~l~n~o~s~x~z*

- **lewyap** (input)

  Polish *\`a\`c\`e\`l\`n\`o\`s\`x\`z*

- **boldpl** (output)

  ASCII with Polish letters shown as bold.

- **pinectrlchars** (output)

  Replaces the characters *128..159* shown by the Pine (or another program) as *^À..^ß* back to the real *128..159*.

- **512bold** (output)

  Changes the mapping of colors in 512-character mode, which restricts the number of colors to eight. The palette is dynamically changed to contain the eight most recently used colors. When more colors are used at once, some of them display incorrectly.

- **512bold1** (output)

  Changes the mapping of colors in 512-character mode. Instead of ignoring the intensity, the following colors are available: black, red, green, white, blue, light magenta, light cyan, light gray; others are substituted with approximations. This gives better effect, allowing to show the intensity, with the side-effect of belying the hue of some colors.

- **kbdmacros** (input)

  Keyboard macros. A sequence of keys can be recorded with **Esc Ctrl-A** *SEQUENCE* **Esc Ctrl-E** *SHORTCUT* - after which, if you press the *SHORTCUT*, the *SEQUENCE* will be generated instead. Later such assignment can be deleted with **Esc Ctrl-A Esc Ctrl-E** *SHORTCUT* **Esc** **Ctrl-E**. Instead of **Esc Ctrl-** you often may press **Ctrl-Alt-**. The defined shortcuts, together with the above redefinable key combinations used to define them, are stored in the *~/.kbdmacros* file. Note: when you redefine a sequence, all its prefixes will not be passed through immediately, but wait until it can be unambiguously told which sequence was actually input. This includes escape sequences representing some extended keys.

## SEE ALSO

[**konwert**(1)](/konwert/1.md)

## BUGS

512bold filter is not perfect. Some escape sequences may be emulated incorrectly. Additionally, colors changed in multiple steps or not used unnecessarily allocate some of the eight colors.

## COPYRIGHT

filterm filters terminal input and/or output. It forms part of the konwert package.

Copyright (c) 1998 Marcin 'Qrczak' Kowalczyk

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

## AUTHOR

```
 __("<   Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.home.ml.org/
 \__/       GCS/M d- s+:-- a21 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
```
