Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

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

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

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


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

напиши сам :-)
начать можно с этого http://predskazanie-wunschpunsch.ru/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://predskazanie-wunschpunsch.ru/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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.025 c
14-1104470296
DelphiN!
2004-12-31 08:18
2005.01.23
Как узнать подключена ли в конкретный момент времени USB мышь


10-1080931350
Дуся
2004-04-02 22:42
2005.01.23
Помогите, при вызове метода объекта вылазит exeption:


3-1103659183
Igor_P
2004-12-21 22:59
2005.01.23
SQL-запрос к таблице


1-1105509879
KSergey
2005-01-12 09:04
2005.01.23
Пользовательские сообщения


4-1098777176
Sirus
2004-10-26 11:52
2005.01.23
Как отловить запсук процессов под Win9x/NT/2000/XP