El manual de Okteta

# El manual de Okteta

Friedrich W. H. Kossebau `<kossebau@kde.org>`

Alex Richardson `<arichardson.kde@gmail.com>`

Traductor: Ignacio Poggi
revisión Okteta 0.24.60 (2018-03-23)

Copyright © 2008, 2010, 2011 Friedrich W. H. Kossebau y Alex Richardson

Aviso Legal

Okteta es un editor sencillo para archivos y datos en bruto. Este tipo de programa también se conoce como editor hexadecimal o binario.

Capítulo 1. Introducción
Introducción

# Capítulo 1. Introducción

Okteta es un editor sencillo para datos en bruto de archivos.

Los datos se muestran de dos formas distintas: como valores numéricos de los bytes y como los caracteres asignados a los valores. Los valores y los caracteres se pueden mostrar separados en dos columnas o uno junto al otro con el valor sobre el carácter. Es posible editar tanto los valores como los caracteres.

Además de las capacidades usuales de edición, Okteta proporciona un reducido conjunto de herramientas, como una tabla que lista descodificaciones en tipos de datos comunes, una tabla que lista todos los bytes posibles con sus caracteres y valores equivalentes, un visor de información con estadísticas, una calculadora de sumas de verificación, una herramienta de filtrado y una herramienta de extracción de cadenas.

Todas las modificaciones realizadas sobre los datos cargados se pueden deshacer y rehacer sin ningún tipo de límite.

Capítulo 2. Bases
Bases

# Capítulo 2. Bases

## Iniciando Okteta

Escriba `okteta` en el intérprete de órdenes o seleccione Editor hexadecimal en el grupo Aplicaciones → Utilidades del lanzador de aplicaciones.

Las opciones de la línea de órdenes estándar de Qt™ y KDE Frameworks 5 se encuentran disponibles. Puede listarlas introduciendo `okteta `--help``.

Las opciones específicas de la línea de órdenes para Okteta son:

``<URL(s)>`` - abrir archivo(s) desde el(los) URL especificado(s)

Uso
Uso

## Uso

La ventana principal de Okteta tiene los siguientes componentes: una barra de menú, una barra de herramientas, una barra de estado, una o más barras laterales con herramientas y vista principal con pestañas que contienen visores de datos.

Cuando se abre un archivo o se crea un nuevo array de bytes, los bytes que contiene se listan consecutivamente en líneas con un determinado número de bytes por línea. Se muestran de dos formas distintas: como valores numéricos de los bytes y como los caracteres asignados a los valores. Los valores y los caracteres se pueden mostrar separados en dos columnas o uno junto al otro con el valor sobre el carácter. En la parte izquierda se muestran los desplazamientos del primer byte de cada línea.

El manejo es similar al común en muchos editores de textos: los datos se pueden editar, cortar, copiar, pegar, arrastrar y soltar como el texto dentro de un editor de textos. Un cursor marca la posición actual. Si pulsa la tecla Insert, cambiará entre los modos sobrescribir e insertar. El modo de sobrescritura es más estricto que en los editores de texto, ya que no permite ninguna operación que modifique el tamaño del array de bytes.

Al contrario que en los editores de texto, el contenido se muestra de dos formas distintas. Solo una de ellas está activa para introducir datos. Se muestran dos cursores enlazados para los visores de valores y de caracteres. El cursor activo parpadea. Si están activos los caracteres, podrá introducir caracteres del mismo modo que en los editores de texto. Si están activos los valores, al escribir un dígito se abrirá un pequeño editor para introducir el resto del valor.

El diálogo de búsqueda permite al usuario buscar una cadena específica de bytes, que se puede definir como valores (hexadecimales, decimales, octales, binarios) o texto (con la codificación actual de 8 bits o como UTF-8).

Se pueden abrir varios arrays de bytes simultáneamente, pero solo uno puede estar activo. Use el menú Ventana para seleccionar el array de bytes que estará activo.

Capítulo 3. Herramientas
Herramientas

# Capítulo 3. Herramientas

## Introducción

