Red de conocimiento informático - Material del sitio web - Cómo ampliar las aplicaciones del teclado

Cómo ampliar las aplicaciones del teclado

Cómo expandir el teclado de GarageBand

Primero abra la aplicación GarageBand, haga clic en el signo más en la esquina superior izquierda, luego haga clic en Crear nueva canción para ingresar a la interfaz de selección de instrumentos, deslícese hacia la izquierda y hacia la derecha para cambiar de instrumento, y finalmente seleccione el teclado o Un teclado inteligente será suficiente.

GarageBand es una aplicación de software para crear música. Mediante la edición con GarageBand, puedes crear archivos de música con efectos de sonido como una banda, lo que proporciona a los creadores una forma más sencilla y cómoda de crear música.

Las funciones de GarageBand:

1. Apple GarageBand es un software de producción musical.

2. Puede simular los sonidos de varios instrumentos musicales y producir música DIY.

3. GarageBand tiene la afinación de tono para la mayoría de los instrumentos, y también puedes editar el audio del instrumento que se está reproduciendo.

Puedes ampliar las fuentes del teclado de tu computadora siguiendo estos pasos:

Abre el Panel de control.

Selecciona "Fuente".

Haga clic en Archivo y seleccione Instalar nuevas fuentes.

Busque en su computadora el archivo de fuente para instalar.

Haga clic en Abrir para instalar la fuente seleccionada.

La fuente ahora aparecerá en su lista de fuentes y estará disponible en todas las aplicaciones.

Tenga en cuenta que la instalación de fuentes puede requerir privilegios de administrador.

Cómo simular la entrada del teclado para todas las aplicaciones

1. En Microsoft Windows, el teclado y el mouse son dos fuentes de entrada de usuario estándar, que generalmente se complementan en algunas operaciones superpuestas. . Por supuesto, los ratones se utilizan más en aplicaciones hoy en día que hace 10 años. Incluso en algunas aplicaciones estamos más acostumbrados a usar el mouse, como en juegos, programas de dibujo, programas de música y navegadores web. Sin embargo, podemos prescindir del mouse, pero no podemos quitar el teclado de una PC normal en absoluto.

La forma en que un programa de Windows obtiene la entrada del teclado: la entrada del teclado se pasa al procedimiento de ventana del programa en forma de mensaje. De hecho, el teclado es un ejemplo obvio cuando se aprende por primera vez sobre mensajes: el tipo de información que se supone que los mensajes transmiten a una aplicación.

Windows utiliza 8 mensajes diferentes para entregar diferentes eventos de teclado. Esto puede parecer mucho, pero (como hemos visto) el programa puede ignorar al menos la mitad de estos mensajes sin ningún problema. Y, en la mayoría de los casos, estos mensajes contienen más información del teclado de la que necesita el programa. Parte del manejo del teclado es reconocer qué mensajes son importantes y cuáles no.

2. Conceptos básicos del teclado

Aunque las aplicaciones pueden ingresar información a través del mouse en muchos casos, el teclado sigue siendo un dispositivo de entrada importante e irremplazable en las PC.

Utilice el teclado como dispositivo de entrada. Cada vez que el usuario presiona o suelta una tecla, se genera una interrupción. Esta interrupción activa el controlador de teclado KEYBOARD.DRV para manejar la interrupción del teclado. El programa KEYBOARD.DRV codificará de acuerdo con las diferentes operaciones del usuario, luego llamará al módulo de usuario de Windows USER.EXE para generar un mensaje de teclado y enviará el mensaje a la cola de mensajes para esperar su procesamiento.

1. Códigos de escaneo y códigos virtuales

