Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Подскажите программу для быстрый ввода символа...   Найти похожие ветки 

 
Кудесник ©   (2005-01-04 17:09) [0]

...вместо последовательности нажатых клавиш. Надо для ввода французкого текста. Типа: при нажатом CTRL последовательность ["e"+ """ + "->"] преобразуется в ["е" с правым ударением]...


 
GuAV ©   (2005-01-04 17:29) [1]

напиши сам :-)
начать можно с этого http://delphimaster.net/view/14-1102616026/


 
Кудесник ©   (2005-01-04 17:35) [2]

- Никогда не рисуй то, что можно срисовать...
- Никогда не срисовывай то, что можно скопировать...
- Никогда не копируй то, что можно вырезать и наклеить... %)))


 
Чеширский_Кот ©   (2005-01-04 17:35) [3]

тут всегда такой ответ: "Напиши сам"

это же сайт программеров


 
Кудесник ©   (2005-01-04 17:39) [4]


> Чеширский_Кот ©   (04.01.05 17:35)
> тут всегда такой ответ: "Напиши сам"
> это же сайт программеров

Вот потому и спрашиваю... зачем начинать со своего трёхколёсного велосипеда, если у кого-то он уже может быть доведён до уровня фриварного маунтинбайка... %)


 
Чеширский_Кот ©   (2005-01-04 17:43) [5]

тут спросишь про ось, тебе скажут: "Ну напиши сам, делов-то на 3 дня"


 
GuAV ©   (2005-01-04 17:44) [6]

У меня есть, только переводящая не последовательность, а один хоткей. Для символов ©, ®, etc. могу сюда выложить.


 
Кудесник ©   (2005-01-04 17:49) [7]

Нужно что-то типа того, как это сделано в MSOffice... только глобальное...


 
Кудесник ©   (2005-01-04 17:51) [8]


> GuAV ©   (04.01.05 17:44)

Пока искал... наткнулся только на программу, которая вставляет смайлики при нажатии F1-12...


 
Кудесник ©   (2005-01-04 17:55) [9]

Ладно... пошёл я пока телик ремонтировать... а то чё-то поработает пару минут и отрубается... постоит несколько минут, снова включается... ерунда какая-то... %(


 
Anatoly Podgoretsky ©   (2005-01-04 18:36) [10]

Установи французкую раскладку, это лучше чем пытаться изобретать вилосипед с квадратными колесами.


 
VMcL ©   (2005-01-04 19:41) [11]

>>Кудесник ©  (04.01.05 17:09)

Ну их, эти программы. Alt-ввод рулит.


 
Кудесник ©   (2005-01-04 21:23) [12]


> [10] Anatoly Podgoretsky ©   (04.01.05 18:36)
> Установи французкую раскладку

К французкой раскладке надо найти англо-франко-русскую клавиатуру? А без неё всё-равно придётся искать буквы перебором или распечатывать их и приклеивать к клавишам... а оно надо? Я лучше нажму на пару клавиш больше... %)


 
Agent13 ©   (2005-01-04 21:27) [13]


> К французкой раскладке надо найти англо-франко-русскую клавиатуру?

А у них там что, у французов, так уж дофига этих букв нестандартных, что на память выучить нельзя?


 
Кудесник ©   (2005-01-04 21:29) [14]


> GuAV ©   (04.01.05 17:44)
> Для символов ©, ®, etc. могу сюда выложить.

Исходник?


 
Кудесник ©   (2005-01-04 21:31) [15]


> [13] Agent13 ©   (04.01.05 21:27)
> А у них там что, у французов, так уж дофига этих букв нестандартных,
> что на память выучить нельзя?

На каждый гласный... такие, не такие и совсем не такие... %)


 
GuAV ©   (2005-01-04 21:39) [16]

Кудесник ©   (04.01.05 21:29) [14]

Сама прога

program Project1;

uses
 Windows,
 Messages,
 ShellAPI;

{$R *.res}

const
 WM_MYTRAY = WM_USER;

procedure WinMain;
var
 Msg: TMsg;
begin
 while GetMessage(Msg, 0, 0, 0) do
 begin
   TranslateMessage(Msg);
   DispatchMessage(Msg);
 end;
end;

procedure SetIcon(hWnd: HWND; Create: Boolean);
const Msg: array[Boolean] of DWORD = (NIM_DELETE, NIM_ADD);
var Icon: TNotifyIconData;
begin
 if Create then
   begin
     Icon.hIcon := LoadImage(hInstance, "MAINICON",
       IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
     Icon.uCallbackMessage := WM_MYTRAY;
     Icon.uFlags := NIF_MESSAGE or NIF_ICON;
   end
 else Icon.uFlags := 0;
 Icon.uID := 0;
 Icon.cbSize := SizeOf(Icon);
 Icon.Wnd := hWnd;
 Shell_NotifyIcon(Msg[Create], @Icon);
end;

function WinInit(ClassName: PChar; WndProc: TFNWndProc): HWND;
var
 WndClass: TWndClass;
begin
 FillChar(WndClass, SizeOf(WndClass), 0);
 with WndClass do
 begin
   lpszClassName := ClassName;
   hInstance := SysInit.HInstance;
   lpfnWndProc := WndProc;
 end;
 if RegisterClass(WndClass) <> 0 then
   Result := CreateWindowEx(WS_EX_TOOLWINDOW, WndClass.lpszClassName, nil,
     WS_POPUP, 0, 0, 0, 0, HWND_DESKTOP, 0, SysInit.HInstance, nil)
 else
   Result:=0;
end;

var
 WM_TRAYCREATE: UINT;

procedure SendChar(wParam: WPARAM);
var h: THandle; i1, i2: DWORD;
begin
 h := GetForegroundWindow;
 i1 := GetCurrentThreadId;
 i2 := GetWindowThreadProcessId(h, nil);
 if not AttachThreadInput(i1, i2, True) then Exit;
 h := GetFocus;
 if h <> 0 then
   PostMessage(h, WM_CHAR, wParam, 0);
 AttachThreadInput(i1, i2, False);
end;

type
 TShortCutRec = record
   modifiers, vk: UINT;
 end;

procedure RegKeys(hWnd: HWND);
var Ch: Char; R: TShortCutRec; F: File of TShortCutRec;
begin
 AssignFile(F, "hot.bin");
 Reset(F);
 try
   for Ch := #0 to #255 do
   begin
     Read(F, R);
     if R.modifiers or R.vk <>0 then
       RegisterHotKey(hWnd, ord(Ch), R.modifiers, R.vk);
   end;
 finally
   CloseFile(F);
 end;
end;

function WindowProc(hWnd: HWND; Msg: UINT;
wParam: WPARAM; lParam: LPARAM): LRESULT; export; stdcall;
begin
 case Msg of
   WM_CREATE:
     begin
       SetIcon(hWnd, True);
       RegKeys(hWnd);
     end;
   WM_HOTKEY:
     begin
       SendChar(wParam);
       Result := 0;
       Exit;
     end;
   WM_MYTRAY:
     case LPARAM of
       WM_RBUTTONUP: DestroyWindow(hWnd);
     end;
   WM_DESTROY:
     begin
       SetIcon(hWnd, False);
       PostQuitMessage(0);
     end;
 else
   if Msg = WM_TRAYCREATE then
     SetIcon(hWnd, True);
 end;
 Result := DefWindowProc(hWnd, Msg, wParam, lParam);
end;

begin
 WM_TRAYCREATE := RegisterWindowMessage("TaskbarCreated");
if WinInit("ProgramForGeroWnd", @WindowProc) <> 0 then
   WinMain;
end.

Прога для настройки сочетаний

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, Grids; //menus

type
 TShortCutRec = record
   modifiers, vk: UINT;
 end;

 TForm1 = class(TForm)
   StringGrid: TStringGrid;
   HotKey1: THotKey;
   Label1: TLabel;
   btnCancel: TButton;
   btnOK: TButton;
   procedure FormCreate(Sender: TObject);
   procedure StringGridSelectCell(Sender: TObject; ACol, ARow: Integer;
     var CanSelect: Boolean);
   procedure HotKey1Change(Sender: TObject);
   procedure btnOKClick(Sender: TObject);
   procedure btnCancelClick(Sender: TObject);
 private
   function GetHotKey(I, J: Integer): TShortCut;
   procedure SetHotKey(I, J: Integer; const Value: TShortCut);
 private
   FHotKeys: array[1..16, 1..16] of TShortCutRec;
   property HotKeys[I, J:Integer]: TShortCut read GetHotKey write SetHotKey;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

const fn = "hot.bin";

procedure TForm1.FormCreate(Sender: TObject);
const dig: array [1..16] of Char = "0123456789ABCDEF";
var I, J: Integer;
begin
 for I:=0 to 255 do
   StringGrid.Cells[I and $F + 1, I shr 4 + 1] := Chr(I);
 for I:=1 to 16 do
 begin
   StringGrid.Cells[I, 0] := dig[I];
   StringGrid.Cells[0, I] := dig[I];
 end;
 if FileExists(fn) then
 with TFileStream.Create(fn, fmOpenRead) do
 try
   ReadBuffer(FHotKeys, SizeOf(FHotKeys));
 finally
   Free;
 end;
end;

function TForm1.GetHotKey(I, J: Integer): TShortCut;
begin
 with FHotKeys[I, J] do
 begin
   Result := vk;
   if modifiers and MOD_SHIFT <> 0 then
     Result := Result or scShift;
   if modifiers and MOD_CONTROL <> 0 then
     Result := Result or scCtrl;
   if modifiers and MOD_ALT <> 0 then
     Result := Result or scAlt;
 end;
end;

procedure TForm1.SetHotKey(I, J: Integer; const Value: TShortCut);
begin
 with FHotKeys[I, J] do
 begin
   vk := Value and $FF;
   modifiers := 0;
   if Value and scShift <> 0 then
     modifiers := modifiers or MOD_SHIFT;
   if Value and scCtrl <> 0 then
     modifiers := modifiers or MOD_CONTROL;
   if Value and scAlt <> 0 then
     modifiers := modifiers or MOD_ALT;
 end;
end;

procedure TForm1.StringGridSelectCell(Sender: TObject; ACol, ARow: Integer;
 var CanSelect: Boolean);
begin
 HotKey1.HotKey := HotKeys[ARow, ACol];
 HotKey1.SetFocus;
end;

procedure TForm1.HotKey1Change(Sender: TObject);
begin
 with StringGrid do
   if (Col <> -1) and (Row <> -1) then
     HotKeys[Row, Col] := Hotkey1.HotKey;
end;

procedure TForm1.btnOKClick(Sender: TObject);
begin
 with TFileStream.Create(fn, fmCreate) do
 try
   WriteBuffer(FHotKeys, SizeOf(FHotKeys));
 finally
   Free;
 end;
 Close;
end;

procedure TForm1.btnCancelClick(Sender: TObject);
begin
 Close;
end;

end.

object Form1: TForm1
 Left = 192
 Top = 107
 Width = 452
 Height = 509
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET


 
GuAV ©   (2005-01-04 21:39) [17]

 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object Label1: TLabel
   Left = 8
   Top = 424
   Width = 32
   Height = 13
   Caption = "Label1"
 end
 object StringGrid: TStringGrid
   Left = 8
   Top = 8
   Width = 430
   Height = 430
   ColCount = 17
   DefaultColWidth = 24
   RowCount = 17
   Font.Charset = RUSSIAN_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = "Times New Roman"
   Font.Style = []
   Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine]
   ParentFont = False
   ScrollBars = ssNone
   TabOrder = 0
   OnSelectCell = StringGridSelectCell
 end
 object HotKey1: THotKey
   Left = 8
   Top = 448
   Width = 121
   Height = 19
   HotKey = 0
   Modifiers = []
   TabOrder = 1
   OnChange = HotKey1Change
 end
 object btnCancel: TButton
   Left = 352
   Top = 448
   Width = 75
   Height = 25
   Caption = "Cancel"
   TabOrder = 2
   OnClick = btnCancelClick
 end
 object btnOK: TButton
   Left = 256
   Top = 448
   Width = 75
   Height = 25
   Caption = "OK"
   TabOrder = 3
   OnClick = btnOKClick
 end
end


 
GuAV ©   (2005-01-04 21:44) [18]

Только боюсь не поможет. Для отлова хитроумной комбинации

> ["e"+ """ + "->"]
имхо хук нужен.


 
Anatoly Podgoretsky ©   (2005-01-04 22:14) [19]