Okteta contiene varias herramientas, algunas para analizar y manipular arrays de bytes y otras para otros propósitos más generales. Estas herramientas se pueden activar o desactivar desde la entrada Herramientas de la barra de menú. Cada herramienta posee un pequeño visor que se puede anclar en cualquiera de las barras laterales o flotar libremente como una ventana. Puede anclar, desanclar, reorganizar y también apilar los visores de las herramientas con el ratón, pulsando el botón izquierdo del ratón sobre la barra de título del visor de la herramienta, moviéndolo como desee y soltando el botón izquierdo del ratón para completar la acción; puede cancelar la operación pulsando la tecla Esc.

### Analizadores y manipuladores

Tabla de valores/caracteres

  La tabla hace un listado de todos los valores posibles de byte, tanto en forma caracteres como en diferentes codificaciones numéricas.

  El valor seleccionado puede ser insertado en la posición del cursor para un número definido de bytes. Esto puede ser logrado usando el botón Insertar o haciendo doble clic en la línea de la tabla.

Filtro binario

  El filtro realiza operaciones binarias en los bytes seleccionados. Después de elegir la operación (AND, OR, ROTATE…), los parámetros, si hay alguno, pueden ser configurados en el cuadro de diálogo que se muestra debajo. El filtro se ejecuta al usar el botón Filtro.

Cadenas

  Esta herramienta localiza las cadenas en los bytes seleccionados. Tras escoger una longitud mínima para la cadena y pulsar el botón Extraer, las cadenas se buscarán con la herramienta «grep». Se puede reducir la lista de cadenas mostradas introduciendo algún término para filtrarlas.

Estadísticas

  La herramienta crea una estadística para los bytes seleccionados. La estadística proporciona la frecuencia de aparición de cada byte en la selección. Se puede calcular usando el botón Construir.

Suma de verificación

  Esta herramienta calcula varias sumas de verificación o de «hash» para los bytes seleccionados. Tras escoger el algoritmo y ajustar el parámetro, si hay uno, se calcula la suma al usar el botón Calcular.

Tabla de decodificación

  La tabla muestra los valores del byte o de los bytes comenzando en la posición del cursor para algunos tipos de datos sencillos y comunes, como enteros o valores en coma flotante, así como UTF-8. Si hace doble clic sobre una línea de la tabla se abrirá un editor en el que podrá editar y cambiar el valor.

Estructuras

  Esta herramienta activa la investigación y la edición de arrays de bytes basados en definiciones de estructuras creadas por el usuario. Las instrucciones detalladas están en una sección propia.

### Herramientas generales

Sistema de archivos

  Esta herramienta ofrece un navegador de archivos integrado que se puede usar para seleccionar los archivos a abrir.

Documentos

  Esta herramienta muestra todos los archivos actualmente creados o cargados. Los símbolos marcan el archivo en la vista actualmente activa y también muestran qué archivos contienen modificaciones sin guardar o qué copias almacenadas han sido modificadas por otro programa.

Marcadores

  Esta herramienta se puede usar para gestionar los marcadores de forma alternativa al menú Marcadores.

  ### Nota

  Los marcadores son temporales en la actualidad y no se guardan si cierra el array de bytes o el programa.

Información sobre el archivo

  Esta herramienta muestra información sobre el archivo actual, incluyendo su tipo, su ubicación de almacenamiento y su tamaño.

Terminal

  Una terminal integrada; el directorio de trabajo no está enlazado con el archivo activo.

Conversión de juegos de caracteres

  La herramienta reescribe los bytes de modo que los respectivos caracteres sean los mismos que con el otro juego de caracteres. Solo se permite el uso de juegos de caracteres de 8 bits. Los caracteres sin correspondencia se sustituyen en la actualidad por el valor 0.

Herramienta de estructuras
Herramienta de estructuras

## Herramienta de estructuras

### General

La herramienta de estructuras permite el análisis y la edición de arrays de bytes basados en definiciones de estructuras creadas por el usuario, que se pueden construir a partir de arrays, uniones, tipos primitivos y valores de enumeración.

