Portapapeles (informática) - Clipboard (computing)

El portapapeles es un búfer que algunos sistemas operativos proporcionan para el almacenamiento y la transferencia a corto plazo dentro y entre programas de aplicación. El portapapeles suele ser temporal y sin nombre, y su contenido reside en la RAM de la computadora .

El portapapeles proporciona una interfaz de programación de aplicaciones mediante la cual los programas pueden especificar operaciones de cortar, copiar y pegar . Se deja al programa definir métodos para que el usuario controle estas operaciones, que pueden incluir combinaciones de teclas y selecciones de menú . Cuando se copia o corta un elemento , el portapapeles debe almacenar suficiente información para permitir un resultado sensible sin importar dónde se pegue el elemento. Los programas de aplicación pueden ampliar las funciones del portapapeles que proporciona el sistema operativo. Un administrador del portapapeles puede dar al usuario un control adicional sobre el portapapeles. La semántica específica del portapapeles varía entre los sistemas operativos , también puede variar entre las versiones del mismo sistema y, a veces, los programas y las preferencias del usuario pueden cambiarla.

Windows , Linux y macOS admiten una sola transacción del portapapeles.

Historia

Los portapapeles como búfer para pequeños fragmentos de texto fueron utilizados por primera vez por Pentti Kanerva cuando lo usó para almacenar textos eliminados con el fin de restaurarlos. Como se podía borrar un texto en un lugar y restaurarlo en otro, el término "borrar" no era lo que uno esperaría en este caso. Larry Tesler renombró esto en 1973 como cortar, copiar y pegar y acuñó el término "portapapeles" para este búfer, ya que estas técnicas necesitan un portapapeles para guardar temporalmente los datos copiados o cortados.

Formatos de datos

Las aplicaciones se comunican a través del portapapeles proporcionando representaciones serializadas de un objeto o una promesa (para objetos más grandes). En algunas circunstancias, la transferencia de ciertos formatos de datos común se puede lograr de manera opaca a través del uso de una fábrica de resumen ; por ejemplo, Mac OS X usa una clase llamada NSImage para proporcionar acceso a los datos de imagen almacenados en el portapapeles, aunque el formato real de los datos de imagen que respaldan el objeto está oculto. La aplicación de envío y recepción negocian los formatos que se pueden transferir entre ellos, a menudo con el widget de GUI activo responsable de proporcionar transformaciones de tipo aceptables. La mesa de trabajo permite la transferencia de elementos comunes como URL, colores, imágenes, cadenas, cadenas atribuidas ( texto enriquecido ) y sonidos. El sistema operativo y juego de herramientas GUI pueden proporcionar algunas conversiones comunes, por ejemplo la conversión de texto enriquecido a texto sin formato y viceversa. Los sistemas operativos modernos admiten varios identificadores de tipo para la transferencia de datos, que pueden proporcionar automáticamente asignaciones aceptables entre sistemas de tipo, como entre MIME y el Identificador de tipo uniforme .

La seguridad informática

El secuestro del portapapeles es un exploit en el que el contenido del portapapeles de una persona es reemplazado por datos maliciosos, como un enlace a un sitio web malicioso. Si bien se repararon algunos agujeros de seguridad, JavaScript aún se puede usar para modificar el contenido del portapapeles a través de un ataque denominado 'pastejacking'. Dylan Ayrey, que desarrolló el ataque, creó un sitio web que demuestra cómo se puede usar este exploit para engañar a un usuario para que ejecute comandos que no querían ejecutar.

Ha habido vulnerabilidades en las que las páginas web capturan datos del portapapeles. A principios de 2013, los investigadores expusieron los riesgos derivados de los administradores de contraseñas basados ​​en Android y documentaron cómo cualquier otra aplicación en un dispositivo Android podía acceder a las contraseñas de 21 de las más populares de estas aplicaciones, incluidas aquellas con privilegios de nivel extremadamente bajo. Joe Siegrist señala que se trata de un " problema a nivel del sistema operativo que afecta a todo lo que se ejecuta en Android".