Los códigos de escaneo corresponden a diferentes teclas del teclado Cuando se presiona o suelta cada tecla, se genera un código de escaneo único como su propia identificación. Los códigos de escaneo dependen del dispositivo de hardware específico, es decir, se pueden generar diferentes códigos de escaneo en diferentes máquinas cuando se presiona o suelta la misma tecla. En los programas se suelen utilizar códigos virtuales definidos por el sistema Windows e independientes de dispositivos específicos. Mientras una pulsación de tecla genera un código de escaneo, el controlador de teclado KEYBOARD.DRV intercepta el código de escaneo de la tecla, luego lo traduce al código virtual correspondiente y luego codifica el código de escaneo y el código virtual juntos para formar un mensaje de teclado. Por lo tanto, el mensaje final del teclado enviado a la cola de mensajes contiene tanto el código de escaneo como el código virtual.

Los códigos virtuales de uso frecuente están en WINDOWS. Tal como se define en el archivo H, los valores, los símbolos constantes y los significados de los códigos virtuales de uso común se muestran en la tabla.

Significado del símbolo constante del valor (hexadecimal)

01VK_LBUTTON botón izquierdo del mouse

02VK_RBUTTON botón derecho del mouse

03VK_CANCEL Tecla de interrupción de pausa

p>

04VK_MBUTTON botón central del ratón

05-07--Indefinido

08 Tecla VK_BACK (Retroceso)

09 Tecla VK_TABTab

0A-0B--Indefinido

0CVK_CLEARTecla Borrar

0DVK_RETURNEtecla Intro

0E-0F--Indefinido

10VK_SHIFTTecla Mayús

11 Tecla VK_CONTROLCtrl

12 VK_MENU Tecla Alt

13 VK_PAUSE Tecla de pausa

14 VK_CAPTIAL Tecla Bloq Mayús

15-19--Sistema de caracteres chinos reservado

1A--Indefinido

1BVK_ESCAPEEsc clave

1C-1F--Sistema de caracteres chinos reservado

20VK_SPACE clave de espacio

21VK_PRIORPageUp tecla

22VK_NEXTPageDown tecla

23VK_ENDTecla Fin

24VK_HOMETecla Inicio

25VK_LEFT←(Flecha izquierda)

26 Tecla VK_UP ↑ (Flecha arriba)

27 Tecla VK_RIGHT→(Flecha derecha)

28 Tecla VK_DOWN↓ (Flecha abajo)

29 VK_SELECT Tecla de selección

2A--OEM reservado

2BVK_EXECUTEEjecutar clave

2CVK_SNAPSHOTImprimirPantalla

2DVK_INSERTInsertar clave

2EVK_DELETEDeliminar clave

2FVK_HELPAyuda clave

30-39VK_0-VK_9Teclas numéricas 0-9

3A-40--Indefinida

41-5AVK_A-VK_ZAteclas alfabéticas A-Z

5B-5F--Undefinido

60-69VK_NUMPAD0-VK_NUMPAD9 teclas numéricas del teclado pequeño 0-9

6AVK_MULTIPLY* tecla (signo de multiplicación)

6BVK_ADD (más signo)

6CVK_SEPAPATOR tecla delimitadora

6EVK_SUBTRACT- tecla (signo menos)

6FVK_DECIMAL tecla (punto decimal)

70-. Tecla 87VK_DIVIDE/(signo de división)

88-8FVK_F1-VK_F24F1-F24 Tecla de función

90VK_NUMBERLOCK Tecla de bloqueo numérico

91VK_SCROLL Tecla de bloqueo de desplazamiento

92- B9--Indefinido

BA-C0--OEM reservado

C1-DA--Indefinido

DB_E4--OEM reservado

p>

E5--Indefinido

E6--OEM reservado

E7-E8--Indefinido

E9-F5--OEM reservado

F6-FE--Indefinido

2. Enfoque de entrada

Al mismo tiempo, puede haber varios programas diferentes ejecutándose en Windows, lo que significa que existen varias ventanas al mismo tiempo. En este momento, el teclado es compartido por varias ventanas, pero solo una ventana puede recibir mensajes de teclado. Esta ventana que puede recibir mensajes de teclado se llama ventana con foco de entrada.