Posee un diálogo de ajustes propio, que se puede mostrar usando el botón Ajustes. Existen varias opciones que se pueden configurar, como el estilo (decimal, hexadecimal o binario) en el que se muestran los valores. También es posible escoger qué definiciones de estructuras se cargan y qué estructuras se muestran en el visor.

Las estructuras se definen en archivos de definición de estructuras de Okteta (basados en XML, con la extensión `.osd`). Adicionalmente, un archivo `.desktop` contiene metadatos sobre dicho archivo de descripción de estructura, como el autor, su página web y la licencia de uso.

En la actualidad no se pueden crear ni editar definiciones de estructuras desde dentro del programa, por lo que estas operaciones se deben realizar de forma manual como se describe en las siguientes secciones.

### Instalación de definiciones de estructuras

#### Instalación usando KNewStuff

El modo más fácil para instalar nuevas definiciones de estructuras consiste en usar la utilidad KNewStuff integrada en Okteta. Para instalar una estructura existente, abra el diálogo de preferencias de la herramienta «Estructuras». Seleccione ahí la pestaña Gestión de estructuras y pulse el botón Obtener nuevas estructuras…. El diálogo que se muestra a continuación le permite instalar y desinstalar estructuras.

#### Instalación manual de definiciones de estructuras

La herramienta de estructuras comprueba la existencia de descripciones de estructuras en el subdirectorio `okteta/structures/` del directorio del usuario para los datos de programas (puede encontrarlo ejecutando `qtpaths `--paths GenericDataLocation``). Es posible que tenga que crear este directorio si aún no ha instalado ninguna definición de estructura.

Existen dos archivos para cada definición de estructura: uno para la definición y otro con la extensión `.desktop` para los metadatos (autor, versión, etc.).

En este directorio existe un subdirectorio para cada definición de estructura, que contiene tanto el archivo `.desktop` como el archivo `.osd` o el archivo `main.js` de la definición.

Por ejemplo, con el directorio de datos de programas ``qtpaths `--paths GenericDataLocation``` y una definición de estructura llamada «EstructuraEjemplo», existirá el directorio `okteta/structures/EstructuraEjemplo`, que contendrá los archivos `EstructuraEjemplo.desktop` y `EstructuraEjemplo.osd`.

#### Uso de las estructuras recién instaladas

Si ha instalado una nueva definición de estructura, tendrá que reiniciar Okteta antes de poder usarla. Tras iniciar Okteta, abra el diálogo de preferencias de la herramienta de estructuras. Seleccione allí la pestaña Gestión de estructuras y asegúrese de marcar la definición de estructura en cuestión. Cambie luego a la pestaña Estructuras y asegúrese de que el elemento en cuestión aparece listado en la parte de la derecha.

### Compartir definiciones de estructuras

No necesita crear una definición para las estructuras comunes, pero sí puede reutilizar alguna definición existente de sitios como store.kde.org.

También es posible que quiera compartir una definición. Para ello, cree un archivo comprimido (por ejemplo, un archivo comprimido tar, `.tar.gz`) que contenga únicamente el subdirectorio con el archivo `.desktop` y el archivo de definición de la estructura. Según el ejemplo de la sección anterior, sería el directorio `EstructuraEjemplo` con todo su contenido. El uso de este formato para compartir las definiciones de estructuras permite instalarlas en Okteta sin tener que hacerlo manualmente.

### Creación de definiciones de estructuras

### Nota

Puede encontrar una guía más actualizada (aunque incompleta) para escribir definiciones de estructuras en la Wiki de KDE UserBase.

Existen dos modos diferentes de crear definiciones de estructuras. El primero consiste en escritor la definición en XML, mientras que el otro usa JavaScript. La aproximación en JavaScript le permite crear estructuras más complejas con funcionalidades como, por ejemplo, la de validar la estructura. El uso de XML le proporciona menos funcionalidades, aunque el más sencillo si lo único que necesita es una estructura estática. Si lo que necesita es una estructura dinámica (es decir, en la que la longitud de los arrays depende de otros valores de la estructura, o el esquema de la estructura es diferente cuando cambian algunos valores miembro), tendrá que escribir la definición de la estructura en JavaScript. Existe una excepción a esta regla: si tiene un array cuya longitud se supone que es exactamente la misma que otro valor de la estructura, podrá usar XML. Pero si es algo como longitud - 1, debe usar JavaScript.

