Attached patch to use almost all the special keys (áâïôú....), and numbers
of keypad

The limit of 1023 characters, you could augmentar, but I do not think it
necessary.

sample video:

http://www.youtube.com/watch?v=CVUTh3nG_SE

Yosepkey.


2010/12/28 Johannes Sixt <j...@kdbg.org>

> On Dienstag, 28. Dezember 2010, Tarot Jean-Sébastien wrote:
> > This plugin work well. I can selecting a font , changing size, scrolling
> > , shadow, and speed.
> > It's very usefull.
> >
> > But i have 2 problems :
> >
> > when i  write accents caractères not "éàè" but the spécial charactères
> > obtain
> > by 2 keys or more like ôöûü the caracters don't print correctly  ??
>
> In your video, you copy-pasted the text with accented characters. Does it
> not
> work with the others? Apart from that, it is a known limitation of
> Cinelerra.
>
> > And when i write "too" text in the box of plugin cinelerra crash. There
> > are a limite!! ??
>
> Yes, there is a limit. It is 1023 characters.
>
>

-- Hannes
>
> _______________________________________________
> Cinelerra mailing list
> Cinelerra@skolelinux.no
> https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra
>
From 0b390ff1c035d23355cd26b28aaba20516d1cc96 Mon Sep 17 00:00:00 2001
From: Jose Aguilar <yosep...@gmail.com>
Date: Sat, 1 Jan 2011 17:47:09 +0100
Subject: [PATCH] add_combination_keys

---
 guicast/bcwindowbase.C |  116 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 108 insertions(+), 8 deletions(-)

diff --git a/guicast/bcwindowbase.C b/guicast/bcwindowbase.C
index 5c76653..328db14 100644
--- a/guicast/bcwindowbase.C
+++ b/guicast/bcwindowbase.C
@@ -76,6 +76,7 @@ BC_ResizeCall::BC_ResizeCall(int w, int h)
 BC_Resources BC_WindowBase::resources;
 
 Window XGroupLeader = 0;
+int key_esp = 0;
 
 BC_WindowBase::BC_WindowBase()
 {
@@ -892,6 +893,98 @@ int BC_WindowBase::dispatch_event()
 
   			switch(keysym)
 			{
+				
+// combination keys
+
+				case XK_dead_grave:       key_esp = 1;       break;
+				case XK_dead_acute:       key_esp = 2;       break;
+				case XK_dead_circumflex:  key_esp = 3;       break;
+				case XK_dead_tilde:       key_esp = 4;       break;
+				case XK_dead_diaeresis:   key_esp = 5;       break;
+				
+				case XK_a:
+					if(key_esp == 0){key_pressed = 0x61;					break;}
+					if(key_esp == 1){key_pressed = 0xE0;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xE1;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xE2;	key_esp = 0;	break;}
+					if(key_esp == 4){key_pressed = 0xE3;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xE4;	key_esp = 0;	break;}
+					
+				case XK_A:
+					if(key_esp == 0){key_pressed = 0x41;					break;}
+					if(key_esp == 1){key_pressed = 0xC0;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xC1;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xC2;	key_esp = 0;	break;}
+					if(key_esp == 4){key_pressed = 0xC3;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xC4;	key_esp = 0;	break;}
+					
+				case XK_e:
+					if(key_esp == 0){key_pressed = 0x65;					break;}
+					if(key_esp == 1){key_pressed = 0xE8;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xE9;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xEA;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xEB;	key_esp = 0;	break;}
+
+				case XK_E:
+					if(key_esp == 0){key_pressed = 0x45;					break;}
+					if(key_esp == 1){key_pressed = 0xC8;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xC9;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xCA;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xCB;	key_esp = 0;	break;}
+					
+				case XK_i:
+					if(key_esp == 0){key_pressed = 0x69;					break;}
+					if(key_esp == 1){key_pressed = 0xEC;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xED;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xEE;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xEF;	key_esp = 0;	break;}
+					
+				case XK_I:
+					if(key_esp == 0){key_pressed = 0x49;					break;}
+					if(key_esp == 1){key_pressed = 0xCC;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xCD;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xCE;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xCF;	key_esp = 0;	break;}
+					
+				case XK_o:
+					if(key_esp == 0){key_pressed = 0x6F;					break;}
+					if(key_esp == 1){key_pressed = 0xF2;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xF3;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xF4;	key_esp = 0;	break;}
+					if(key_esp == 4){key_pressed = 0xF5;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xF6;	key_esp = 0;	break;}
+					
+				case XK_O:
+					if(key_esp == 0){key_pressed = 0x4F;					break;}
+					if(key_esp == 1){key_pressed = 0xD2;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xD3;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xD4;	key_esp = 0;	break;}
+					if(key_esp == 4){key_pressed = 0xD5;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xD6;	key_esp = 0;	break;}
+					
+				case XK_u:
+					if(key_esp == 0){key_pressed = 0x75;					break;}
+					if(key_esp == 1){key_pressed = 0xF9;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xFA;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xFB;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xFC;	key_esp = 0;	break;}
+					
+				case XK_U:
+					if(key_esp == 0){key_pressed = 0x55;					break;}
+					if(key_esp == 1){key_pressed = 0xD9;	key_esp = 0;	break;}
+					if(key_esp == 2){key_pressed = 0xDA;	key_esp = 0;	break;}
+					if(key_esp == 3){key_pressed = 0xDB;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xDC;	key_esp = 0;	break;}
+					
+				case XK_y:
+					if(key_esp == 0){key_pressed = 0x79;					break;}
+					if(key_esp == 2){key_pressed = 0xFD;	key_esp = 0;	break;}
+					if(key_esp == 5){key_pressed = 0xFF;	key_esp = 0;	break;}
+					
+				case XK_Y:
+					if(key_esp == 0){key_pressed = 0x59;					break;}
+					if(key_esp == 2){key_pressed = 0xDD;	key_esp = 0;	break;}
+				
 // block out extra keys
         		case XK_Alt_L:      
         		case XK_Alt_R:      
@@ -924,26 +1017,33 @@ int BC_WindowBase::dispatch_event()
 				case XK_Delete:     key_pressed = DELETE;    break;
 				case XK_Home:       key_pressed = HOME;      break;
 				case XK_End:        key_pressed = END;       break;
+				case XK_Num_Lock:                            break;
 
 // number pad
 				case XK_KP_Enter:       key_pressed = KPENTER;   break;
 				case XK_KP_Add:         key_pressed = KPPLUS;    break;
-				case XK_KP_1:
 				case XK_KP_End:         key_pressed = KP1;       break;
-				case XK_KP_2:
 				case XK_KP_Down:        key_pressed = KP2;       break;
-				case XK_KP_3:
 				case XK_KP_Page_Down:   key_pressed = KP3;       break;
-				case XK_KP_4:
 				case XK_KP_Left:        key_pressed = KP4;       break;
-				case XK_KP_5:
 				case XK_KP_Begin:       key_pressed = KP5;       break;
-				case XK_KP_6:
 				case XK_KP_Right:       key_pressed = KP6;       break;
-				case XK_KP_0:
 				case XK_KP_Insert:      key_pressed = KPINS;     break;
-				case XK_KP_Decimal:
 				case XK_KP_Delete:      key_pressed = KPDEL;     break;
+				case XK_KP_0:			key_pressed = 0x30;		 break;
+				case XK_KP_1:			key_pressed = 0x31;		 break;
+				case XK_KP_2:			key_pressed = 0x32;		 break;				
+				case XK_KP_3:			key_pressed = 0x33;		 break;
+				case XK_KP_4:			key_pressed = 0x34;		 break;
+				case XK_KP_5:			key_pressed = 0x35;		 break;
+				case XK_KP_6:			key_pressed = 0x36;		 break;
+				case XK_KP_7:			key_pressed = 0x37;		 break;
+				case XK_KP_8:			key_pressed = 0x38;		 break;
+				case XK_KP_9:			key_pressed = 0x39; 	 break;
+				case XK_KP_Decimal:     key_pressed = 0x2E;		 break;
+				case XK_KP_Multiply:    key_pressed = 0x2A;      break;
+				case XK_KP_Divide:      key_pressed = 0x2F;      break;
+				
  	    		default:           
 					//key_pressed = keys_return[0]; 
 					key_pressed = keysym & 0xff;
-- 
1.7.0.4

Reply via email to