La ventana con foco de entrada debe ser la ventana activa actual, o una ventana secundaria de la ventana activa, y su título y borde se resaltarán para distinguirla de otras ventanas. El ícono en lugar de la ventana también puede tener foco de entrada. En este momento, Windows también envía un mensaje al ícono, pero el formato del mensaje es ligeramente diferente.

El procedimiento de ventana puede hacer que el formulario gane o pierda el foco de entrada enviando mensajes WM_SETFOCUS y WM_KILLFOCUS. Los programas también pueden determinar cuándo un formulario gana o pierde el foco de entrada capturando los mensajes WM_SETFOCUS y WM_KILLFOCUS. El mensaje WM_SETFOCUS indica que la ventana está ganando el foco de entrada y el mensaje WM_KILLFOCUS indica que la ventana está perdiendo el foco de entrada.

3. Mensajes de teclado

Los mensajes de teclado se dividen en mensajes clave del sistema y mensajes clave que no son del sistema. Los mensajes clave del sistema se refieren a mensajes clave generados por la combinación de la tecla de popa y otras teclas. El mensaje WM_SYSKEYDOWN se genera cuando se presiona la tecla del sistema y el mensaje WM_SYSKEYUP se genera cuando se suelta la tecla del sistema. La combinación de teclas formada por la tecla de popa y otras teclas se suele utilizar para seleccionar menús de programas y menús del sistema, o para cambiar entre diferentes programas. Por lo tanto, los mensajes clave del sistema deben ser manejados por Windows. Los programas compilados por los usuarios generalmente no procesan los mensajes clave del sistema, sino que los entregan a la función DefWindowProc para su procesamiento. Si el usuario desea procesar mensajes clave del sistema, debe enviarlos a la función DefWindowProc después de procesar estos mensajes para que el sistema Windows pueda funcionar normalmente.

Algunos mensajes de pulsaciones de teclas se pueden convertir en mensajes de caracteres, como teclas de letras, teclas numéricas, etc. Algunas teclas solo pueden generar mensajes clave pero no mensajes de caracteres, como la tecla Mayús, la tecla Insertar, etc. La función TranslateMessage en el bucle de mensajes puede convertir mensajes de pulsaciones de teclas en mensajes de caracteres. Cuando la función GetMessage captura un mensaje WM_SYSKEYDOWN o un mensaje WM_KEYDOWN, la función TranslateMessage determina si la clave que generó el mensaje se puede convertir en un mensaje de caracteres. Si es posible, el mensaje se convierte en un mensaje de caracteres y luego en el mensaje de caracteres convertido. se envía a través de la función DispatchMessage Enviar a la cola de mensajes. Hay cuatro tipos de mensajes de caracteres***, como se muestra en la tabla.

Caracteres caracteres del sistema caracteres que no son del sistema

Caracteres normales WM_SYSCHARWM_CHAR

Caracteres muertos WM_SYSDEADCHARWM_DEADCHAR

Los caracteres muertos son generados por algunos teclados especiales Debido a las pulsaciones de teclas, Windows generalmente ignora los mensajes generados por caracteres inactivos.

Los mensajes de Windows generalmente se transmiten a la función de procesamiento de mensajes a través de una variable de estructura MSG. Para mensajes de teclado, los campos más importantes de las variables de estructura MSG son el campo lParam y el campo wParam. El campo wParam se utiliza para guardar el código de clave virtual de la clave o el código ASCII del carácter. Para mensajes que no son de caracteres, el campo wParam almacena el código de clave virtual de la clave; para mensajes de caracteres, el campo wParam no almacena el código ASCII del carácter. El campo lParam se utiliza para guardar información adicional generada durante las pulsaciones de teclas. De hecho, una variable lParam de 32 bits se divide en seis partes y registra la siguiente información relacionada: número de repeticiones, código de escaneo OEM, indicador de clave extendida, indicador de clave asociada. anterior Estado de clave de un clic y estado de transición. Los significados de cada bit en el campo lParam se muestran en la tabla.