### Formato de archivo XML de definición de estructuras

### Nota

Puede encontrar una guía más actualizada (aunque incompleta) para escribir definiciones de estructuras en la Wiki de KDE UserBase.

El archivo XML con la extensión `.osd` tiene un elemento raíz: <data>, que no posee atributos. Dentro de este elemento debe existir uno de los siguientes elementos:

<primitive>

  Para crear tipos de datos de primitivas como, por ejemplo, int y float. Este elemento no acepta subelementos y puede tener los siguientes atributos:

  type

    El tipo de esta primitiva. Debe ser uno de los siguientes:

    - char para un carácter ASCII de 8 bits

    - int8, int16, int32, int64 para enteros con signo del tamaño indicado

    - uint8, uint16, uint32, uint64 para enteros sin signo del tamaño indicado

    - bool8, bool16, bool32, bool64 para booleanos sin signo (0 = falso, cualquier otro valor = cierto) del tamaño indicado

    - float para números en coma flotante IEEE754 de 32 bits

    - double para números en coma flotante IEEE754 de 64 bits

<bitfield>

  Para crear un campo de bits. Este elemento no acepta subelementos y puede tener los siguientes atributos:

  width

    El número de bits que usa este campo de bits. Debe estar comprendido entre 1 y 64.

  type

    El tipo de este campo de bits. Debe ser uno de los siguientes:

    - unsigned para un campo de bits donde el valor se interpretará como valor sin signo (comprendido entre 0 y 2width - 1)

    - signed para un campo de bits donde el valor se interpretará como valor con signo (comprendido entre -2width - 1 y 2width - 1 - 1)

    - bool para un campo de bits donde el valor se interpretará como booleano

    ### Nota

    Recuerde añadir siempre un relleno tras un <bitfield>, ya que, de lo contrario, el siguiente elemento comenzará en medio de un byte (excepto con cadenas y arrays, que añaden relleno de forma automática). Por supuesto, el relleno no será necesario si quiere este comportamiento.

<enum>

  Para crear un tipo de primitiva, excepto donde los valores se muestran como miembros de una enumeración, si es posible. Este elemento no acepta ningún subelemento (en caso contrario necesitaría una etiqueta <enumDef> en el archivo para hacer referencia a él). Posee los siguientes atributos:

  enum

    El enumerador subyacente para este valor. Debe concordar con el atributo name de una de las etiquetas <enumDef> de este archivo.

  type

    El tipo de este enumerador. Consulte el atributo tipo de <primitive>. La única diferencia es que Double y Float no tienen sentido.

<flags>

  Esto es lo mismo que <enum> con la única diferencia de que los valores se representan como un bitwise-or de todos los valores de la enumeración.

<struct>

  Para crear una estructura. El resto de elementos (incluido <struct>) pueden ser hijos de este, en cuyo caso serán parte de la estructura resultante.

<union>

  Para crear una unión. En esencia es lo miso que <struct>, excepto por el hecho de que todos los elementos hijos comenzarán desde el mismo desplazamiento. Resulta útil para interpretar la misma secuencia de bytes de diferentes modos.

<array>

  Para crear un array. Este elemento acepta únicamente un hijo (el tipo subyacente del array), que puede ser cualquiera de los elementos, incluso el mismo <array>. También posee los siguientes atributos:

  length

    El número de elementos del array como número decimal. De forma alternativa, también puede ser una cadena que coincida con el atributo de nombre de un elemento <primitive>, <enum> o <flags> previamente definido. En este caso, la longitud será el valor de dicho elemento. En la actualidad está limitado a 10000, ya que un array mayor usaría demasiada memoria y haría que el programa fuese muy lento.