Gestión y extensiones del portapapeles

Glipper , un ejemplo de programa de gestión de portapapeles

Las extensiones del administrador del portapapeles agregan funcionalidad a las funciones integradas del portapapeles de un sistema operativo. Son aplicaciones que permiten al usuario manipular el portapapeles. En plataformas como Linux que usan múltiples kits de herramientas de GUI incompatibles, los administradores de portapapeles se usan a menudo para transferir datos entre aplicaciones que usan diferentes marcos de este tipo.

Cuando un administrador del portapapeles proporciona múltiples transacciones de cortar y pegar, el portapapeles se trata como una pila o un libro de recortes, y los nuevos cortes y copias se colocan en una lista de transacciones recientes. La operación de pegado estándar copia la transacción más reciente, mientras que las pastas especializadas brindan acceso a las otras transacciones almacenadas. Estos administradores generalmente también proporcionan una ventana que muestra el historial de transacciones y permite al usuario seleccionar copias anteriores, editarlas, cambiar su formato e incluso buscar entre ellas.

Dado que la mayoría de los sistemas operativos (por ejemplo, Windows, macOS, Linux, X11, Android, iOS) no guardan el contenido del portapapeles en ningún almacenamiento persistente, cuando un usuario cierra la sesión o reinicia el sistema, el contenido del portapapeles se elimina, una funcionalidad adicional es guardar. el portapapeles persistentemente. Otro ejemplo es hacer que el portapapeles local funcione con aplicaciones en línea al guardar los datos del portapapeles en la ubicación en línea en un evento de copia o corte, haciendo que estos datos estén disponibles para que las aplicaciones en línea puedan pegarlos. Los administradores del portapapeles también pueden servir como herramientas para superar la limitación del software que no admite copiar y pegar (por ejemplo, al iniciar sesión en un servidor remoto de Windows, uno no puede copiar y pegar su nombre de usuario y contraseña).

Portapapeles específicos del sistema operativo

Microsoft Windows y ReactOS

acortar
ReactOS-0.4.13 comando clip 667x434.png
El comando ReactOS clip
Desarrollador (es) Microsoft , colaboradores de ReactOS
Sistema operativo Windows , ReactOS
Escribe Mando
Licencia Windows: Software comercial propietario ReactOS: Licencia pública general GNU
Sitio web docs .microsoft .com / en-es / windows-server / administración / windows-commands / clip

El portapapeles de Microsoft Windows y ReactOS contiene un elemento en varios formatos disponibles.

Cada elemento tiene al menos un formato de portapapeles, pero puede tener diferentes tipos de formato de los mismos datos. Los tres tipos diferentes de formatos posibles son:

  • formatos estándar (por ejemplo, CF_BITMAP o CF_UNICODETEXT),
  • formatos registrados (por ejemplo, CF_HTML)
  • formatos privados para uso interno

Hasta Windows XP inclusive, se puede acceder al portapapeles a través de la aplicación ClipBook Viewer . En las versiones más recientes de Windows, se puede acceder al contenido a través de los administradores del portapapeles .

Los datos se pueden almacenar en el portapapeles de Windows y ReactOS a través de la línea de comando usando el comando clip :

$ # to paste the content of a folder to the clipboard:
$ dir | clip

También se puede acceder al portapapeles a través de PowerShell :

# to paste the content of a directory to the clipboard
Set-Clipboard -Path "C:\directory\"
# to get the content of the clipboard
Get-Clipboard

MacOS de Apple

El portapapeles en Apple macOS contiene un elemento en varios formatos disponibles.

El contenido del portapapeles se puede ver seleccionando el elemento de menú Mostrar portapapeles en el menú Editar del Finder. Los datos sin procesar y los formatos almacenados se pueden ver usando el ClipboardViewer.

Con los siguientes comandos, se puede acceder al portapapeles desde la línea de comandos:

$ # to copy data into the clipboard:
$ echo 'hello world' | pbcopy
$ # to paste from the clipboard:
$ pbpaste
hello world

Sistema de ventanas X

