пʼятниця, 6 серпня 2010 р.

Дві клавіатури з різними розкладками


Купив со­бі вчо­ра USB-кла­ві­а­ту­ру. З пор­ту­галь­сь­кою роз­клад­кою. Ду­мав, під­клю­чу і за­бу­ду про пе­ре­ми­кан­ня між роз­клад­ка­ми. Чор­та з два! Ви­яв­ля­є­ть­ся, що Вік­на не при­в'я­зу­ють роз­клад­ки до кон­к­рет­н­о­го при­ст­рою. (Во­ни на­вмис­не так все роб­лять, чи що?) І не­ма ні­якої мож­ли­во­с­ти це змі­ни­ти! Ли­ша­є­ть­ся од­не: ви­зна­ча­ти на хо­ду, на якій кла­ві­а­ту­рі на­тисну­то кноп­ку і пе­ре­ми­ка­ти роз­клад­ки. Піс­ля дов­гих по­шу­ків, я знайшов пр­ограм­ку, яка цим за­й­ма­є­ть­ся. При запус­ку во­на ла­я­ла­ся на те, що не має до­стат­ньо прав. Ви­яви­ло­ся, що це ре­ак­ція на ви­клик ча­рів­ної фун­к­ції SystemParametersInfo. Що во­на ро­бить ли­ши­ло­ся для ме­не за­гад­кою, ос­кіль­ки пе­ре­ми­кан­ня пре­крас­но пра­цює і без неї (при­най­м­ні під мо­єю сім­кою). Пр­ограм­ку до­ве­ло­ся до­пилю­ва­ти, ос­кіль­ки во­на чо­мусь припус­ка­ла, що од­на мо­ва по­вин­на ма­ти тіль­ки од­ну роз­клад­ку. Хоч ціл­ком логіч­но бу­ло б вста­но­ви­ти різ­ні роз­клад­ки для кож­ної фі­зич­ної кла­ві­а­ту­ри за­леж­но від мо­ви. За­ра­зом ви­пра­вив і це
foreach(Layout layout in RightKeyboard.Layout.GetLayouts()) {
   foreach(IntPtr installedLayout in installedLayouts) {
      ushort languageId = unchecked((ushort)installedLayout.ToInt32());
      if(layout.Identifier == languageId) {
         lbLayouts.Items.Add(layout);
      }
   }
}
Ну не­вже там за­мість ма­си­ву важ­ко бу­ло мапу по­с­та­ви­ти?! Те­пер пр­огра­ма (код, exe) ро­зу­міє та­кож, що не тре­ба ви­ки­да­ти стар­ше сло­во. По-хо­ро­шо­му, зви­чай­но, тре­ба бу­ло б до­да­ти пра­ви­ла пе­ре­ми­кан­ня за­леж­но від по­точ­ної роз­клад­ки. Щоб во­на зна­ла, як піс­ля пе­ре­клю­чен­ня мо­ви пе­ре­клю­чи­ти роз­клад­ку на пра­ви­ль­ну кла­ві­а­ту­ру. Та ме­ні лі­нь­ки цим за­й­ма­ти­ся. Ко­ли зов­ніш­ня кла­ві­а­ту­ра під­клю­че­на, мож­на пе­ре­клю­ча­ти­ся між пор­ту­галь­сь­кою і ук­ра­їн­сь­кою ав­то­ма­тич­но — ан­г­лі­йсь­ка не по­тріб­на, бо всі не­об­хід­ні бук­ви є на пор­ту­галь­сь­кій. Без зов­ніш­ньої кла­ві­а­ту­ри — від­клю­ча­є­мо пр­огра­му і пе­ре­ми­ка­є­мо­ся вруч­ну між ук­ра­їн­сь­кою і ан­г­лі­йсь­кою роз­клад­кою, яка сто­їть за про­мов­чан­ням за­мість пор­ту­галь­сь­кої. У ви­пад­ку двох роз­кла­док з дво­ма кла­ві­а­ту­ра­ми — вза­га­лі про­б­лем не­ма.

На­че пра­цює... Го­лов­на про­б­ле­ма — вве­де­ний сим­вол до­хо­дить до міс­ця при­зна­чен­ня ра­ні­ше, ніж від­бу­ва­є­ть­ся пе­ре­ми­кан­ня. Так що тре­ба вчи­ти­ся по­чи­на­ти пи­са­ти з про­бі­лів, бо роз­би­ра­ти­ся хто ко­му які по­відом­лен­ня над­си­лає і як їх пра­ви­ль­но пе­ре­хоплю­ва­ти, я, ма­буть, не бу­ду... Ці­ка­во, що в Notepad++ ці­єї про­б­ле­ми не­ма. Міс­ти­ка...

1 коментар:

Hy-phen-a-tion