<string>

  Para crear una cadena con diferentes codificaciones. Por omisión, obtendrá una cadena de estilo C terminada con NULL. No obstante, se pueden crear distintos tipos de cadenas con los siguientes atributos:

  terminatedBy

    Este atributo determina con qué código unicode termina la cadena. Debe ser un número hexadecimal (que puede comenzar por 0x). Cuando se usa la codificación ASCII, solo tienen sentido los valores inferiores a 0x7f, incluido. Si no se indica este valor ni maxCharCount ni maxByteCount, se asume que es 0 (cadena de estilo C)

  maxCharCount

    El número máximo de caracteres que puede contener la cadena. Si también se especifica terminatedBy, la cadena se terminará con cualquiera de los dos que se alcance primero. Esto es mutuamente exclusivo con maxByteCount

  maxByteCount

    El número máximo de bytes que esta cadena puede tener de longitud. Si también se especifica terminatedBy, la cadena se terminará con cualquiera de las dos que se alcance primero. Esto es mutuamente exclusivo con maxCharCount. Con codificaciones como ASCII es idéntico a maxCharCount.

  type

    La codificación de la cadena. Puede ser una de las siguientes:

    - ASCII

    - LATIN-1

    - UTF-8

    - UTF-16-LE o UTF-16-BE. Si no se indica uno de los sufijos -LE o -BE, se asume «little endian».

    - UTF-32-LE o UTF-32-BE. Si no se indica uno de los sufijos -LE o -BE, se asume «little endian».

Todos los elementos aceptan también el atributo name, que es visible en las vistas de las estructuras.

### Un ejemplo de definición de estructura en XML y en JavaScript

### Nota

Puede encontrar una guía más actualizada (aunque incompleta) para escribir definiciones de estructuras en la Wiki de KDE UserBase.

#### El paso en común compartido por ambas aproximaciones

Nuestro archivo de metadatos sería semejante al siguiente:

              [Desktop Entry]
              Icon=arrow-up❶
              Type=Service
              ServiceTypes=KPluginInfo

              Name=Estructura de prueba simple
              Comment=Una estructura de prueba muy sencilla que solo contiene dos elementos

              X-KDE-PluginInfo-Author=Alex Richardson
              X-KDE-PluginInfo-Email=mi.direccion@email.org
              X-KDE-PluginInfo-Name=estructurasimple
              X-KDE-PluginInfo-Version=1.0
              X-KDE-PluginInfo-Website=https://www.plugin.org/
              X-KDE-PluginInfo-Category=structure
              X-KDE-PluginInfo-License=LGPL
              X-KDE-PluginInfo-EnabledByDefault=false

❶ | El icono que muestra Okteta para esta estructura puede ser cualquier cosa que encuentre al ejecutar `kdialog `--geticon`` o una ruta a un icono

Estos campos deberían resultar autoexplicativos, excepto `X-KDE-PluginInfo-Name`. El valor de este campo debe tener el nombre del directorio que contiene el archivo, así como el nombre del archivo `.desktop`. Al crear las definiciones de una estructura XML, el nombre del archivo `.osd` debe coincidir con el nombre.

En este ejemplo tendremos un directorio llamado `estructurasimple` que contendrá el archivo `estructurasimple.desktop`. Al definir estructuras en XML, el directorio también contendrá un archivo llamado `estructurasimple.osd`. Si usáramos JavaScript tendremos en su lugar un archivo llamado `main.js`.

#### Una definición de estructura sencilla en XML

Para comenzar vamos a crear una definición para una estructura de pruebas muy simple que solo contiene tipos de datos enteros (un carácter, un entero de 32 bits y un campo de bits). Esto se expresaría en C/C++ del siguiente modo:

              struct simple {
                char aChar;
                int anInt;
                bool bitFlag :1;
                unsigned padding :7;
              };