El significado de los dígitos

El número acumulado de repeticiones de pulsaciones de teclas de 0 a 15

De 16 a 23 códigos de escaneo OEM

Si son 24 es una tecla extendida

25-28 Indefinido

29 Si se usa la tecla asociada y si se presiona la tecla Alt al mismo tiempo.

30El estado de pulsación de tecla anterior, 0 significa que se levantó el estado anterior de la tecla, 1 significa que se presionó el estado anterior

31Estado de conversión

Diferentes secuencias de pulsaciones de teclas producen mensajes diferentes. Por ejemplo, si se presiona y suelta la tecla 1, el proceso de lectura generará tres mensajes como se muestra en la tabla. El mensaje generado al presionar la tecla 1 y el valor de wParam

El valor de la variable wParam del mensaje

WM_KEYDOWN código virtual 1

WM_CHARASCII código "1"

p>

WM_KEYUP código virtual 1

Si presiona la tecla Shift y luego presiona la tecla 1 y la suelta, los mensajes como se muestran en la tabla se generarán en secuencia. El mensaje generado al presionar la tecla Shift y luego presionar la tecla 1 y el valor de wParam

El valor de la variable wParam del mensaje

WM_KEYDOWN código virtual VK_SHIFT

WM_KEYDOWN código virtual VK_1

WM_CHARASCII código "1"

WM_KEYUP código virtual VK_1

WM_KEYUP código virtual VK_SHIF

Ejemplo de aplicación de teclado

A continuación se utiliza un ejemplo de aplicación para ilustrar cómo manejar los mensajes del teclado en la programación real.

#include

#include

//Variables globales

RECTrc; //Registra el área rectangular de la pantalla de desplazamiento

intxChar, yChar; //Coordenadas del punto de entrada de texto

WNDCLASSEXwnd; //Variable de estructura de clase de ventana

charszAppName[]="Programa de monitoreo de mensajes de teclado"; //Nombre de clase de ventana

//Declaración de función

LRESULTCALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);

BOOLMyRegisterClass(HINSTANCEhInstance

);

BOOLInitInstance( HINSTANCEhInstance, intiCmdShow);

//Función: WinMain

//Función: Función de entrada

intWINAPIWinMain(HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTRszCmdLine, intiCmdShow)

{

MSGmsg;

if(!MyRegisterClass(hInstance))

{

returnFALSE ;

}

if(!InitInstance(hInstance, iCmdShow))

{

returnFALSE;

}

while(GetMessage(msg, NULL, 0, 0))

{

TranslateMessage(msg);

DispatchMessage( msg);

p>

}

returnmsg.wParam;

}

//Función: ShowKey

//Función: Implementada en Mostrar información clave en la ventana

voidShowKey(HWNDhwnd, intiType, char*szMessage, WPARAMwParam, LPARAMlParam)

{

staticchar *szFormat[2]={" -14s3dc6u4d5s5s6s6s",

"-14s3dc6u4d5s5s6s6s"};

charszBuffer[80];

HDChdc;

ScrollWindowEx(hwnd, 0, -yChar, rc, rc, NULL, NULL, SW_INVALIDATE);

hdc=GetDC(hwnd);

SelectObject(hdc, GetStockObject( SYSTEM_FIXED_FONT));

TextOut(hdc,

xChar,

rc.bottom-yChar,

szBuffer,

wsprintfszBuffer,

szFormat[iType],

szMessage, //mensaje

wParam, //código de clave virtual

(BYTE)(iType?wParam: ''), //Mostrar valor de carácter

LOWORD(lPar

am), //Número de repeticiones

HIWORD(lParam)0xFF, //Código de escaneo de teclado OEM

//Determine si es una tecla extendida del teclado mejorado

(PSTR)(0x01000000lParam?"Yes":"No"),

//Determine si la tecla ALT se usa al mismo tiempo

(PSTR)( 0x20000000lParam?"Sí":"No" "),

(PSTR)(0x40000000lParam? "Press": "Levantar"),

//Determinar el estado de la pulsación de tecla anterior

(PSTR )(0x80000000lParam? "Press": "Lift"))

//¿Juzgar el estado de la conversión?

);

ReleaseDC(hwnd, hdc) ;?

ValidateRect(hwnd, NULL);?

}