El sistema X Window comúnmente utilizado en los sistemas Unix y Linux proporciona tres portapapeles, que se denominan "PRIMARIO", "SECUNDARIO" y "PORTAPAPELES".

El uso y manejo de varias selecciones no está estandarizado. Sin embargo, la mayoría de los kits de herramientas y entornos de escritorio modernos, como GNOME o KDE , siguen una convención ampliamente aceptada, descrita en la especificación freedesktop.org . Una selección, CLIPBOARD, se usa para la semántica del portapapeles tradicional, con accesos directos idénticos a los de Windows. Otra selección, PRIMARY, es un mecanismo específico de X11. Los datos se "copian" inmediatamente después de resaltarlos y se pegan con el tercer botón (central) del mouse. Estos datos copiados generalmente se separan de la selección del PORTAPAPELES y no cambian su contenido. SECONDARY se planeó como una alternativa a PRIMARY pero solo se usa de manera inconsistente.

Hay dos herramientas de línea de comando (xsel y xclip) que pueden acceder al portapapeles:

$ # to paste standard output to the clipboard using xclip
$ echo text | xclip -in -selection clipboard
$ # to paste standard output to the clipboard using xsel
$ echo text | xsel --clipboard

La principal diferencia con OS X y Windows es que no se almacenan datos en el portapapeles, sino solo la referencia a los datos copiados o cortados. La aplicación reclama la propiedad de la selección CLIPBOARD y comunica su propiedad al X Server. Al pegar estos datos, los datos y sus formatos disponibles se solicitan a la aplicación propietaria de la selección del CLIP.

AmigaOS

El sistema operativo Amiga usa 256 unidades, por lo que uno tiene múltiples portapapeles al mismo tiempo.

Androide

Android proporciona un portapapeles que puede contener hasta un objeto de clip y es accesible en todo el sistema. El texto simple se almacena directamente en el portapapeles; los datos complejos se almacenan por referencia. El objeto de clip tiene uno de estos tres formatos: cadena de texto, objeto URI o intención.

Para interactuar con el portapapeles, una aplicación usa la clase ClipboardManager y llamadas al sistema para cortar, copiar y pegar objetos.

En Android 8.0, el portapapeles aparece por primera vez en la interfaz de usuario: en una situación en la que el usuario se prepara para pegar desde el portapapeles, aparece una opción "Portapapeles" que le da acceso al usuario a muchos objetos copiados o cortados al portapapeles en el pasado. Aparte de eso, y en versiones anteriores, el usuario no tiene acceso al portapapeles excepto en aplicaciones que lo ponen a disposición del usuario.

IOS de Apple

El portapapeles se denomina "tabla de trabajo" en iOS, similar a OS X. Las aplicaciones de este sistema operativo pueden crear tablas de trabajo adicionales, llamadas instancias de la clase UIPasteboard, que pueden ser públicas o privadas. Una instancia puede contener un solo elemento o varios elementos en diferentes formatos.

Los formatos se identifican mediante identificadores de tipo uniforme (UTI).

No se puede acceder a los datos contenidos en la mesa de trabajo a través de la GUI, sino solo desde el sistema y las aplicaciones.

API

Las aplicaciones pueden acceder al portapapeles o sus datos a través de API .

JavaScript

En JavaScript , existe una clase que detecta cambios en los datos del portapapeles de los usuarios (ClipboardEvent) y funciones para alterar el contenido de un portapapeles o leer de él (clipboardData.getData (), clipboardData.setData ()), pero no todos navegador, ya que alterar el portapapeles de un usuario puede representar un problema de seguridad.

Qt

En Qt existe un contenedor para cada plataforma compatible. Proporciona acceso a los portapapeles del sistema de ventanas con el uso de la clase QClipboard. Esta clase facilita el acceso a tipos de datos comunes por funciones. El tipo de datos del elemento almacenado en el portapapeles se indica a través de MIME y los datos MIME también se pueden colocar en el portapapeles con la ayuda de funciones de esta clase.

Ver también

Referencias

Otras lecturas

enlaces externos