El primer paso es escribir el archivo `.osd` según el formato de archivo descrito en la sección anterior. Lo llamaremos `estructurasencilla.osd`:

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="simple">
                  <primitive name="aChar" type="Char"/>
                  <primitive name="anInt" type="Int32"/>
                  <bitfield name="bitFlag" type="bool" width="1"/>
                  <bitfield name="padding" type="unsigned" width="7"/>
               </struct>
              </data>

que es bastante similar a la definición de C/C++.

Ahora debe crear un subdirectorio `estructurasimple` dentro del directorio de instalación de la estructura (consulte la instalación manual de definiciones de estructuras) y copiar los dos archivos en dicho directorio. Luego tendrá que reiniciar Okteta para poder usar la nueva estructura.

#### La misma estructura en JavaScript

Para implementar la estructura anterior en JavaScript, cree un archivo llamado `main.js` en lugar de `simplestruct.osd` y cambie X-KDE-PluginInfo-Category=structure a X-KDE-PluginInfo-Category=structure/js. El contenido de este archivo debe ser:

            function init() {
              var structure = struct({
                aChar : char(),
                anInt : int32(),
                bitFlag : bitfield("bool", 1),
                padding : bitfield("unsigned", 7),
              })
              return structure;
            }

La estructura mostrada por Okteta es siempre el valor devuelto por la función `init`.

Puede llamar a las siguientes funciones para crear un tipo de primitiva:

- char()

- int8(), int16(), int32() or int64()

- uint8(), uint16(), uint32() or uint64()

- bool8(), bool16(), bool32() or bool64()

- float()

- double()

La función «bitfield» tiene dos parámetros: el primero es una cadena que contiene `bool`, `signed` o `unsigned`; el segundo parámetro es un entero que establece el ancho en bits.

#### Estructuras más complejas

A continuación crearemos una definición de una estructura más compleja que llamaremos «compleja» y guardaremos en un archivo llamado `compleja.osd`. Esta estructura contendrá dos arrays (uno de longitud fija y otro donde la longitud se determina en tiempo de ejecución), así como una estructura anidada y una unión.

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="compleja">
                  <primitive name="size" type="UInt8" />
                  <union name="aUnion">
                    <array name="fourBytes" length="4">
                      <primitive type="Int8" />
                    </array>
                  </union>
                  <struct name="nested">
                    <array name="string" length="size"> <!-- hace referencia a la longitud del campo anterior -->
                      <primitive type="Char" />
                    </array>
                  </struct>
                </struct>
              </data>

Esto se correspondería con el siguiente pseudocódigo C/C++

    struct complex {
                uint8_t size;
                union aUnion {
                  int8_t fourBytes[4];
                };
                struct nested {
                  char string[size] //no válido en C++, hace referencia a valor de tamaño uint8
                };
              };

### Nota

Obviamente, solo puede tener campos de referencia a arrays de longitud dinámica antes del propio array.

A continuación creamos el archivo `compleja.desktop` del mismo modo que en el ejemplo anterior (asegúrese de fijar el valor `X-KDE-PluginInfo-Name` correctamente) y haga lo mismo para instalar ambos archivos.

#### Más información

Puede encontrar unas cuantas definiciones de estructuras de ejemplo en el repositorio Git. Encontrará, por ejemplo, las cabeceras de los archivos PNG y ELF. Puede encontrar un esquema XML que describe la estructura de los archivos `.osd` aquí. Si necesita más información, contacte conmigo en `(arichardson.kde AT gmail.com)`.

Capítulo 4. Introducción a la interfaz
Introducción a la interfaz

# Capítulo 4. Introducción a la interfaz

## Elementos del menú

Además de los menús comunes de KDE descritos en el capítulo Menú de la documentación de los Fundamentos de KDE, Okteta posee las siguientes entradas de menú específicas de la aplicación:

### Menú Archivo

Archivo → Nuevo (Ctrl+N)

  Crear un nuevo array de bytes…

  - Vacío: … como vacío.

  - Desde el portapapeles: … con el contenido actual del portapapeles.

  - Patrón…: … con un patrón determinado.

  - Datos aleatorios…: … con datos aleatorios.

  - Secuencia: … con todos los bytes desde 0 a 255.