Так запоминать ничего не надо, кроме пары deadkey клавиш.


 
GuAV ©   (2005-01-04 22:58) [20]

Anatoly Podgoretsky ©   (04.01.05 22:14) [19]
Это Вы о чём ?


 
Anatoly Podgoretsky ©   (2005-01-04 23:05) [21]

Это методика ввода символов с акцентами, тильдами, каре и т.д.
Наживается особая клавиша, затем нужный символ. Например для ввода в эстонской раскладке назымается тильда и затем s или z и получается s или z с каре. Это путь реализованый Микрософтом, а может и кем ни будь другим. Запоминать почти ничего и не требуется.


 
Кудесник ©   (2005-01-05 00:22) [22]


> [21] Anatoly Podgoretsky ©   (04.01.05 23:05)

Это работает везде? И в блокноте, и в Миранде, и в the bat"е? Если да, то где это найти?


 
Anatoly Podgoretsky ©   (2005-01-05 01:23) [23]

Это работает ну уровде системном.


 
Кудесник ©   (2005-01-05 01:54) [24]


> [23] Anatoly Podgoretsky ©   (05.01.05 01:23)

Так бы и написали, что надо поставить US-International... ладно хоть слово deadkey прозвучало.. по нему нашёл ответ на другом форуме...

Спасибо %)


 
Кудесник ©   (2005-01-05 01:57) [25]