//Función: WndProc

//Función: Procesamiento del mensaje de la ventana principal

LRESULTCALLBACKWndProc(HWNDhwnd, UINTiMsg, WPARAMwParam, LPARAMlParam)

{

staticcharszTop[]="Carácter clave del mensaje número de repetición código de escaneo código de extensión ALT Estado anterior estado de transición";

staticcharszUnd[]="______________________________________________";

//Texto de salida en la ventana como título de información

HDChdc;

p>

PAINTSTRUCTps;

TEXTMETRICtm;

cambiar(iMsg)

{

caseWM_CREATE: //Manejar el mensaje de creación de ventana

hdc=GetDC(hwnd); //Establecer la fuente

SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT)); Recuperar los datos de medición de la fuente actual

GetTextMetrics(hdc, tm);

xChar=tm.tmAveCharWidth //Guardar el ancho promedio de fuente

yChar =tm.tmHeight; //Guardar el alto de la fuente

ReleaseDC(hwnd, hdc);

rc.top=3*yChar/2;

return0 ;

caseWM_SIZE: //Procesando el mensaje de cambio de tamaño de la ventana

//Guarde las coordenadas de la nueva esquina inferior derecha del área de desplazamiento después de cambiar el formulario

rc.right=LOWORD(lParam);

rc.bottom=HIWORD(lParam);

UpdateWindow(hwnd);

return0;

caseWM_PAINT: //Maneja el mensaje de redibujado de la ventana

InvalidateRect(hwnd, NULL, TRUE);

hdc=BeginPaint(hwnd, ps);

SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));

SetBkMode(hdc, TRANSPARENT);

TextOut(hdc, xChar, y

Char/2, szTop, (sizeofszTop)-1);

TextOut(hdc, xChar, yChar/2, szUnd, (sizeofszUnd)-1);

EndPaint(hwnd, ps);

return0;

caseWM_KEYDOWN:

//Procesa el mensaje de que se presiona una determinada tecla del teclado

ShowKey. (hwnd , 0, "WM_KEYDOWN", wParam, lParam);

return0;

caseWM_KEYUP:

//Manejo de que una tecla presionada en el teclado es Mensaje liberado

ShowKey(hwnd, 0, "WM_KEYUP", wParam, lParam

return0

caseWM_CHAR:

/ / Manejar mensajes de caracteres visibles de claves que no son del sistema generadas durante las pulsaciones de teclas

howKey(hwnd, 1, "WM_CHAR", wParam, lParam

return0; >caseWM_DEADCHAR:

//Manejo de mensajes de "caracteres muertos" de claves no pertenecientes al sistema generados durante las pulsaciones de teclas

ShowKey(hwnd, 1, "WM_DEADCHAR", wParam, lParam

return0;

caseWM_SYSKEYDOWN:

//Manejar el mensaje de pulsación de tecla del sistema

ShowKey(hwnd, 0, "WM_SYSKEYDOWN" , wParam, lParam) ;

break;

caseWM_SYSKEYUP:

//Maneja el mensaje de levantamiento de clave del sistema

ShowKey(hwnd, 0, "WM_SYSKEYUP ", wParam, lParam);

break;

caseWM_SYSCHAR: //Procesando mensajes de caracteres visibles de clave del sistema

ShowKey(hwnd, 1 , "WM_SYSCHAR", wParam, lParam);

break;

caseWM_SYSDEADCHAR: //Manejo del mensaje de "carácter muerto" de la clave del sistema

ShowKey(hwnd, 1, "WM_SYSDEADCHAR", wParam, lParam);

break;

caseWM_DESTROY:

//Maneja el mensaje para finalizar la aplicación

PostQuitMessage(0) ;

return0;

}

returnDefWindowProc(hwnd, iMsg, wParam, lParam;

}

p>);

//Función: MyRegisterClass

//Función: Registrar clase de ventana

BOOLMyRegisterClass(HINSTANCEhInstance)

{

wnd. cbSize=sizeof(wnd);

wnd.style=CS_HREDRAW|CS_VREDRAW;

wnd.lpfnWndProc=WndProc;

wnd.cbClsExtra=0

wnd.cbWndExtra=0;

wnd

.hInstance=hInstance;

wnd.hIcon=LoadIcon(NULL, IDI_APPLICATION);?

wnd.hCursor=LoadCursor(NULL, IDC_ARROW);

wnd .hbrBackground=(HBRUSH)

GetStockObject(WHITE_BRUSH);

wnd.lpszMenuName=NULL;

wnd.lpszClassName=szAppName;

wnd.hIconSm=LoadIcon(NULL, IDI_APPLICATION);

returnRegisterClassEx(wnd);

}

//Función: InitInstance

//Función: Crear la ventana principal

BOOLInitInstance(HINSTANCEhInstance, intiCmdShow)

{

HWNDhwnd;

hwnd=CreateWindow( szAppName ,

"Monitor de mensajes de teclado",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, hInstance, NULL

);

if(!hwnd)

{

returnFALSE;

if(!hwnd)

p>

}

ShowWindow(hwnd, iCmdShow);

UpdateWindow(hwnd);

returnTRUE;

}

¿Qué es la extensión del teclado pequeño?

CompactKeyboardExtension (también llamada way. Puede encogerse y expandirse según las necesidades reales del usuario, y puede ajustar de manera flexible la altura y el ángulo para mejorar la postura de escritura de la mano y reducir el dolor de manos y espalda, la fatiga ocular y otros problemas. En comparación con los teclados tradicionales, el teclado pequeño extendido es más compacto, liviano y fácil de transportar, lo que lo hace adecuado para diversos entornos, como la oficina y los juegos. El uso de una pequeña extensión de teclado puede mejorar la eficiencia y la comodidad de la escritura y puede reducir la probabilidad de entradas incorrectas. Es un accesorio informático muy práctico.

Cómo saltar a la aplicación con la extensión de teclado de iOS

En el programa, iOS987 puede abrir la configuración de las siguientes maneras.

NSURL*url=[NSURLURLWithString:@"prefs:root=WIFI"];

if([[UIApplicationsharedApplication]canOpenURL:url]){

[[UIApplicationsharedApplication]openURL: url]; //iOS9 jump

}

Por supuesto, esto también se puede hacer (iOS10987 puede usar este método) (este método también se puede usar en iOS10 Pero no puedes ir a Bluetooth, WIFI y batería, solo puedes ir a la configuración del sistema de tu propia aplicación.

)

NSURL*url=[NSURLURLWithString:UIApplicationOpenSettingsURLString]; if([[UIApplicationsharedApplication]canOpenURL:url]){

[[UIApplicationsharedApplication]openURL:url];

}

El siguiente método es una nueva API en iOS10

NSURL*url=[NSURLURLWithString:@"prefs:root=WIFI"];

if([[UIApplicationsharedApplication]canOpenURL:url]){

[[UIApplicationsharedApplication]openURL:urloptions:@{}completionHandler:nil];

}

Si tiene una aplicación de barra de notificaciones (como pin, Launcher), el widget de la barra de notificaciones de iOS10 puede saltar normalmente como iOS9 Pin y Launcher pueden lograr esta función simplemente configurando el URLScheme. Puede continuar saltando directamente al centro de notificaciones. en el centro de notificaciones. Páginas específicas para la configuración del sistema, como datos móviles, WiFi, ubicación, etc. Simplemente cambie el comienzo de las preferencias originales a Prefs.

Cabe destacar que esta función sólo está disponible en notificaciones