Archivo → Exportar

  Exporta los bytes seleccionados a un archivo…

  - Valores: … codificados como valores de bytes. Por omisión, los valores se separan con un espacio en blanco. Los caracteres de separación se pueden cambiar en el diálogo de Exportar.

  - Caracteres: … codificados como texto sin formato.

  - Base64: … codificado en formato Base64.

  - Base32: … codificado en formato Base32.

  - Ascii85: codificado en formato Ascii85.

  - Uuencode: … codificado en formato Uuencode.

  - Xxencoding: … codificado en formato Xxencoding.

  - Intel Hex: … codificado en formato Intel Hex.

  - S-Record: … codificado en formato S-Record.

  - Array de C: … definido como un array en el lenguaje de programación C.

  - Ver en texto plano: … como en la vista de datos con desplazamiento, muestra valores de bytes y caracteres.

Archivo → Permisos → Asignar solo lectura

  Cuando está activado, no se podrán hacer cambios en la tabla de bytes cargada.

Archivo → Cerrar los demás

  Cierra todos los arrays de bytes, excepto el actual.

### El menú Editar

Copiar y cortar envían datos al portapapeles con el tipo MIME «application/octetstream». Klipper no es capaz de mostrar este tipo de datos. Casi ninguna otra aplicación podrá manejarlos, ya que solo son datos sin formato. Vea también el submenú Copiar como.

Edición → Copiar como

  Copiar los bytes seleccionados en uno de los distintos formatos en el portapapeles. Para obtener una de los formatos disponibles, consulte la opción del menú Archivo → Exportar

Edición → Insertar
  Insertar patrón…

    Inserta una cadena específica de bytes en la posición del cursor.

    Las opciones del diálogo le permiten especificar el número de veces que se insertará el patrón y su formato (Hexadecimal, Decimal, Octal, Binario, Caracteres o UTF-8).

Editar → Deseleccionar (Ctrl+Mayúsculas+A)

  Deselecciona la selección actual.

Editar → Seleccionar intervalo… (Ctrl+E)

  Abre un diálogo empotrado para introducir el intervalo a seleccionar.

Edición → Modo de sobrescritura (Ins)

  Cambia entre el modo Insertar y el modo Sobrescribir.

  ### Nota

  La implementación del modo de sobrescritura es muy estricta, ya que no es posible cambiar el tamaño de los datos (no se puede añadir ni eliminar bytes).

Edición → Encontrar… (Ctrl+F)

  Encuentra un patrón específico en el documento. Pueden ser buscados patrones hexadecimales, decimales, octales, binarios o texto.

  Las opciones en el cuadro de diálogo le permiten especificar el punto de inicio, la dirección y el rango de la búsqueda.

Edición → Ir al desplazamiento… (Ctrl+G)

  Mueve el cursor hacia un desplazamiento específico.

### El menú Ver

Ver → Mostrar desplazamientos de líneas (F11)

  Cambia entre sí/no la visualización en un panel de la línea de desplazamiento a la izquierda.

Vista → Mostrar valores o caracteres

  Selecciona las interpretaciones de los bytes que se mostrarán. Las posibles son:

  - Valores

  - Caracteres

  - Valores y caracteres

Vista → Codificación de los valores

  Selecciona la codificación de los valores entre:

  - Hexadecimal

  - Decimal

  - Octal

  - Binario

Vista → Codificación de caracteres

  Selecciona la codificación de los caracteres en el submenú.

Vista → Mostrar caracteres no imprimibles

  Cambia entre sí/no la visualización de los caracteres no imprimibles Si se encuentra apagado, en los lugares correspondientes de la columna de caracteres se mostrará en su lugar un carácter sustituto.

Vista → Fijar bytes por línea

  Selecciona los bytes seleccionados por línea en el diálogo. El valor por omisión es de 16 bytes.

Vista → Fijar bytes por grupo

  Por omisión, los valores hexadecimales se muestran en grupos de 4 bytes. Usando esta opción, puede adaptar este comportamiento según sus propias preferencias.

Ver → Disposición dinámica

  Configura las reglas de diseño de la visualización de los datos. Esto define cuantos bytes son mostrados en pantalla por línea, dependiendo del ancho de la vista. Las reglas posibles son:

  - Desactivada: El diseño se adapta al número de bytes actual por línea, y no se adapta a los cambios de tamaño de la vista.

  - Envolver solo grupos completos de bytes: Coloca tantos bytes por línea como sea posible, hasta que el grupo de bytes se encuentre completo.

  - Activada: Lo mismo que el anterior, pero permite también grupos incompletos de bytes.

Vista → Modo de vista

  Selecciona la organización de las vista entre:

  - Columnas: Las interpretaciones de los valores y de los caracteres se muestran con la distribución clásica de cada uno de ellos en una columna separada.

  - Filas: La interpretación en caracteres de un byte se muestra directamente debajo de la interpretación del valor.

Ver → Dividir horizontalmente (Ctrl+Mayúsculas+T)

  Divide el área de la vista enfocada actualmente en dos partes, añadiendo una copia de la vista actual a la nueva área inferior.

Ver → Dividir verticalmente (Ctrl+Mayúsculas+L)

  Divide el área de la vista enfocada actualmente en dos partes, añadiendo una copia de la vista actual a la nueva área de la derecha.

Ver → Cerrar el área de visión (Ctrl+Mayúsculas+R)

  Cierra el área de visión con la vista enfocada actualmente.

Ver → Perfil de vista

  Las preferencias de la vista se pueden guardar de forma separada en perfiles de vista. El perfil seleccionado en la actualidad se puede actualizar directamente desde las preferencias de la vista actual, o bien puede crear uno nuevo a partir de ellas. Todos los perfiles de vista se pueden gestionar en un diálogo al que puede acceder usando Preferencias → Gestionar perfiles de la vista….

### El menú Ventana

Proporciona un listado de las vistas actuales. Selecciona la ventana activa.

### El menú Marcadores

Es posible establecer diversos marcadores para una única tabla de bytes. Cada tabla de bytes tiene su propio conjunto de marcadores, y el apropiado se muestra al final del menú Marcadores. Elija un marcador en el menú para desplazar el cursor y la vista hasta él.

### Nota

Los marcadores son temporales en la actualidad y no se guardan si cierra el array de bytes o el programa.

Marcadores → Añadir marcador (Ctrl+B)

  Marca una posición dentro de la tabla de bytes.

Marcadores → Borrar marcador (Ctrl+Mayúsculas+B)

  Borra el marcador actual. Esta orden se encuentra disponible si el cursor está en una posición marcada.

Marcadores → Borrar todos los marcadores

  Limpia el listado de los marcadores.

Marcadores → Ir al marcador anterior (Alt+Flecha hacia arriba)

  Mueve el cursor al marcador anterior.

Marcadores → Ir al marcador siguiente (Alt+Flecha abajo)

  Mueve el cursor al siguiente marcador.

### El menú Herramientas

Proporciona un listado de las herramientas instaladas. Activa o desactiva la visualización de cada herramienta. Puede encontrar una descripción detallada de cada herramienta en la sección Herramientas.

### El menú Preferencias

Preferencias → Gestionar perfiles de vistas…

  Abrir un diálogo para crear, editar, borrar y asignar un perfil de vista por omisión.

Capítulo 5. Créditos y licencia
Créditos y licencia

# Capítulo 5. Créditos y licencia

Okteta

Copyright del programa 2006-2012 Friedrich W. H. Kossebau `(kossebau AT kde.org)`

Copyright de la documentación 2008,2010 Friedrich W. H. Kossebau `(kossebau AT kde.org)`, Alex Richardson `(arichardson.kde AT gmail.com)`

Traducido por Ignacio Poggi `(ignaciop.3 AT gmail.com)`

Esta documentación está sujeta a los términos de la Licencia de Documentación Libre GNU.

Este programa está sujeto a los términos de la Licencia Pública General GNU.