Для символов западноевропейских языков под Винду поставляется расладка US-International.Теперь ты можешь в *любом приложении* вводить символы типа &aacute;, &egrave;, &ccedil;, &eth;, &ouml;, &ucirc; прямо с клавиатуры. Это интересно... А какие же кнопки для этих символов с диакритикой?

Есть два способа ввода:
1. Для некоторых часто используемых символов - AltGrey+клавиша.
Вот соответствия:
1 - &iexcl;, 5 - ?
Q - &auml;, W - &aring;, E - &eacute;, R - ®, T - &thorn;, Y - &uuml;, U - &uacute;, I - &iacute;, O - &oacute;, P - &ouml;,
A - &aacute;, S - &szlig;, D - &eth; ... L - &oslash;
Z - &aelig;, C - ©, N - &ntilde;, M - µ, , - &ccedil;, / - &iquest;
2. Способ deadkey: после нажатия некоторых клавиш никакого символа не вводится, но такая клавиша модифицирует следующий символ: например (апостроф)+A=&aacute;
Если "мертвая клавиша" –  " (апостроф), то вводятся символы с акутом (&aacute;), " (кавычки) - с диерезисом/умляутом (&auml;), ^ (каре/крышечка) - с циркумфлексом (&acirc;), ` (открывающий апостроф) - с грависом (&agrave;), ~ (тильда) - с тильдой (&atilde;).
А если нужен именно тот символ, что на мертвой клавише, нажмите затем пробел!

(с) http://www.lingvoforum.net/posting.php?mode=quote&p=3085&sid=f8dcb966201baf76502c63ac35310f3e


 
Кудесник ©   (2005-01-05 02:05) [26]

Ещё бы кто подсказал, как в миранде изменить шрифты для отдельных пользоветелей с Кирилицы на Западный... но чтоб это не задело остальных... установлен nConvers, который позволяет сделать настройки, но никак не могу понять для чего вкладка "Contac" с "These are speciffic settings for" - выпадающий список контактов... всё-равно изменение фонтов сказывается на всех...


 
Кудесник ©   (2005-01-05 02:31) [27]

Вынес тему в отдельную ветку
http://delphimaster.net/view/14-1102616026/


 
Anatoly Podgoretsky ©   (2005-01-05 02:46) [28]

Кудесник ©   (05.01.05 01:54) [24]
Ну это общая для западно европейских языков, есть еще 6 чисто французких - я рекомендовал именно одну из них.


 
Кудесник ©   (2005-01-05 02:53) [29]

Не общая самое оно... французкую поставил, там с раскладкой полный бардак получается...



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.61 MB
Время: 0.038 c
1-1105430034
JohnS
2005-01-11 10:53
2005.01.23
Как заглушить вывод ошибки на экран


1-1104859779
Кодер
2005-01-04 20:29
2005.01.23
Мерцание компонент


1-1105102241
If...than
2005-01-07 15:50
2005.01.23
Не сохраняет документы!


3-1103521111
КаПиБаРа
2004-12-20 08:38
2005.01.23
Алгоритм реализации расчетов на основе БД


4-1101905484
Stefan
2004-12-01 15:51
2005.01.23
Ошибка RegisterServiceProcess в NT-подобных системах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский